WebFileServer
Changes
FileServer/.vs/FileServer/v15/.suo 0(+0 -0)
FileServer/BLL/BLL.csproj 4(+4 -0)
FileServer/BLL/packages.config 1(+1 -0)
FileServer/BLL/Services/Mapper/UserMapper.cs 137(+137 -0)
FileServer/Model/Entities/Users/Group.cs 28(+24 -4)
FileServer/Model/Model.csproj 1(+1 -0)
FileServer/SPA/SPA.njsproj 7(+5 -2)
FileServer/SPA/src/React/BaseControl.jsx 41(+41 -0)
FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx 428(+214 -214)
FileServer/SPA/src/Services/UserServices.js 51(+50 -1)
FileServer/SPA/src/Tools/LogTools.js 14(+12 -2)
FileServer/SPA/webpack.config.js 5(+3 -2)
FileServer/Web/Controllers/API/Admin/UserController.cs 157(+56 -101)
FileServer/Web/packages.config 1(+1 -0)
FileServer/Web/Scripts/app_bundle.js 22(+11 -11)
FileServer/Web/Web.config 11(+11 -0)
FileServer/Web/Web.csproj 6(+4 -2)
FileServer/Web/Web.csproj.user 2(+1 -1)
Details
FileServer/.vs/FileServer/v15/.suo 0(+0 -0)
diff --git a/FileServer/.vs/FileServer/v15/.suo b/FileServer/.vs/FileServer/v15/.suo
index 0e5e590..777f922 100644
Binary files a/FileServer/.vs/FileServer/v15/.suo and b/FileServer/.vs/FileServer/v15/.suo differ
FileServer/BLL/BLL.csproj 4(+4 -0)
diff --git a/FileServer/BLL/BLL.csproj b/FileServer/BLL/BLL.csproj
index f7293ff..db6d5c1 100644
--- a/FileServer/BLL/BLL.csproj
+++ b/FileServer/BLL/BLL.csproj
@@ -49,6 +49,9 @@
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Numerics" />
+ <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
+ </Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -60,6 +63,7 @@
<Compile Include="Base\BaseServices.cs" />
<Compile Include="Services\FS\FSExplorerServices.cs" />
<Compile Include="Services\FS\FS_WathcerServices.cs" />
+ <Compile Include="Services\Mapper\UserMapper.cs" />
<Compile Include="Services\System\GarbageUploadServices.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\ConfigurationServices.cs" />
FileServer/BLL/packages.config 1(+1 -0)
diff --git a/FileServer/BLL/packages.config b/FileServer/BLL/packages.config
index d86f135..35df45d 100644
--- a/FileServer/BLL/packages.config
+++ b/FileServer/BLL/packages.config
@@ -3,4 +3,5 @@
<package id="EntityFramework" version="6.2.0" targetFramework="net46" />
<package id="JWT" version="5.2.2" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
+ <package id="System.ValueTuple" version="4.5.0" targetFramework="net46" />
</packages>
\ No newline at end of file
diff --git a/FileServer/BLL/Services/FS/ScanServices.cs b/FileServer/BLL/Services/FS/ScanServices.cs
index 62fa29b..4150278 100644
--- a/FileServer/BLL/Services/FS/ScanServices.cs
+++ b/FileServer/BLL/Services/FS/ScanServices.cs
@@ -131,8 +131,8 @@ namespace BLL.Services.FS
//Если файл найден, то удаляем из списка файловой системы
else
{
- //Проверка что размеры файла совпадают
- var size = new FileInfo(file).Length;
+ //Проверка что размеры файла совпадают
+ var size = elem.Info.Length;
if (elem.Size != size)
{
elem._Size = size;
diff --git a/FileServer/BLL/Services/FS/UploadServices.cs b/FileServer/BLL/Services/FS/UploadServices.cs
index c4b4834..dd8abf3 100644
--- a/FileServer/BLL/Services/FS/UploadServices.cs
+++ b/FileServer/BLL/Services/FS/UploadServices.cs
@@ -19,7 +19,7 @@ namespace BLL.Services.FS
/// </summary>
public class UploadServices : BaseServices
{
- const int ChunkSize = 102400;
+ const int ChunkSize = 1048576;
protected readonly Repo_SFileUpload Repo_SFileUpload;
public UploadServices(UOW UOW) : base(UOW)
FileServer/BLL/Services/Mapper/UserMapper.cs 137(+137 -0)
diff --git a/FileServer/BLL/Services/Mapper/UserMapper.cs b/FileServer/BLL/Services/Mapper/UserMapper.cs
new file mode 100644
index 0000000..21a6d78
--- /dev/null
+++ b/FileServer/BLL/Services/Mapper/UserMapper.cs
@@ -0,0 +1,137 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using System.Data.Entity;
+
+using BLL.Base;
+using Model.Entities.Users;
+using Model.UnitsOfWork;
+using Model.ViewModel;
+
+namespace BLL.Services.Mapper
+{
+ public class UserMapper : BaseServices
+ {
+ public UserMapper(UOW UOW) : base(UOW) { }
+
+
+ public List<GroupInfo> GroupToGroupInfo_ForUsers()
+ {
+ return UOW.Repo_Group.All_NoTrack_List.
+ Where(e => e.Name != EnumDefaultGroups.Анонимные.ToString()).
+ Select(e => new GroupInfo()
+ {
+ ID = e.ID,
+ Name = e.Name
+ }).ToList();
+ }
+ public List<RootDirInfo> RootDirs()
+ {
+ var groups = UOW.Repo_Group.
+ GetGroupWithDirectory(UOW.Repo_Group.All_List);
+
+ return new List<RootDirInfo>(groups.Select(e => new RootDirInfo()
+ {
+ ID = e.ID,
+ Name = e.Name,
+ CanDownload = false,
+ CanOpen = false,
+ CanUpload = false
+ }));
+ }
+
+
+ public List<EditUserModel> UserToEditUser_List()
+ {
+ var users = UOW.Repo_User.All_NoTrack.
+ Include(e => e.Groups).ToList();
+ var groups = UOW.Repo_Group.All_NoTrack_List.
+ Where(e => e.Name != EnumDefaultGroups.Анонимные.ToString());
+
+ return users.Select(e => new EditUserModel()
+ {
+ ID = e.ID,
+ Name = e.Login,
+ Password = "",
+ Changes = EnumChanges.NoChange,
+ Active = e.IsActive,
+ Groups = groups.Select(e2 => new GroupInfo()
+ {
+ ID = e2.ID,
+ Name = e2.Name,
+ EnterInGroup = e.Groups.FirstOrDefault(e3 => e3.ID == e2.ID) != null
+ }).ToList()
+ }).ToList();
+ }
+
+ public List<(EditUserModel Edited, User DBUser)> EditUserToUser_List(List<EditUserModel> editUsers)
+ {
+ List<(EditUserModel Edited, User DBUser)> res = new List<(EditUserModel Edited, User DBUser)>(editUsers.Count());
+ var groups = UOW.Repo_Group.All_List;
+
+ foreach (var elem in editUsers)
+ {
+ var current_groups_id = elem.Groups.
+ Where(g => g.EnterInGroup).
+ Select(g => g.ID);
+
+ User current_user = null;
+
+ switch (elem.Changes)
+ {
+ case EnumChanges.Create:
+ current_user = new User(elem.Name, elem.Password, elem.Active,
+ groups.Where(e => current_groups_id.Contains(e.ID)));
+ break;
+ case EnumChanges.Update:
+ current_user = UOW.Repo_User.All.
+ FirstOrDefault(e => e.ID == elem.ID);
+ current_user.Login = elem.Name;
+ current_user.Password = string.IsNullOrEmpty(elem.Password)
+ ? current_user.Password
+ : elem.Password;
+ current_user.IsActive = elem.Active;
+ current_user.Groups = new List<Group>(groups.
+ Where(e => current_groups_id.Contains(e.ID)));
+ break;
+ case EnumChanges.Delete:
+ current_user = UOW.Repo_User.All.
+ FirstOrDefault(e => e.ID == elem.ID);
+ break;
+ }
+
+ res.Add(new ValueTuple<EditUserModel, User>(elem, current_user));
+ }
+
+ return res;
+ }
+
+
+ public List<GroupInfo> GroupToGroupEditor()
+ {
+ var groups = UOW.Repo_Group.
+ GetGroupWithDirectory(UOW.Repo_Group.All_List);
+
+ return groups.Select(e => new GroupInfo()
+ {
+ ID = e.ID,
+ Name = e.Name,
+ RootDirInfos = e.DirectoryPermissions.Permissions.
+ Select(e2 => new RootDirInfo()
+ {
+ ID = e2.Value.DirectoryID,
+ Name = e2.Value.RootDirectory.Name,
+
+ CanDownload = e2.Value.CanDownload,
+ CanOpen = e2.Value.CanOpen,
+ CanUpload = e2.Value.CanUpload
+ }).ToList()
+ }).ToList();
+ }
+
+
+ }
+}
diff --git a/FileServer/Model/Entities/Files/Repo/Repo_SRootDirectory.cs b/FileServer/Model/Entities/Files/Repo/Repo_SRootDirectory.cs
index 392fb74..e11f919 100644
--- a/FileServer/Model/Entities/Files/Repo/Repo_SRootDirectory.cs
+++ b/FileServer/Model/Entities/Files/Repo/Repo_SRootDirectory.cs
@@ -50,7 +50,7 @@ namespace Model.Entities.Files.Repo
? Permission.Factory_AllPermission(dir)
: Permission.Factory_NoPermission(dir);
- e.DirectoryPermissions.Permissions.Add(dir.ID, permission);
+ e.DirectoryPermissions.AddOrUpdate(permission);
UOW.Repo_Group.Update(e);
}
@@ -101,7 +101,7 @@ namespace Model.Entities.Files.Repo
var groups = UOW.Repo_Group.All_List;
foreach (var e in groups)
{
- e.DirectoryPermissions.Permissions.Remove(id);
+ e.DirectoryPermissions.Remove(id);
UOW.Repo_Group.Update(e);
}
}
@@ -115,7 +115,7 @@ namespace Model.Entities.Files.Repo
var groups = UOW.Repo_Group.All_List;
foreach (var e in groups)
{
- e.DirectoryPermissions.Permissions.Remove(id);
+ e.DirectoryPermissions.Remove(id);
UOW.Repo_Group.Update(e);
}
}
FileServer/Model/Entities/Users/Group.cs 28(+24 -4)
diff --git a/FileServer/Model/Entities/Users/Group.cs b/FileServer/Model/Entities/Users/Group.cs
index 33899bb..fd31f27 100644
--- a/FileServer/Model/Entities/Users/Group.cs
+++ b/FileServer/Model/Entities/Users/Group.cs
@@ -59,7 +59,27 @@ namespace Model.Entities.Users
/// <summary>
/// key - Directory ID
/// </summary>
- public Dictionary<int, Permission> Permissions { private set; get; } = new Dictionary<int, Permission>();
+ Dictionary<int, Permission> _Permissions { set; get; } = new Dictionary<int, Permission>();
+ public IReadOnlyDictionary<int, Permission> Permissions => _Permissions;
+
+
+ public Permission AddOrUpdate(Permission permission)
+ {
+ if (_Permissions.ContainsKey(permission.DirectoryID))
+ _Permissions[permission.DirectoryID] = permission;
+ else
+ _Permissions.Add(permission.DirectoryID, permission);
+
+ return permission;
+ }
+ public Permission Get(int GroupID)
+ {
+ return _Permissions[GroupID];
+ }
+ public void Remove(int GroupID)
+ {
+ _Permissions.Remove(GroupID);
+ }
public string Export()
{
@@ -67,7 +87,7 @@ namespace Model.Entities.Users
using (StringWriter wr = new StringWriter())
{
- formatter.Serialize(wr, Permissions.Values.ToArray());
+ formatter.Serialize(wr, _Permissions.Values.ToArray());
return wr.ToString();
}
}
@@ -78,9 +98,9 @@ namespace Model.Entities.Users
using (StringReader rd = new StringReader(val))
{
var data = (Permission[])formatter.Deserialize(rd);
- Permissions.Clear();
+ _Permissions.Clear();
foreach (var elem in data)
- Permissions.Add(elem.DirectoryID, elem);
+ _Permissions.Add(elem.DirectoryID, elem);
}
}
diff --git a/FileServer/Model/Entities/Users/Repo/Repo_Group.cs b/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
index b64310c..c4ba235 100644
--- a/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
+++ b/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
@@ -54,7 +54,7 @@ namespace Model.Entities.Users
{
UOW.Repo_SRootDirectory.All_NoTrack_List.ForEach(e =>
{
- elem.DirectoryPermissions.Permissions.Add(e.ID, Permission.Factory_NoPermission(e));
+ elem.DirectoryPermissions.AddOrUpdate(Permission.Factory_NoPermission(e));
});
return base.Create(elem);
@@ -83,6 +83,23 @@ namespace Model.Entities.Users
elem.Users.Clear();
}
+
+ public IEnumerable<Group> GetGroupWithDirectory(IEnumerable<Group> groups)
+ {
+ var RootDirs = UOW.Repo_SRootDirectory.All_List;
+
+ groups.ToList().ForEach(e =>
+ {
+ e.DirectoryPermissions.Permissions.Values.ToList().ForEach(e2=>
+ {
+ e2.RootDirectory = RootDirs.
+ FirstOrDefault(e3 => e3.ID == e2.DirectoryID);
+ });
+ });
+
+ return groups;
+ }
+
}
}
FileServer/Model/Model.csproj 1(+1 -0)
diff --git a/FileServer/Model/Model.csproj b/FileServer/Model/Model.csproj
index cc98494..d769124 100644
--- a/FileServer/Model/Model.csproj
+++ b/FileServer/Model/Model.csproj
@@ -71,6 +71,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UnitsOfWork\Context.cs" />
<Compile Include="UnitsOfWork\UOW.cs" />
+ <Compile Include="ViewModel\EditUserModel.cs" />
<Compile Include="ViewModel\Files\Directory.cs" />
<Compile Include="ViewModel\Files\UploadBlob.cs" />
</ItemGroup>
FileServer/SPA/SPA.njsproj 7(+5 -2)
diff --git a/FileServer/SPA/SPA.njsproj b/FileServer/SPA/SPA.njsproj
index 872cac6..0efcbfa 100644
--- a/FileServer/SPA/SPA.njsproj
+++ b/FileServer/SPA/SPA.njsproj
@@ -4,7 +4,7 @@
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<Name>SPA</Name>
<RootNamespace>SPA</RootNamespace>
- <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
+ <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<SaveNodeJsSettingsInProjectFile>True</SaveNodeJsSettingsInProjectFile>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
@@ -35,7 +35,7 @@
<Compile Include="src\index.js" />
<Compile Include="src\React\Controls\Admin\GroupListControl.jsx" />
<Compile Include="src\React\Controls\Admin\UserListControl.jsx" />
- <Compile Include="src\React\Controls\Admin\UserRow.jsx" />
+ <Compile Include="src\React\BaseControl.jsx" />
<Compile Include="src\React\Controls\BootstrapControl.jsx" />
<Compile Include="src\React\Controls\FileExplorer\ExplorerActionsControl.jsx" />
<Compile Include="src\React\Controls\FileExplorer\FileExplorerControl.jsx" />
@@ -47,6 +47,8 @@
<Compile Include="src\React\Pages\FileExplorerPage.jsx" />
<Compile Include="src\React\Pages\UserPage.jsx" />
<Compile Include="src\React\RouteSystem.jsx" />
+ <Compile Include="src\Registers\ControlRegister.js" />
+ <Compile Include="src\Registers\EventRegister.js" />
<Compile Include="src\Services\AuthServices.js" />
<Compile Include="src\Services\FileExplorerServices.js" />
<Compile Include="src\Services\UploadServices.js" />
@@ -68,6 +70,7 @@
<ItemGroup>
<Folder Include="Build\" />
<Folder Include="src\" />
+ <Folder Include="src\Registers\" />
<Folder Include="src\React\" />
<Folder Include="src\React\Controls\" />
<Folder Include="src\React\Controls\Admin\" />
FileServer/SPA/src/React/BaseControl.jsx 41(+41 -0)
diff --git a/FileServer/SPA/src/React/BaseControl.jsx b/FileServer/SPA/src/React/BaseControl.jsx
new file mode 100644
index 0000000..d1c2997
--- /dev/null
+++ b/FileServer/SPA/src/React/BaseControl.jsx
@@ -0,0 +1,41 @@
+
+import React from 'react';
+import autoBind from 'react-autobind';
+
+import ControlRegister from '../Registers/ControlRegister'
+import EventRegister from '../Registers/EventRegister'
+import { ControlLog as Log } from '../Tools/LogTools'
+
+
+export default class BaseControl extends React.Component {
+
+ static controlRegister = ControlRegister.Get();
+ static eventRegister = EventRegister.Get();
+
+ //���������� ������ ����������
+ static GlobalState = {};
+
+
+ constructor(props, name) {
+ super(props);
+ this.Name = name;
+ autoBind(this);
+
+ this.GlobalState = BaseControl.GlobalState;
+ this.EventRegister = BaseControl.eventRegister;
+
+ this.Log = (Msg) => { Log(this, Msg); };
+
+ BaseControl.controlRegister.RegisterControl(this);
+
+ this.Log("start");
+ }
+
+ componentWillUnmount() {
+ //console.log(this.name + " stop " + this.ID);
+
+ BaseControl.controlRegister.UnregisterControl(this);
+ if (this.IsEventListener === true)
+ BaseControl.eventRegister.UnregistListener(this);
+ }
+}
FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx 428(+214 -214)
diff --git a/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx b/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
index 612e747..0217967 100644
--- a/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
+++ b/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
@@ -1,216 +1,216 @@
-import React from 'react';
-import autoBind from 'react-autobind';
-import { ReactTabulator } from 'react-tabulator'
-import { Modal, Button } from 'react-bootstrap'
-
-import Log from '../../../Tools/LogTools'
-import Notification from '../../../Tools/Notification'
-
-import UserServices from '../../../Services/UserServices'
-
-export default class GroupListControl extends React.Component {
-
- constructor(props) {
- super(props);
- autoBind(this);
- Log("GroupListControl", "start");
-
- this.state = {
- Groups: [],
- //ShoGroups: false,
- //Заглушка
- //UserGroups: {
- // ID: -1,
- // Name: "",
- // Password: "",
- // Active: false,
- // Changes: -1,
- // Groups: [{
- // ID: -11,
- // Name: "",
- // EnterInGroup: false
- // }]
- //}
- };
-
- this.userServices = new UserServices();
- //AutodecrementID
- this.ID = -1;
-
- this.columns = [
- { title: "ID", field: "ID" },
- { title: "Name", field: "Name", editor: "input" },
- { title: "Password", field: "Password", editor: "input" },
- { title: "Active", field: "Active", editor: "tick" },
-
- { title: "Groups", formatter: this.ButtonFormatter, align: "center", cellClick: this.OnGroupsClick },
- { title: "Delete", formatter: this.ButtonFormatter, align: "center", cellClick: this.DeleteUserClick },
- ];
-
- this.columns_groups = [
- { title: "ID", field: "ID" },
- { title: "Name", field: "Name" },
- { title: "EnterInGroup", field: "EnterInGroup", editor: "tick" },
- ];
-
- this.DownloadUsers();
- }
-
- DownloadUsers() {
- this.userServices.GetUsersAsync().
- then(function (data) {
- let users = data.Users;
- this.Groups = data.Groups;
- this.setState({ Users: users });
- }.bind(this));
- }
- UploadUsers() {
- this.userServices.SetUsersAsync(this.state.Users).
- then(function (data) {
- if (data.Successe)
- Notification.MesOk(data.ResMessage, "Save");
- else
- Notification.MesEr(data.ResMessage, "Save");
-
- this.DownloadUsers();
- }.bind(this));
- }
-
- //custom formatter definition
- ButtonFormatter(cell, formatterParams, onRendered) { //plain text value
- return "<i class='fa fa-print'><button>Action</button></i>";
- };
-
- OnCellChange(cell) {
- let users = this.state.Users;
-
- let row = cell.getRow();
- let ID = row._row.data.ID;
-
- var data_row = users.filter(e => e.ID === ID)[0];
-
- //Если NoChange то Update
- if (data_row.Changes === 0)
- data_row.Changes = 1;
- }
-
- OnCellChange_Groups(cell) {
-
- //Если NoChange то Update
- if (this.state.UserGroups.Changes === 0)
- this.state.UserGroups.Changes = 1;
- }
-
- UpdateClick() {
- this.DownloadUsers();
- }
-
-
- CreateUserCick() {
- let new_user = {
- ID: this.ID,
- Name: "NewUser" + this.ID,
- Password: "QWERTY",
- Active: true,
- Changes: 2, //Create
-
- Groups: this.Groups.map((e) => {
- return {
- ID: e.ID,
- Name: e.Name,
- EnterInGroup: (e.Name == "Пользователи") ? true : false
- };
- })
- };
- this.ID--;
-
- let users = this.state.Users;
- users.push(new_user);
-
- this.setState({ Users: users });
- }
-
- DeleteUserClick(e, cell) {
- //let table = this.refs.table.table;
- let row = cell.getRow();
- let ID = row._row.data.ID;
-
- let users = this.state.Users;
-
- let user = users.filter(e => e.ID === ID)[0];
-
- if (user.Changes === 2) {
- users.splice(users.findIndex(e => e.ID === ID), 1);
- }
- else {
- user.Changes = 3;
- }
-
- this.setState({ Users: users });
- }
-
- OnGroupsClick(e, cell) {
- let row = cell.getRow();
- let ID = row._row.data.ID;
-
- let users = this.state.Users;
-
- let user = users.filter(e => e.ID === ID)[0];
-
- this.setState({ ShoGroups: true, UserGroups: user });
- }
- OnGroupsClose() {
- this.setState({ ShoGroups: false });
- }
-
- render() {
- return (
- <div>
- <button onClick={this.CreateUserCick}>CreateUser</button>
- <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>
- <button onClick={this.UploadUsers}>SaveChanges</button>
-
-
- <ReactTabulator ref="table"
- data={this.state.Users.filter(e => e.Changes != 3)}
- columns={this.columns}
- tooltips={true}
- layout={"fitData"}
-
- cellEdited={this.OnCellChange}
- />
-
- <Modal ref="Modal"
- show={this.state.ShoGroups}
- onHide={this.OnGroupsClose}
-
- size="lg"
- aria-labelledby="contained-modal-title-vcenter"
- centered
- >
- <Modal.Header closeButton>
- <Modal.Title>User Groups: {this.state.UserGroups.ID + " " + this.state.UserGroups.Name}</Modal.Title>
- </Modal.Header>
- <Modal.Body>
- <ReactTabulator ref="table_UserGroups"
- data={this.state.UserGroups.Groups}
- columns={this.columns_groups}
- tooltips={true}
- layout={"fitData"}
-
- cellEdited={this.OnCellChange_Groups}
- />
- </Modal.Body>
- <Modal.Footer>
- <Button variant="secondary" onClick={this.OnGroupsClose}>
- Close
- </Button>
- </Modal.Footer>
- </Modal>
-
- </div>
- );
- }
-}
+//import React from 'react';
+//import autoBind from 'react-autobind';
+//import { ReactTabulator } from 'react-tabulator'
+//import { Modal, Button } from 'react-bootstrap'
+
+//import Log from '../../../Tools/LogTools'
+//import Notification from '../../../Tools/Notification'
+
+//import UserServices from '../../../Services/UserServices'
+
+//export default class GroupListControl extends React.Component {
+
+// constructor(props) {
+// super(props);
+// autoBind(this);
+// Log("GroupListControl", "start");
+
+// this.state = {
+// Groups: [],
+// //ShoGroups: false,
+// //Заглушка
+// //UserGroups: {
+// // ID: -1,
+// // Name: "",
+// // Password: "",
+// // Active: false,
+// // Changes: -1,
+// // Groups: [{
+// // ID: -11,
+// // Name: "",
+// // EnterInGroup: false
+// // }]
+// //}
+// };
+
+// this.userServices = new UserServices();
+// //AutodecrementID
+// this.ID = -1;
+
+// this.columns = [
+// { title: "ID", field: "ID" },
+// { title: "Name", field: "Name", editor: "input" },
+// { title: "Password", field: "Password", editor: "input" },
+// { title: "Active", field: "Active", editor: "tick" },
+
+// { title: "Groups", formatter: this.ButtonFormatter, align: "center", cellClick: this.OnGroupsClick },
+// { title: "Delete", formatter: this.ButtonFormatter, align: "center", cellClick: this.DeleteUserClick },
+// ];
+
+// this.columns_groups = [
+// { title: "ID", field: "ID" },
+// { title: "Name", field: "Name" },
+// { title: "EnterInGroup", field: "EnterInGroup", editor: "tick" },
+// ];
+
+// this.DownloadUsers();
+// }
+
+// DownloadUsers() {
+// this.userServices.GetUsersAsync().
+// then(function (data) {
+// let users = data.Users;
+// this.Groups = data.Groups;
+// this.setState({ Users: users });
+// }.bind(this));
+// }
+// UploadUsers() {
+// this.userServices.SetUsersAsync(this.state.Users).
+// then(function (data) {
+// if (data.Successe)
+// Notification.MesOk(data.ResMessage, "Save");
+// else
+// Notification.MesEr(data.ResMessage, "Save");
+
+// this.DownloadUsers();
+// }.bind(this));
+// }
+
+// //custom formatter definition
+// ButtonFormatter(cell, formatterParams, onRendered) { //plain text value
+// return "<i class='fa fa-print'><button>Action</button></i>";
+// };
+
+// OnCellChange(cell) {
+// let users = this.state.Users;
+
+// let row = cell.getRow();
+// let ID = row._row.data.ID;
+
+// var data_row = users.filter(e => e.ID === ID)[0];
+
+// //Если NoChange то Update
+// if (data_row.Changes === 0)
+// data_row.Changes = 1;
+// }
+
+// OnCellChange_Groups(cell) {
+
+// //Если NoChange то Update
+// if (this.state.UserGroups.Changes === 0)
+// this.state.UserGroups.Changes = 1;
+// }
+
+// UpdateClick() {
+// this.DownloadUsers();
+// }
+
+
+// CreateUserCick() {
+// let new_user = {
+// ID: this.ID,
+// Name: "NewUser" + this.ID,
+// Password: "QWERTY",
+// Active: true,
+// Changes: 2, //Create
+
+// Groups: this.Groups.map((e) => {
+// return {
+// ID: e.ID,
+// Name: e.Name,
+// EnterInGroup: (e.Name == "Пользователи") ? true : false
+// };
+// })
+// };
+// this.ID--;
+
+// let users = this.state.Users;
+// users.push(new_user);
+
+// this.setState({ Users: users });
+// }
+
+// DeleteUserClick(e, cell) {
+// //let table = this.refs.table.table;
+// let row = cell.getRow();
+// let ID = row._row.data.ID;
+
+// let users = this.state.Users;
+
+// let user = users.filter(e => e.ID === ID)[0];
+
+// if (user.Changes === 2) {
+// users.splice(users.findIndex(e => e.ID === ID), 1);
+// }
+// else {
+// user.Changes = 3;
+// }
+
+// this.setState({ Users: users });
+// }
+
+// OnGroupsClick(e, cell) {
+// let row = cell.getRow();
+// let ID = row._row.data.ID;
+
+// let users = this.state.Users;
+
+// let user = users.filter(e => e.ID === ID)[0];
+
+// this.setState({ ShoGroups: true, UserGroups: user });
+// }
+// OnGroupsClose() {
+// this.setState({ ShoGroups: false });
+// }
+
+// render() {
+// return (
+// <div>
+// <button onClick={this.CreateUserCick}>CreateUser</button>
+// <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>
+// <button onClick={this.UploadUsers}>SaveChanges</button>
+
+
+// <ReactTabulator ref="table"
+// data={this.state.Users.filter(e => e.Changes != 3)}
+// columns={this.columns}
+// tooltips={true}
+// layout={"fitData"}
+
+// cellEdited={this.OnCellChange}
+// />
+
+// <Modal ref="Modal"
+// show={this.state.ShoGroups}
+// onHide={this.OnGroupsClose}
+
+// size="lg"
+// aria-labelledby="contained-modal-title-vcenter"
+// centered
+// >
+// <Modal.Header closeButton>
+// <Modal.Title>User Groups: {this.state.UserGroups.ID + " " + this.state.UserGroups.Name}</Modal.Title>
+// </Modal.Header>
+// <Modal.Body>
+// <ReactTabulator ref="table_UserGroups"
+// data={this.state.UserGroups.Groups}
+// columns={this.columns_groups}
+// tooltips={true}
+// layout={"fitData"}
+
+// cellEdited={this.OnCellChange_Groups}
+// />
+// </Modal.Body>
+// <Modal.Footer>
+// <Button variant="secondary" onClick={this.OnGroupsClose}>
+// Close
+// </Button>
+// </Modal.Footer>
+// </Modal>
+
+// </div>
+// );
+// }
+//}
diff --git a/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx b/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
index 8f0f71f..1c46eac 100644
--- a/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
+++ b/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
@@ -1,42 +1,28 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { ReactTabulator } from 'react-tabulator'
import { Modal, Button } from 'react-bootstrap'
-import Log from '../../../Tools/LogTools'
import Notification from '../../../Tools/Notification'
import UserServices from '../../../Services/UserServices'
-export default class UserListControl extends React.Component {
+import BaseControl from '../../BaseControl.jsx'
+
+export default class UserListControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("UserListControl", "start");
+ super(props, "UserListControl");
+
+ this.userServices = new UserServices();
this.state = {
Users: [],
ShoGroups: false,
//Заглушка
- UserGroups: {
- ID: -1,
- Name: "",
- Password: "",
- Active: false,
- Changes: -1,
- Groups: [{
- ID: -11,
- Name: "",
- EnterInGroup: false
- }]
- }
- };
-
- this.userServices = new UserServices();
- //AutodecrementID
- this.ID = -1;
+ UserGroups: this.userServices.CreateStubUser()
+ };
+
this.columns = [
{ title: "ID", field: "ID" },
@@ -108,22 +94,7 @@ export default class UserListControl extends React.Component {
CreateUserCick() {
- let new_user = {
- ID: this.ID,
- Name: "NewUser" + this.ID,
- Password: "QWERTY",
- Active: true,
- Changes: 2, //Create
-
- Groups: this.Groups.map((e) => {
- return {
- ID: e.ID,
- Name: e.Name,
- EnterInGroup: (e.Name == "Пользователи") ? true : false
- };
- })
- };
- this.ID--;
+ let new_user = this.userServices.CreateUser();
let users = this.state.Users;
users.push(new_user);
diff --git a/FileServer/SPA/src/React/Controls/BootstrapControl.jsx b/FileServer/SPA/src/React/Controls/BootstrapControl.jsx
index b653b74..96d1c4f 100644
--- a/FileServer/SPA/src/React/Controls/BootstrapControl.jsx
+++ b/FileServer/SPA/src/React/Controls/BootstrapControl.jsx
@@ -1,18 +1,13 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { ButtonToolbar, Button } from 'react-bootstrap'
-import Log from '../../Tools/LogTools'
+import BaseControl from '../BaseControl.jsx'
-
-
-export default class BootstrapControl extends React.Component {
+export default class BootstrapControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("BootstrapControl", "start");
+ super(props, "BootstrapControl");
}
diff --git a/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx b/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
index b547c48..2045d26 100644
--- a/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
+++ b/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
@@ -1,44 +1,38 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { Modal, Button } from 'react-bootstrap'
-import { ReactTabulator } from 'react-tabulator'
-import Log from '../../../Tools/LogTools'
import Notification from '../../../Tools/Notification'
import FileExplorerServices from '../../../Services/FileExplorerServices'
+import BaseControl from '../../BaseControl.jsx'
import FileExplorerControl from '../FileExplorer/FileExplorerControl.jsx'
-export default class ExplorerActionsControl extends React.Component {
+export default class ExplorerActionsControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("ExplorerActionsControl", "start")
+ super(props, "ExplorerActionsControl");
- this.state = { ResultMsg: "", MoveWindowsShow: false }
+ this.state = { MoveWindowsShow: false }
this.fileExplorerServices = new FileExplorerServices();
- }
-
-
- GetUserList() {
-
- }
- SaveUserList() {
+ this.GlobalState.MoveExplorer = {
+ ID: this.GlobalState.MainExplorer.ID,
+ ShoSelectColumn: false,
+ ChangeEvent: "OnItemsChange_Move"
+ };
}
OnDownloadClick(sender) {
- let selected = this.props.ParentComponent.refs.
- FileExplorerControl.GetSelectedID();
+ let selected = this.GlobalState.MainExplorer.
+ ExplorerControl.GetSelectedID();
selected.map((e) => {
- Log("ExplorerActionsControl", "OnDownload " + e);
+ this.Log("OnDownload " + e);
this.fileExplorerServices.OpenDownload(e);
});
@@ -46,33 +40,34 @@ export default class ExplorerActionsControl extends React.Component {
OnDeleteClick(sender) {
- let selected = this.props.ParentComponent.refs.
- FileExplorerControl.GetSelectedID();
+ let selected = this.GlobalState.MainExplorer.
+ ExplorerControl.GetSelectedID();
+
let promises = selected.map((e) => {
- Log("ExplorerActionsControl", "OnDelete " + e);
+ this.Log("OnDelete " + e);
return this.fileExplorerServices.DeleteAsync(e);
});
- let Result = "";
-
-
+
Promise.all(promises).then(function (data) {
+ let Result = "";
+
data.map(function (e) {
Result += "Succese: " + e.Successe + " ResultMsg:" + e.ResMessage + " | ";
});
Notification.MesOk(Result, 'Move');
- //this.setState({ ResultMsg: Result });
- this.props.
- ParentComponent.OnItemsChange();
+
+ this.EventRegister.
+ EventAction(this.GlobalState.MainExplorer.ChangeEvent);
}.bind(this));
}
OnMoveClick(sender) {
- let selected = this.props.ParentComponent.refs.
- FileExplorerControl.GetSelectedID();
+ let selected = this.GlobalState.MainExplorer.
+ ExplorerControl.GetSelectedID();
if (selected.length == 0)
return;
@@ -85,14 +80,12 @@ export default class ExplorerActionsControl extends React.Component {
OnCreateDirectoryClick(sender) {
//debugger;
let dirname = this.refs.DirectoryName.value;
- let id = this.props.ParentComponent.GetID();
-
- let url = "/Explorer/CreateDirectory?ParentID=" + id
- + "&Name=" + dirname;
+ let id = this.GlobalState.MainExplorer.ID;
this.fileExplorerServices.CreateDirectoryAsync(dirname, id).
then(function (data) {
- this.props.ParentComponent.OnItemsChange();
+ this.EventRegister.
+ EventAction(this.GlobalState.MainExplorer.ChangeEvent);
Notification.MesOk('Complete', 'CreateDir');
}.bind(this));
@@ -104,30 +97,31 @@ export default class ExplorerActionsControl extends React.Component {
this.setState({ MoveWindowsShow: false });
}
- GetID() {
- if (this.SelectedID != undefined)
- return this.SelectedID;
+ OnMoveWindowClick() {
- return this.props.ParentComponent.GetID();
- }
- SetID(ID) {
- this.SelectedID = ID;
- }
+ if (this.GlobalState.MainExplorer.ID == this.GlobalState.MoveExplorer.ID) {
+ this.setState({ MoveWindowsShow: false });
+ return;
+ }
- OnMoveWindowClick() {
let promises = this.selected.map(function (e) {
- Log("ExplorerActionsControl", "OnMove " + e);
- return this.fileExplorerServices.MoveAsync(e, this.SelectedID);
+ this.Log("OnMove " + e);
+ return this.fileExplorerServices.
+ MoveAsync(e, this.GlobalState.MoveExplorer.ID);
}.bind(this));
- let Result = "";
Promise.all(promises).then(function (data) {
- Result += "Succese: " + e.Successe + " ResultMsg:" + e.ResMessage + " | ";
+ let Result = "";
+
+ data.map(function (e){
+ Result += "Succese: " + e.Successe + " ResultMsg:" + e.ResMessage + " | ";
+ });
+
//this.setState({ ResultMsg: Result });
Notification.MesOk(Result, 'Move');
- this.props.
- ParentComponent.OnItemsChange();
+ this.EventRegister.
+ EventAction(this.GlobalState.MainExplorer.ChangeEvent);
}.bind(this));
this.setState({ MoveWindowsShow: false });
@@ -145,12 +139,6 @@ export default class ExplorerActionsControl extends React.Component {
<button onClick={this.OnCreateDirectoryClick}>CreateDirectory</button>
</p>
-
- {this.state.ResultMsg != ""
- ? <p>{this.state.ResultMsg}</p>
- : ""
- }
-
<table>
<thead>
<tr>
@@ -175,7 +163,7 @@ export default class ExplorerActionsControl extends React.Component {
<Modal.Body>
<FileExplorerControl ref="FileExplorerControl"
ParentComponent={this}
- ShoSelect={false}
+ CurrentDirectoryName={"MoveExplorer"}
/>
</Modal.Body>
<Modal.Footer>
diff --git a/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerControl.jsx b/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerControl.jsx
index 35c4178..234f8e6 100644
--- a/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerControl.jsx
+++ b/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerControl.jsx
@@ -1,53 +1,51 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { Link } from 'react-router-dom';
-import Log from '../../../Tools/LogTools'
import Configuration from '../../../Tools/Configuration'
import ArrayCompare from '../../../Tools/Sort'
-
import FileExplorerServices from '../../../Services/FileExplorerServices'
+import BaseControl from '../../BaseControl.jsx'
import FileExplorerRow from './FileExplorerRow.jsx'
-export default class FileExplorerControl extends React.Component {
+export default class FileExplorerControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("FileExplorerControl", "start");
-
+ super(props, "FileExplorerControl");
- this.state = { data: {}, ShoSelect: this.props.ShoSelect };
+ this.state = {
+ data: {},
+ ShoSelectColumn: this.GetDirectory().ShoSelectColumn
+ };
this.ChildRows = [];
- this.fileExplorerServices = new FileExplorerServices();
+ this.fileExplorerServices = new FileExplorerServices();
+ this.GetDirectory().ExplorerControl = this;
- this.LoadDirectory();
+ this.EventRegister.RegisterListener(this.GetDirectory().ChangeEvent, this);
+ this.Event_OnItemsChange_Main();
}
- //#endregion
-
- //#region Events
-
- OnBackClick(sender) {
- this.props.ParentComponent.SetID(this.state.data.ParentID);
- Log("FileExplorerControl", "OnBackClick " + this.state.data.ParentID);
-
- //this.state = { ID: new_id };
+ GetDirectory() {
+ return this.GlobalState[this.props.CurrentDirectoryName];
+ }
+ Event_OnItemsChange_Main() {
+ this.LoadDirectory();
+ }
+ Event_OnItemsChange_Move() {
this.LoadDirectory();
}
- OnDirectoryClick(id) {
- this.props.ParentComponent.SetID(id);
- Log("FileExplorerControl", "MoveToDirectory " + id);
- //this.state = { ID: new_id };
- this.LoadDirectory();
+ OnBackClick(sender) {
+ this.Log("OnBackClick " + this.state.data.ParentID);
+
+ this.GetDirectory().ID = this.state.data.ParentID;
+ this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);
}
OnSortClick(sender) {
@@ -59,27 +57,28 @@ export default class FileExplorerControl extends React.Component {
this.setState({ data: data });
}
+ OnScanDirClick(sender) {
+ let ID = this.GetDirectory().ID;
+ this.Log("ScanDirectory " + ID);
- //#endregion
+ this.fileExplorerServices.ScanDirectoryAsync(ID).
+ then(function (data) {
+ this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);
+ }.bind(this));
+ }
//Загружает информацию о текущей папке
LoadDirectory() {
- let ID = this.props.ParentComponent.GetID();
- Log("FileExplorerControl", "LoadDirectory " + ID);
+ let ID = this.GetDirectory().ID;
+ this.Log("LoadDirectory " + ID);
this.fileExplorerServices.DirectoryGetItemsAsync(ID)
.then(function (data) {
- this.setState({ data: data, ShoSelect: (this.props.ShoSelect && ID != -1 ? true : false) });
- }.bind(this));
- }
- OnScanDirClick(sender) {
- let ID = this.props.ParentComponent.GetID();
- Log("FileExplorerControl", "ScanDirectory " + ID);
-
- this.fileExplorerServices.ScanDirectoryAsync(ID).
- then(function (data) {
- this.LoadDirectory();
+ this.setState({
+ data: data,
+ ShoSelectColumn: (this.GetDirectory().ShoSelectColumn && ID != -1 ? true : false)
+ });
}.bind(this));
}
@@ -96,11 +95,11 @@ export default class FileExplorerControl extends React.Component {
//Если данные не пусты
if (JSON.stringify(data) !== '{}') {
- Log("FileExplorerControl", "Data");
+ this.Log("Data");
return (
<div>
- {this.props.ParentComponent.GetID() != Configuration.RooDirectoryID
+ {this.GetDirectory().ID != Configuration.RooDirectoryID
?
<p>
<Link to={`/?ID=${data.ParentID}`}>
@@ -132,7 +131,7 @@ export default class FileExplorerControl extends React.Component {
<button property="ID" onClick={this.OnSortClick}>ID</button>
</th>
{
- this.state.ShoSelect
+ this.state.ShoSelectColumn
? <th>Select</th>
: null
}
@@ -155,23 +154,23 @@ export default class FileExplorerControl extends React.Component {
if (row != null) this.ChildRows[i] = row;
else this.ChildRows.splice(i, 1);
}}
- ShoSelect={this.state.ShoSelect}
+ ParentComponent={this}
+ CurrentDirectoryName={this.props.CurrentDirectoryName}
key={i}
- ID={i}
+
+ ShoSelectColumn={this.state.ShoSelectColumn}
data={elem}
- ParentComponent={this}
/>
];
}.bind(this))
}
- </tbody>
-
- </table>
+ </tbody>
+ </table>
</div>
);
}
else {
- Log("FileExplorerControl", "NoData");
+ this.Log("NoData");
return (
<div>
diff --git a/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerRow.jsx b/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerRow.jsx
index 601c934..80acb77 100644
--- a/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerRow.jsx
+++ b/FileServer/SPA/src/React/Controls/FileExplorer/FileExplorerRow.jsx
@@ -1,22 +1,20 @@
import React from 'react';
import { Link } from 'react-router-dom';
-import autoBind from 'react-autobind';
import { Button } from 'react-bootstrap'
-import Log from '../../../Tools/LogTools'
+import BaseControl from '../../BaseControl.jsx'
-export default class FileExplorerRow extends React.Component {
+export default class FileExplorerRow extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("FileExplorerRow " + this.props.ID, "start");
+ super(props, "FileExplorerRow");
- this.state = { ID: this.props.ID, Data: this.props.data, ShoSelect: this.props.ShoSelect };
-
- //Log("FileExplorerRow " + this.props.ID, "GetDataID: " + this.GetDataID());
+ this.state = {
+ Data: this.props.data,
+ ShoSelectColumn: this.props.ShoSelectColumn
+ };
}
componentWillReceiveProps(nextProps) {
@@ -26,21 +24,21 @@ export default class FileExplorerRow extends React.Component {
this.refs.Select.checked = false;
this.setState({
- ID: this.props.ID,
Data: this.props.data,
- ShoSelect: this.props.ShoSelect
+ ShoSelectColumn: this.props.ShoSelectColumn
});
//Log("FileExplorerRow " + this.props.ID, "GetDataID: " + this.GetDataID());
}
- GetDate() {
- return this.state.Data;
+ GetDirectory() {
+ return this.GlobalState[this.props.CurrentDirectoryName];
}
- GetRowID() {
- return this.state.ID;
+ GetData() {
+ return this.state.Data;
}
+
GetDataID() {
return this.state.Data.ID;
}
@@ -53,7 +51,8 @@ export default class FileExplorerRow extends React.Component {
OnDirectoryClick() {
- this.props.ParentComponent.OnDirectoryClick(this.GetDataID());
+ this.GetDirectory().ID = this.GetDataID();
+ this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);
}
render() {
@@ -63,7 +62,7 @@ export default class FileExplorerRow extends React.Component {
return (
<tr>
<td>{elem.ID}</td>
- {state.ShoSelect
+ {state.ShoSelectColumn
?
<td>
<input ref="Select" type="checkbox" />
diff --git a/FileServer/SPA/src/React/Controls/FileExplorer/UploaderControl.jsx b/FileServer/SPA/src/React/Controls/FileExplorer/UploaderControl.jsx
index 4b21b78..6da0023 100644
--- a/FileServer/SPA/src/React/Controls/FileExplorer/UploaderControl.jsx
+++ b/FileServer/SPA/src/React/Controls/FileExplorer/UploaderControl.jsx
@@ -1,19 +1,17 @@
import React from 'react';
-import autoBind from 'react-autobind';
-import Log from '../../../Tools/LogTools'
import Notification from '../../../Tools/Notification'
import UploadServices from '../../../Services/UploadServices'
+import BaseControl from '../../BaseControl.jsx'
-export default class UploaderControl extends React.Component {
+
+export default class UploaderControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("UploaderControl", "start");
+ super(props, "UploaderControl");
//state 0 - выбор файла
//state 1 - загрузка
@@ -38,11 +36,14 @@ export default class UploaderControl extends React.Component {
this.setState({ ButtonUploadEnable: false, _state: 1, FileInfo: { name: file.name, size: file.size } });
- this.uploadServices.UploadFileAsync(file, this.props.ParentComponent.GetID()).then(function () {
+ this.uploadServices.UploadFileAsync(
+ file,
+ this.GlobalState.MainExplorer.ID
+ ).then(function () {
Notification.MesOk('Complete','Upload');
this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: "" });
- this.props.ParentComponent.OnItemsChange();
+ this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent);
input.value = "";
}.bind(this));
}
diff --git a/FileServer/SPA/src/React/Controls/MenuControl.jsx b/FileServer/SPA/src/React/Controls/MenuControl.jsx
index 1896c00..191a084 100644
--- a/FileServer/SPA/src/React/Controls/MenuControl.jsx
+++ b/FileServer/SPA/src/React/Controls/MenuControl.jsx
@@ -1,25 +1,24 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { Link } from 'react-router-dom';
-import Log from '../../Tools/LogTools'
-
import AuthServices from '../../Services/AuthServices'
+import BaseControl from '../BaseControl.jsx'
+
-export default class MenuControl extends React.Component {
+export default class MenuControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("MenuControl", "start");
+ super(props, "MenuControl");
//this.state = { counter: 0 };
this.authServices = new AuthServices();
+
+ this.EventRegister.RegisterListener("OnAuthChange", this);
}
- OnAuthChange() {
+ Event_OnAuthChange() {
this.forceUpdate();
}
diff --git a/FileServer/SPA/src/React/Controls/UserControl.jsx b/FileServer/SPA/src/React/Controls/UserControl.jsx
index 9c45227..ee33177 100644
--- a/FileServer/SPA/src/React/Controls/UserControl.jsx
+++ b/FileServer/SPA/src/React/Controls/UserControl.jsx
@@ -1,20 +1,19 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { Form } from 'react-bootstrap'
-import Log from '../../Tools/LogTools'
import Notification from '../../Tools/Notification'
import AuthServices from '../../Services/AuthServices'
+import BaseControl from '../BaseControl.jsx'
-export default class UserControl extends React.Component {
+
+
+export default class UserControl extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("UserControl", "start");
+ super(props, "UserControl");
this.state = { UserName: "" };//, AuthResult: "" };
this.authServices = new AuthServices();
@@ -24,7 +23,9 @@ export default class UserControl extends React.Component {
if (data.Successe) {
this.setState({ UserName: data.UserName });// AuthResult: "" });
- this.props.ParentComponent.OnAuthChange();
+ this.EventRegister.EventAction("OnAuthChange");
+ this.EventRegister.EventAction("OnItemsChange_Main");
+ this.EventRegister.EventAction("OnItemsChange_Move");
}
else {
this.setState({ UserName: "" });//, AuthResult: data.ResMsg });
@@ -44,8 +45,9 @@ export default class UserControl extends React.Component {
if (data.Successe) {
this.setState({ UserName: data.UserName });//, AuthResult: "" });
-
- this.props.ParentComponent.OnAuthChange();
+ this.EventRegister.EventAction("OnAuthChange");
+ this.EventRegister.EventAction("OnItemsChange_Main");
+ this.EventRegister.EventAction("OnItemsChange_Move");
}
else {
this.setState({ UserName: "" });//, AuthResult: data.ResMsg });
@@ -60,7 +62,9 @@ export default class UserControl extends React.Component {
this.authServices.Logout();
this.setState({ UserName: "" });//, AuthResult: "" });
- this.props.ParentComponent.OnAuthChange();
+ this.EventRegister.EventAction("OnAuthChange");
+ this.EventRegister.EventAction("OnItemsChange_Main");
+ this.EventRegister.EventAction("OnItemsChange_Move");
}
diff --git a/FileServer/SPA/src/React/Pages/AdministratorPage.jsx b/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
index 2a7c385..c8bcd91 100644
--- a/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
+++ b/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
@@ -1,31 +1,25 @@
import React from 'react';
-import autoBind from 'react-autobind';
import { Nav } from 'react-bootstrap'
import Log from '../../Tools/LogTools'
import AuthServices from '../../Services/AuthServices'
+import BaseControl from '../BaseControl.jsx'
import MenuControl from '../Controls/MenuControl.jsx'
import UserListControl from '../Controls/Admin/UserListControl.jsx'
-export default class AdministratorPage extends React.Component {
+export default class AdministratorPage extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("AdministratorPage", "start");
+ super(props, "AdministratorPage");
this.state = { ActiveWindows: 0 };
this.authServices = new AuthServices();
}
- OnAuthChange() {
- this.refs.MenuControl.OnAuthChange();
- }
-
OnUsersClick() {
this.setState({ ActiveWindows: 0 });
}
diff --git a/FileServer/SPA/src/React/Pages/FileExplorerPage.jsx b/FileServer/SPA/src/React/Pages/FileExplorerPage.jsx
index caf215e..2ad4caf 100644
--- a/FileServer/SPA/src/React/Pages/FileExplorerPage.jsx
+++ b/FileServer/SPA/src/React/Pages/FileExplorerPage.jsx
@@ -1,10 +1,9 @@
import React from 'react';
-import autoBind from 'react-autobind';
-import Log from '../../Tools/LogTools'
import Configuration from '../../Tools/Configuration'
+import BaseControl from '../BaseControl.jsx'
import MenuControl from '../Controls/MenuControl.jsx'
import UserControl from '../Controls/UserControl.jsx'
import FileExplorerControl from '../Controls/FileExplorer/FileExplorerControl.jsx'
@@ -12,54 +11,43 @@ import ExplorerActionsControl from '../Controls/FileExplorer/ExplorerActionsCont
import UploaderControl from '../Controls/FileExplorer/UploaderControl.jsx'
import BootstrapControl from '../Controls/BootstrapControl.jsx'
-
-export default class FileExplorerPage extends React.Component {
+export default class FileExplorerPage extends BaseControl {
constructor(props) {
- super(props);
- autoBind(this);
- Log("FileExplorerPage", "start");
-
- //this.state = { counter: 0 };
+ super(props, "FileExplorerPage");
//Получить ID из url
- var Url_ID = new URL(window.location.href).
+ var url_ID = new URL(window.location.href).
searchParams.get("ID");
- if (Url_ID != null)
- this.SetID(Url_ID);
- //if (this.props.match != undefined
- // && this.props.match.params != undefined
- // && this.props.match.params.ID != undefined)
- // this.SetID(this.props.match.params.ID);
- //Получить id от родительского компонента
+ if (url_ID != null)
+ this.GlobalState.MainExplorer = {
+ ID: url_ID,
+ ShoSelectColumn: true,
+ ChangeEvent: "OnItemsChange_Main"
+ };
else
- this.SetID(-1);
- }
-
-
- OnAuthChange() {
- this.OnItemsChange();
- this.refs.MenuControl.OnAuthChange();
- }
- OnItemsChange() {
- this.refs.FileExplorerControl.
- LoadDirectory();
- }
+ this.GlobalState.MainExplorer = {
+ ID: -1,
+ ShoSelectColumn: true,
+ ChangeEvent: "OnItemsChange_Main"
+ };
- SetID(val) {
- this.CurrentID = val;
- Log("FileExplorerPage", this.CurrentID);
+ //this.EventRegister.EventAction("OnItemsChange");
}
- GetID() {
- return this.CurrentID;
+ OnRegistersClick() {
+ let Global = this.GlobalState;
+ let Controls = BaseControl.controlRegister;
+ let Events = this.EventRegister;
+ debugger;
}
-
render() {
return (
<div>
+ <button onClick={this.OnRegistersClick}>Registers</button>
+
<hr />
<MenuControl ref="MenuControl"
ParentComponent={this}
@@ -72,12 +60,14 @@ export default class FileExplorerPage extends React.Component {
<hr />
<FileExplorerControl ref="FileExplorerControl"
ParentComponent={this}
- ShoSelect={true}
+ //Параметры для того, чтобы можно было содержать
+ //несколько элементов данного типа с разными дирректориями
+ CurrentDirectoryName={"MainExplorer"}
/>
<hr />
- {this.GetID() != Configuration.RooDirectoryID
+ {(this.GlobalState.MainExplorer.ID != Configuration.RooDirectoryID)
?
- <div>
+ <div>
<ExplorerActionsControl ref="ExplorerActionsControl"
ParentComponent={this}
/>
@@ -87,8 +77,9 @@ export default class FileExplorerPage extends React.Component {
/>
<hr />
</div>
- : ""
+ : null
}
+ <hr />
<BootstrapControl />
<hr />
diff --git a/FileServer/SPA/src/React/RouteSystem.jsx b/FileServer/SPA/src/React/RouteSystem.jsx
index a563d8f..44ad940 100644
--- a/FileServer/SPA/src/React/RouteSystem.jsx
+++ b/FileServer/SPA/src/React/RouteSystem.jsx
@@ -3,18 +3,15 @@ import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
-import Log from '../Tools/LogTools'
-
+import BaseControl from './BaseControl.jsx'
import FileExplorerPage from './Pages/FileExplorerPage.jsx'
import AdministratorPage from './Pages/AdministratorPage.jsx'
-export default class RouteSystem extends React.Component {
+export default class RouteSystem extends BaseControl {
constructor(props) {
- super(props);
- Log("RouteSystem", "start");
-
+ super(props, "RouteSystem");
}
render() {
diff --git a/FileServer/SPA/src/Registers/ControlRegister.js b/FileServer/SPA/src/Registers/ControlRegister.js
new file mode 100644
index 0000000..79b89e8
--- /dev/null
+++ b/FileServer/SPA/src/Registers/ControlRegister.js
@@ -0,0 +1,38 @@
+
+
+//��������� ��� ��������� ����������
+//���������� ���������� ID
+export default class ControlRegister {
+
+
+ static _Single;
+
+ static Get() {
+ if (this._Single == null || this._Single == undefined) {
+ this._Single = new ControlRegister();
+ }
+
+ return this._Single;
+ }
+
+
+ constructor() {
+ this.ID = 0;
+ this.Controls = [];
+ }
+
+ //���������������� �������
+ RegisterControl(control) {
+ control.ID = this.ID;
+ this.ID++;
+
+ this.Controls.push(control);
+ }
+
+ //������� ������������ (������ �� ��������)
+ UnregisterControl(control) {
+ this.Controls.splice(this.Controls.
+ findIndex(e => e.ID === control.ID), 1);
+ }
+
+}
\ No newline at end of file
diff --git a/FileServer/SPA/src/Registers/EventRegister.js b/FileServer/SPA/src/Registers/EventRegister.js
new file mode 100644
index 0000000..d87b434
--- /dev/null
+++ b/FileServer/SPA/src/Registers/EventRegister.js
@@ -0,0 +1,65 @@
+
+
+export default class EventRegister {
+
+ static _Single;
+
+ static Get() {
+ if (this._Single == null || this._Single == undefined) {
+ this._Single = new EventRegister();
+ }
+
+ return this._Single;
+ }
+
+ constructor() {
+
+ this.Events = [
+ "OnAuthChange",
+ "OnItemsChange_Main",
+ "OnItemsChange_Move"
+ ];
+ this.Listeners = {};
+
+ this.Events.map(function (event) {
+ this.Listeners[event] = [];
+ }.bind(this));
+ }
+
+
+ RegisterListener(Event, control) {
+ if (!this.Events.includes(Event))
+ throw "Event not found";
+
+ if (control["Event_" + Event] == undefined)
+ throw "Control not implement event function";
+
+ this.Listeners[Event].push(control);
+
+ //���� ������������ � BaseControl,
+ //����� ��� ����������� ��������
+ //������������ �������� �� EventRegister listeners
+ control.IsEventListener = true;
+ }
+
+ UnregistListener(control) {
+
+ Object.keys(this.Listeners).map(function (e) {
+ let pos = this.Listeners[e].findIndex(e2 => e2.ID === control.ID);
+ if (pos != -1) {
+ this.Listeners[e].splice(pos, 1);
+ }
+ }.bind(this));
+ }
+
+ EventAction(Event, params) {
+
+ if (!this.Events.includes(Event))
+ throw "Event not found";
+
+ this.Listeners[Event].map(function (e) {
+ e["Event_" + Event](params);
+ });
+ }
+
+}
\ No newline at end of file
FileServer/SPA/src/Services/UserServices.js 51(+50 -1)
diff --git a/FileServer/SPA/src/Services/UserServices.js b/FileServer/SPA/src/Services/UserServices.js
index 92cf68d..6f7e4aa 100644
--- a/FileServer/SPA/src/Services/UserServices.js
+++ b/FileServer/SPA/src/Services/UserServices.js
@@ -7,14 +7,21 @@ export default class UserServices {
constructor() {
this.URL_GetUsers = "api/User/GetUserList";
this.URL_SetUsers = "api/User/SetUserList";
+
+ //AutodecrementID
+ this.ID = 0;
}
async GetUsersAsync() {
return await ApiQuery(this.URL_GetUsers, "Post")
.then(function (data) {
+ if (data.Successe) {
+ this.Groups = data.Groups;
+ }
+
return data;
- });
+ }.bind(this));
}
async SetUsersAsync(users) {
@@ -25,4 +32,46 @@ export default class UserServices {
}.bind(this));
}
+
+
+ CreateUser() {
+ this.ID--;
+
+ return {
+ ID: this.ID,
+ Name: "NewUser" + this.ID,
+ Password: "QWERTY",
+ Active: true,
+ Changes: 2, //Create
+
+ Groups: this.Groups.map((e) => {
+ return {
+ ID: e.ID,
+ Name: e.Name,
+ EnterInGroup: (e.Name == "Пользователи") ? true : false
+ };
+ })
+ };
+ }
+ CreateStubUser() {
+ return {
+ Users: [],
+ ShoGroups: false,
+ //Заглушка
+ UserGroups: {
+ ID: -1,
+ Name: "",
+ Password: "",
+ Active: false,
+ Changes: -1,
+ Groups: [{
+ ID: -11,
+ Name: "",
+ EnterInGroup: false
+ }]
+ }
+ }
+
+
+ }
}
diff --git a/FileServer/SPA/src/Tools/Configuration.js b/FileServer/SPA/src/Tools/Configuration.js
index a773573..977e62e 100644
--- a/FileServer/SPA/src/Tools/Configuration.js
+++ b/FileServer/SPA/src/Tools/Configuration.js
@@ -3,5 +3,5 @@
//Общие конфигурации
export default class Configuration {
static RooDirectoryID = -1;
- static upload_chunk_size = 102400;
+ static upload_chunk_size = 1048576;
}
\ No newline at end of file
FileServer/SPA/src/Tools/LogTools.js 14(+12 -2)
diff --git a/FileServer/SPA/src/Tools/LogTools.js b/FileServer/SPA/src/Tools/LogTools.js
index 704aa29..badd2c2 100644
--- a/FileServer/SPA/src/Tools/LogTools.js
+++ b/FileServer/SPA/src/Tools/LogTools.js
@@ -1,9 +1,19 @@
//Обертка для лога в приложении
-export default function Log(sender, message) {
+function Log(sender, message) {
if (sender === null || sender === undefined)
throw "LogTools: sender not set";
console.log(sender + ": " + message);
-}
\ No newline at end of file
+}
+
+//sender as BaseControl
+function ControlLog(sender, message) {
+ if (sender === null || sender === undefined)
+ throw "LogTools: sender not set";
+
+ console.log(sender.Name+"_"+sender.ID + ": " + message);
+}
+
+export {Log as default, ControlLog}
\ No newline at end of file
FileServer/SPA/webpack.config.js 5(+3 -2)
diff --git a/FileServer/SPA/webpack.config.js b/FileServer/SPA/webpack.config.js
index aa96d11..a8ebd7a 100644
--- a/FileServer/SPA/webpack.config.js
+++ b/FileServer/SPA/webpack.config.js
@@ -51,6 +51,8 @@ module.exports = {
//��������� dev �������
devServer: {
+
+ port: 8081,
//�������� ������ � �������
overlay: true,
//��������� ��������
@@ -60,8 +62,7 @@ module.exports = {
index: 'index.html'
},
- proxy: {
- //historyApiFallback: true,
+ proxy: {
//����� WevAPI
'/api/*': {
FileServer/Web/packages.config 1(+1 -0)
diff --git a/FileServer/Web/packages.config b/FileServer/Web/packages.config
index a292ad0..3075473 100644
--- a/FileServer/Web/packages.config
+++ b/FileServer/Web/packages.config
@@ -16,5 +16,6 @@
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net46" />
<package id="Quartz" version="3.0.7" targetFramework="net46" />
<package id="System.Diagnostics.DiagnosticSource" version="4.5.1" targetFramework="net46" />
+ <package id="System.ValueTuple" version="4.5.0" targetFramework="net46" />
<package id="WebGrease" version="1.6.0" targetFramework="net46" />
</packages>
\ No newline at end of file
FileServer/Web/Scripts/app_bundle.js 22(+11 -11)
diff --git a/FileServer/Web/Scripts/app_bundle.js b/FileServer/Web/Scripts/app_bundle.js
index 22941e0..d623cfc 100644
--- a/FileServer/Web/Scripts/app_bundle.js
+++ b/FileServer/Web/Scripts/app_bundle.js
@@ -9,12 +9,12 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var o=arguments[t];if(o){var i=typeof o;if("string"===i||"number"===i)e.push(o);else if(Array.isArray(o)&&o.length){var a=r.apply(null,o);a&&e.push(a)}else if("object"===i)for(var s in o)n.call(o,s)&&o[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(o=function(){return r}.apply(t,[]))||(e.exports=o)}()},function(e,t,n){e.exports=n(49)},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",function(){return o})},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(45)},function(e,t,n){"use strict";var o=function(){};e.exports=o},function(e,t,n){"use strict";e.exports=function(e,t,n,o,r,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,o,r,i,a,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=!("undefined"==typeof window||!window.document||!window.document.createElement);t.default=o,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,i="#"===t[0],a="."===t[0],s=i||a?t.slice(1):t;if(o.test(s))return i?(e=e.getElementById?e:document,(n=e.getElementById(s))?[n]:[]):e.getElementsByClassName&&a?r(e.getElementsByClassName(s)):r(e.getElementsByTagName(t));return r(e.querySelectorAll(t))};var o=/^[\w-]*$/,r=Function.prototype.bind.call(Function.prototype.call,[].slice);e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e&&e.ownerDocument||document},e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){if((!r&&0!==r||e)&&i.default){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),r=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return r};var r,i=o(n(11));e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t,n){var o="",c="",d=t;if("string"==typeof t){if(void 0===n)return e.style[(0,r.default)(t)]||(0,a.default)(e).getPropertyValue((0,i.default)(t));(d={})[t]=n}Object.keys(d).forEach(function(t){var n=d[t];n||0===n?(0,u.default)(t)?c+=t+"("+n+") ":o+=(0,i.default)(t)+": "+n+";":(0,s.default)(e,(0,i.default)(t))}),c&&(o+=l.transform+": "+c+";");e.style.cssText+=";"+o};var r=o(n(37)),i=o(n(73)),a=o(n(75)),s=o(n(76)),l=n(38),u=o(n(77));e.exports=t.default},,function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(8);t.clone=function(e){return JSON.parse(JSON.stringify(e))},t.isSameArray=function(e,t){var n=e.length;if(n!==t.length)return!1;for(;n--;)if(e[n]!==t[n])return!1;return!0},t.reactFormatter=function(e){return function(t,n,i){return i(function(){var n=t.getElement(),i=o.cloneElement(e,{cell:t});r.render(i,n.querySelector(".formatterCell"))}),'<div class="formatterCell"></div>'}}},function(e,t,n){var o,r;n(53),o=[n(52)],void 0===(r=function(e){return function(){var t,n,o,r=0,i={error:"error",info:"info",success:"success",warning:"warning"},a={clear:function(n,o){var r=d();t||s(r),l(n,r,o)||function(n){for(var o=t.children(),r=o.length-1;r>=0;r--)l(e(o[r]),n)}(r)},remove:function(n){var o=d();t||s(o),n&&0===e(":focus",n).length?p(n):t.children().length&&t.remove()},error:function(e,t,n){return c({type:i.error,iconClass:d().iconClasses.error,message:e,optionsOverride:n,title:t})},getContainer:s,info:function(e,t,n){return c({type:i.info,iconClass:d().iconClasses.info,message:e,optionsOverride:n,title:t})},options:{},subscribe:function(e){n=e},success:function(e,t,n){return c({type:i.success,iconClass:d().iconClasses.success,message:e,optionsOverride:n,title:t})},version:"2.1.4",warning:function(e,t,n){return c({type:i.warning,iconClass:d().iconClasses.warning,message:e,optionsOverride:n,title:t})}};return a;function s(n,o){return n||(n=d()),(t=e("#"+n.containerId)).length?t:(o&&(t=function(n){return(t=e("<div/>").attr("id",n.containerId).addClass(n.positionClass)).appendTo(e(n.target)),t}(n)),t)}function l(t,n,o){var r=!(!o||!o.force)&&o.force;return!(!t||!r&&0!==e(":focus",t).length||(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){p(t)}}),0))}function u(e){n&&n(e)}function c(n){var i=d(),a=n.iconClass||i.iconClass;if(void 0!==n.optionsOverride&&(i=e.extend(i,n.optionsOverride),a=n.optionsOverride.iconClass||a),!function(e,t){if(e.preventDuplicates){if(t.message===o)return!0;o=t.message}return!1}(i,n)){r++,t=s(i,!0);var l=null,c=e("<div/>"),h=e("<div/>"),f=e("<div/>"),m=e("<div/>"),g=e(i.closeHtml),v={intervalId:null,hideEta:null,maxHideTime:null},y={toastId:r,state:"visible",startTime:new Date,options:i,map:n};return n.iconClass&&c.addClass(i.toastClass).addClass(a),function(){if(n.title){var e=n.title;i.escapeHtml&&(e=b(n.title)),h.append(e).addClass(i.titleClass),c.append(h)}}(),function(){if(n.message){var e=n.message;i.escapeHtml&&(e=b(n.message)),f.append(e).addClass(i.messageClass),c.append(f)}}(),i.closeButton&&(g.addClass(i.closeClass).attr("role","button"),c.prepend(g)),i.progressBar&&(m.addClass(i.progressClass),c.prepend(m)),i.rtl&&c.addClass("rtl"),i.newestOnTop?t.prepend(c):t.append(c),function(){var e="";switch(n.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}c.attr("aria-live",e)}(),c.hide(),c[i.showMethod]({duration:i.showDuration,easing:i.showEasing,complete:i.onShown}),i.timeOut>0&&(l=setTimeout(w,i.timeOut),v.maxHideTime=parseFloat(i.timeOut),v.hideEta=(new Date).getTime()+v.maxHideTime,i.progressBar&&(v.intervalId=setInterval(x,10))),i.closeOnHover&&c.hover(C,E),!i.onclick&&i.tapToDismiss&&c.click(w),i.closeButton&&g&&g.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&!0!==e.cancelBubble&&(e.cancelBubble=!0),i.onCloseClick&&i.onCloseClick(e),w(!0)}),i.onclick&&c.click(function(e){i.onclick(e),w()}),u(y),i.debug&&console&&console.log(y),c}function b(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function w(t){var n=t&&!1!==i.closeMethod?i.closeMethod:i.hideMethod,o=t&&!1!==i.closeDuration?i.closeDuration:i.hideDuration,r=t&&!1!==i.closeEasing?i.closeEasing:i.hideEasing;if(!e(":focus",c).length||t)return clearTimeout(v.intervalId),c[n]({duration:o,easing:r,complete:function(){p(c),clearTimeout(l),i.onHidden&&"hidden"!==y.state&&i.onHidden(),y.state="hidden",y.endTime=new Date,u(y)}})}function E(){(i.timeOut>0||i.extendedTimeOut>0)&&(l=setTimeout(w,i.extendedTimeOut),v.maxHideTime=parseFloat(i.extendedTimeOut),v.hideEta=(new Date).getTime()+v.maxHideTime)}function C(){clearTimeout(l),v.hideEta=0,c.stop(!0,!0)[i.showMethod]({duration:i.showDuration,easing:i.showEasing})}function x(){var e=(v.hideEta-(new Date).getTime())/v.maxHideTime*100;m.width(e+"%")}}function d(){return e.extend({},{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">×</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1},a.options)}function p(e){t||(t=s()),e.is(":visible")||(e.remove(),e=null,0===t.children().length&&(t.remove(),o=void 0))}}()}.apply(t,o))||(e.exports=r)},function(e,t,n){"use strict";t.__esModule=!0;var o=n(28),r=n(56),i=n(57),a=n(17);e.exports={ReactTabulator:o.default,React15Tabulator:r.default,ReactTabulatorExample:i.default,reactFormatter:a.reactFormatter}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(32));t.on=r.default;var i=o(n(33));t.off=i.default;var a=o(n(65));t.filter=a.default;var s=o(n(35));t.listen=s.default;var l={on:r.default,off:i.default,filter:a.default,listen:s.default};t.default=l},,function(e,t,n){"use strict";
+!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var o=arguments[t];if(o){var i=typeof o;if("string"===i||"number"===i)e.push(o);else if(Array.isArray(o)&&o.length){var a=r.apply(null,o);a&&e.push(a)}else if("object"===i)for(var s in o)n.call(o,s)&&o[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(o=function(){return r}.apply(t,[]))||(e.exports=o)}()},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",function(){return o})},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(45)},function(e,t,n){"use strict";var o=function(){};e.exports=o},function(e,t,n){"use strict";e.exports=function(e,t,n,o,r,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,o,r,i,a,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=!("undefined"==typeof window||!window.document||!window.document.createElement);t.default=o,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,i="#"===t[0],a="."===t[0],s=i||a?t.slice(1):t;if(o.test(s))return i?(e=e.getElementById?e:document,(n=e.getElementById(s))?[n]:[]):e.getElementsByClassName&&a?r(e.getElementsByClassName(s)):r(e.getElementsByTagName(t));return r(e.querySelectorAll(t))};var o=/^[\w-]*$/,r=Function.prototype.bind.call(Function.prototype.call,[].slice);e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e&&e.ownerDocument||document},e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e){if((!r&&0!==r||e)&&i.default){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),r=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return r};var r,i=o(n(10));e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e,t,n){var o="",c="",d=t;if("string"==typeof t){if(void 0===n)return e.style[(0,r.default)(t)]||(0,a.default)(e).getPropertyValue((0,i.default)(t));(d={})[t]=n}Object.keys(d).forEach(function(t){var n=d[t];n||0===n?(0,u.default)(t)?c+=t+"("+n+") ":o+=(0,i.default)(t)+": "+n+";":(0,s.default)(e,(0,i.default)(t))}),c&&(o+=l.transform+": "+c+";");e.style.cssText+=";"+o};var r=o(n(32)),i=o(n(62)),a=o(n(64)),s=o(n(65)),l=n(33),u=o(n(66));e.exports=t.default},,function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(7);t.clone=function(e){return JSON.parse(JSON.stringify(e))},t.isSameArray=function(e,t){var n=e.length;if(n!==t.length)return!1;for(;n--;)if(e[n]!==t[n])return!1;return!0},t.reactFormatter=function(e){return function(t,n,i){return i(function(){var n=t.getElement(),i=o.cloneElement(e,{cell:t});r.render(i,n.querySelector(".formatterCell"))}),'<div class="formatterCell"></div>'}}},function(e,t,n){var o,r;n(53),o=[n(52)],void 0===(r=function(e){return function(){var t,n,o,r=0,i={error:"error",info:"info",success:"success",warning:"warning"},a={clear:function(n,o){var r=d();t||s(r),l(n,r,o)||function(n){for(var o=t.children(),r=o.length-1;r>=0;r--)l(e(o[r]),n)}(r)},remove:function(n){var o=d();t||s(o),n&&0===e(":focus",n).length?p(n):t.children().length&&t.remove()},error:function(e,t,n){return c({type:i.error,iconClass:d().iconClasses.error,message:e,optionsOverride:n,title:t})},getContainer:s,info:function(e,t,n){return c({type:i.info,iconClass:d().iconClasses.info,message:e,optionsOverride:n,title:t})},options:{},subscribe:function(e){n=e},success:function(e,t,n){return c({type:i.success,iconClass:d().iconClasses.success,message:e,optionsOverride:n,title:t})},version:"2.1.4",warning:function(e,t,n){return c({type:i.warning,iconClass:d().iconClasses.warning,message:e,optionsOverride:n,title:t})}};return a;function s(n,o){return n||(n=d()),(t=e("#"+n.containerId)).length?t:(o&&(t=function(n){return(t=e("<div/>").attr("id",n.containerId).addClass(n.positionClass)).appendTo(e(n.target)),t}(n)),t)}function l(t,n,o){var r=!(!o||!o.force)&&o.force;return!(!t||!r&&0!==e(":focus",t).length||(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){p(t)}}),0))}function u(e){n&&n(e)}function c(n){var i=d(),a=n.iconClass||i.iconClass;if(void 0!==n.optionsOverride&&(i=e.extend(i,n.optionsOverride),a=n.optionsOverride.iconClass||a),!function(e,t){if(e.preventDuplicates){if(t.message===o)return!0;o=t.message}return!1}(i,n)){r++,t=s(i,!0);var l=null,c=e("<div/>"),h=e("<div/>"),f=e("<div/>"),m=e("<div/>"),g=e(i.closeHtml),v={intervalId:null,hideEta:null,maxHideTime:null},y={toastId:r,state:"visible",startTime:new Date,options:i,map:n};return n.iconClass&&c.addClass(i.toastClass).addClass(a),function(){if(n.title){var e=n.title;i.escapeHtml&&(e=b(n.title)),h.append(e).addClass(i.titleClass),c.append(h)}}(),function(){if(n.message){var e=n.message;i.escapeHtml&&(e=b(n.message)),f.append(e).addClass(i.messageClass),c.append(f)}}(),i.closeButton&&(g.addClass(i.closeClass).attr("role","button"),c.prepend(g)),i.progressBar&&(m.addClass(i.progressClass),c.prepend(m)),i.rtl&&c.addClass("rtl"),i.newestOnTop?t.prepend(c):t.append(c),function(){var e="";switch(n.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}c.attr("aria-live",e)}(),c.hide(),c[i.showMethod]({duration:i.showDuration,easing:i.showEasing,complete:i.onShown}),i.timeOut>0&&(l=setTimeout(w,i.timeOut),v.maxHideTime=parseFloat(i.timeOut),v.hideEta=(new Date).getTime()+v.maxHideTime,i.progressBar&&(v.intervalId=setInterval(x,10))),i.closeOnHover&&c.hover(C,E),!i.onclick&&i.tapToDismiss&&c.click(w),i.closeButton&&g&&g.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&!0!==e.cancelBubble&&(e.cancelBubble=!0),i.onCloseClick&&i.onCloseClick(e),w(!0)}),i.onclick&&c.click(function(e){i.onclick(e),w()}),u(y),i.debug&&console&&console.log(y),c}function b(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function w(t){var n=t&&!1!==i.closeMethod?i.closeMethod:i.hideMethod,o=t&&!1!==i.closeDuration?i.closeDuration:i.hideDuration,r=t&&!1!==i.closeEasing?i.closeEasing:i.hideEasing;if(!e(":focus",c).length||t)return clearTimeout(v.intervalId),c[n]({duration:o,easing:r,complete:function(){p(c),clearTimeout(l),i.onHidden&&"hidden"!==y.state&&i.onHidden(),y.state="hidden",y.endTime=new Date,u(y)}})}function E(){(i.timeOut>0||i.extendedTimeOut>0)&&(l=setTimeout(w,i.extendedTimeOut),v.maxHideTime=parseFloat(i.extendedTimeOut),v.hideEta=(new Date).getTime()+v.maxHideTime)}function C(){clearTimeout(l),v.hideEta=0,c.stop(!0,!0)[i.showMethod]({duration:i.showDuration,easing:i.showEasing})}function x(){var e=(v.hideEta-(new Date).getTime())/v.maxHideTime*100;m.width(e+"%")}}function d(){return e.extend({},{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">×</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1},a.options)}function p(e){t||(t=s()),e.is(":visible")||(e.remove(),e=null,0===t.children().length&&(t.remove(),o=void 0))}}()}.apply(t,o))||(e.exports=r)},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=o(n(27));t.on=r.default;var i=o(n(28));t.off=i.default;var a=o(n(54));t.filter=a.default;var s=o(n(30));t.listen=s.default;var l={on:r.default,off:i.default,filter:a.default,listen:s.default};t.default=l},,function(e,t,n){"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
-*/var o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))r.call(n,c)&&(l[c]=n[c]);if(o){s=o(n);for(var d=0;d<s.length;d++)i.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=a(n(0)),i=a(n(24));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t],l=void 0===s?"undefined":o(s);return r.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`, expected a ReactComponent or a DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===l&&"function"==typeof s.render||1===s.nodeType?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected a ReactComponent or a DOMElement.")}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,o,r,i,a){var s=r||"<<anonymous>>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified in `"+s+"`."):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d<u;d++)c[d-6]=arguments[d];return e.apply(void 0,[n,o,s,i,l].concat(c))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n=void 0===t?{}:t,o=n.propTypes,i=n.defaultProps,a=n.allowFallback,s=void 0!==a&&a,l=n.displayName,u=void 0===l?e.name||e.displayName:l,c=function(t,n){return e(t,n)};return Object.assign(r.default.forwardRef||!s?r.default.forwardRef(c):function(e){return c(e,null)},{displayName:u,propTypes:o,defaultProps:i})};var o,r=(o=n(0))&&o.__esModule?o:{default:o}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,function(e,t){return t.toUpperCase()})};var o=/-(.)/g;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(70)),r=l(n(15)),i=l(n(14)),a=l(n(78)),s=n(80);function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(e){var t=void 0===e?{}:e,n=t.hideSiblingNodes,o=void 0===n||n,r=t.handleContainerOverflow,a=void 0===r||r;this.hideSiblingNodes=o,this.handleContainerOverflow=a,this.modals=[],this.containers=[],this.data=[],this.scrollbarSize=(0,i.default)()}var t=e.prototype;return t.isContainerOverflowing=function(e){var t=this.data[this.containerIndexFromModal(e)];return t&&t.overflowing},t.containerIndexFromModal=function(e){return t=this.data,n=function(t){return-1!==t.modals.indexOf(e)},o=-1,t.some(function(e,t){if(n(e,t))return o=t,!0}),o;var t,n,o},t.setContainerStyle=function(e,t){var n={overflow:"hidden"};e.style={overflow:t.style.overflow,paddingRight:t.style.paddingRight},e.overflowing&&(n.paddingRight=parseInt((0,r.default)(t,"paddingRight")||0,10)+this.scrollbarSize+"px"),(0,r.default)(t,n)},t.removeContainerStyle=function(e,t){var n=e.style;Object.keys(n).forEach(function(e){t.style[e]=n[e]})},t.add=function(e,t,n){var r=this.modals.indexOf(e),i=this.containers.indexOf(t);if(-1!==r)return r;if(r=this.modals.length,this.modals.push(e),this.hideSiblingNodes&&(0,s.hideSiblings)(t,e),-1!==i)return this.data[i].modals.push(e),r;var l={modals:[e],classes:n?n.split(/\s+/):[],overflowing:(0,a.default)(t)};return this.handleContainerOverflow&&this.setContainerStyle(l,t),l.classes.forEach(o.default.addClass.bind(null,t)),this.containers.push(t),this.data.push(l),r},t.remove=function(e){var t=this.modals.indexOf(e);if(-1!==t){var n=this.containerIndexFromModal(e),r=this.data[n],i=this.containers[n];if(r.modals.splice(r.modals.indexOf(e),1),this.modals.splice(t,1),0===r.modals.length)r.classes.forEach(o.default.removeClass.bind(null,i)),this.handleContainerOverflow&&this.removeContainerStyle(r,i),this.hideSiblingNodes&&(0,s.showSiblings)(i,e),this.containers.splice(n,1),this.data.splice(n,1);else if(this.hideSiblingNodes){var a=r.modals[r.modals.length-1],l=a.backdrop,u=a.dialog;(0,s.ariaHidden)(!1,u),(0,s.ariaHidden)(!1,l)}}},t.isTopModal=function(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e},e}();t.default=u,e.exports=t.default},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(8),l=n(29),u=n(30),c=n(17),d=n(31),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.getDerivedStateFromProps=function(e,t){var n=!e.data||0===e.data.length;return!t&&n?null:t&&0===t.data.length&&0===e.data.length?null:t&&e.data&&!c.isSameArray(t.data,e.data)?i({},t,{data:e.data}):{}},t.prototype.componentDidUpdate=function(){this.table.setData(this.state.data)},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t){e.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pickSVGProps=t.pickHTMLProps=void 0;var o=i(n(1)),r=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}t.pickHTMLProps=o.default,t.pickSVGProps=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=a(n(2)),i=a(n(3));function a(e){return e&&e.__esModule?e:{default:e}}var s=o({},r.default,["about","datatype","defaultChecked","defaultValue","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","color","itemProp","itemScope","itemType","itemRef","itemID","security","unselectable","results","autoSave","allowtransparency","charSet","ismap","typemustmatch","onBlur","onChange","onClick","onContextMenu","onCopy","onCut","onDoubleClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onScroll","onSubmit","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onWheel","onCompositionEnd","onCompositionStart","onCompositionUpdate","onInvalid","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onGotPointerCapture","onLostPointerCapture","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onSelect","onAbort","onCanPlay","onCanPlayThrough","onDurationChange","onEmptied","onEncrypted","onEnded","onError","onLoadedData","onLoadedMetadata","onLoadStart","onPause","onPlay","onPlaying","onProgress","onRateChange","onSeeked","onSeeking","onStalled","onSuspend","onTimeUpdate","onVolumeChange","onWaiting","onLoad","onError","onAnimationStart","onAnimationEnd","onAnimationIteration","onTransitionEnd","onToggle"].reduce(function(e,t){return e[t]=t,e},{}));t.default=(0,i.default)(function(e){return Boolean(s[e])||/^(data|aria)-/.test(e)})},function(e,t){
+*/var o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))r.call(n,c)&&(l[c]=n[c]);if(o){s=o(n);for(var d=0;d<s.length;d++)i.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=a(n(0)),i=a(n(22));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t],l=void 0===s?"undefined":o(s);return r.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`, expected a ReactComponent or a DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===l&&"function"==typeof s.render||1===s.nodeType?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected a ReactComponent or a DOMElement.")}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,o,r,i,a){var s=r||"<<anonymous>>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified in `"+s+"`."):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d<u;d++)c[d-6]=arguments[d];return e.apply(void 0,[n,o,s,i,l].concat(c))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n=void 0===t?{}:t,o=n.propTypes,i=n.defaultProps,a=n.allowFallback,s=void 0!==a&&a,l=n.displayName,u=void 0===l?e.name||e.displayName:l,c=function(t,n){return e(t,n)};return Object.assign(r.default.forwardRef||!s?r.default.forwardRef(c):function(e){return c(e,null)},{displayName:u,propTypes:o,defaultProps:i})};var o,r=(o=n(0))&&o.__esModule?o:{default:o}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,function(e,t){return t.toUpperCase()})};var o=/-(.)/g;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(59)),r=l(n(14)),i=l(n(13)),a=l(n(67)),s=n(69);function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(e){var t=void 0===e?{}:e,n=t.hideSiblingNodes,o=void 0===n||n,r=t.handleContainerOverflow,a=void 0===r||r;this.hideSiblingNodes=o,this.handleContainerOverflow=a,this.modals=[],this.containers=[],this.data=[],this.scrollbarSize=(0,i.default)()}var t=e.prototype;return t.isContainerOverflowing=function(e){var t=this.data[this.containerIndexFromModal(e)];return t&&t.overflowing},t.containerIndexFromModal=function(e){return t=this.data,n=function(t){return-1!==t.modals.indexOf(e)},o=-1,t.some(function(e,t){if(n(e,t))return o=t,!0}),o;var t,n,o},t.setContainerStyle=function(e,t){var n={overflow:"hidden"};e.style={overflow:t.style.overflow,paddingRight:t.style.paddingRight},e.overflowing&&(n.paddingRight=parseInt((0,r.default)(t,"paddingRight")||0,10)+this.scrollbarSize+"px"),(0,r.default)(t,n)},t.removeContainerStyle=function(e,t){var n=e.style;Object.keys(n).forEach(function(e){t.style[e]=n[e]})},t.add=function(e,t,n){var r=this.modals.indexOf(e),i=this.containers.indexOf(t);if(-1!==r)return r;if(r=this.modals.length,this.modals.push(e),this.hideSiblingNodes&&(0,s.hideSiblings)(t,e),-1!==i)return this.data[i].modals.push(e),r;var l={modals:[e],classes:n?n.split(/\s+/):[],overflowing:(0,a.default)(t)};return this.handleContainerOverflow&&this.setContainerStyle(l,t),l.classes.forEach(o.default.addClass.bind(null,t)),this.containers.push(t),this.data.push(l),r},t.remove=function(e){var t=this.modals.indexOf(e);if(-1!==t){var n=this.containerIndexFromModal(e),r=this.data[n],i=this.containers[n];if(r.modals.splice(r.modals.indexOf(e),1),this.modals.splice(t,1),0===r.modals.length)r.classes.forEach(o.default.removeClass.bind(null,i)),this.handleContainerOverflow&&this.removeContainerStyle(r,i),this.hideSiblingNodes&&(0,s.showSiblings)(i,e),this.containers.splice(n,1),this.data.splice(n,1);else if(this.hideSiblingNodes){var a=r.modals[r.modals.length-1],l=a.backdrop,u=a.dialog;(0,s.ariaHidden)(!1,u),(0,s.ariaHidden)(!1,l)}}},t.isTopModal=function(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e},e}();t.default=u,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var o=n(35),r=n(75),i=n(76),a=n(16);e.exports={ReactTabulator:o.default,React15Tabulator:r.default,ReactTabulatorExample:i.default,reactFormatter:a.reactFormatter}},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(10)).default&&(r=document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){(t=t||window.event).target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(10)).default&&(r=document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=o(n(10)).default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):i(e,t)}:i;function i(e,t){if(t)do{if(t===e)return!0}while(t=t.parentNode);return!1}t.default=r,e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=o(n(10)),i=o(n(27)),a=o(n(28)),s=function(){};r.default&&(s=function(e,t,n,o){return(0,i.default)(e,t,n,o),function(){(0,a.default)(e,t,n,o)}});var l=s;t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")},e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e){return(0,r.default)(e.replace(i,"ms-"))};var r=o(n(24)),i=/^-ms-/;e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=t.animationEnd=t.animationDelay=t.animationTiming=t.animationDuration=t.animationName=t.transitionEnd=t.transitionDuration=t.transitionDelay=t.transitionTiming=t.transitionProperty=t.transform=void 0;var r,i,a,s,l,u,c,d,p,h,f,m=o(n(10)),g="transform";if(t.transform=g,t.animationEnd=a,t.transitionEnd=i,t.transitionDelay=c,t.transitionTiming=u,t.transitionDuration=l,t.transitionProperty=s,t.animationDelay=f,t.animationTiming=h,t.animationDuration=p,t.animationName=d,m.default){var v=function(){for(var e,t,n=document.createElement("div").style,o={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},r=Object.keys(o),i="",a=0;a<r.length;a++){var s=r[a];if(s+"TransitionProperty"in n){i="-"+s.toLowerCase(),e=o[s]("TransitionEnd"),t=o[s]("AnimationEnd");break}}!e&&"transitionProperty"in n&&(e="transitionend");!t&&"animationName"in n&&(t="animationend");return n=null,{animationEnd:t,transitionEnd:e,prefix:i}}();r=v.prefix,t.transitionEnd=i=v.transitionEnd,t.animationEnd=a=v.animationEnd,t.transform=g=r+"-"+g,t.transitionProperty=s=r+"-transition-property",t.transitionDuration=l=r+"-transition-duration",t.transitionDelay=c=r+"-transition-delay",t.transitionTiming=u=r+"-transition-timing-function",t.animationName=d=r+"-animation-name",t.animationDuration=p=r+"-animation-duration",t.animationTiming=h=r+"-animation-delay",t.animationDelay=f=r+"-animation-timing-function"}var y={transform:g,end:i,property:s,timing:u,delay:c,duration:l};t.default=y},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return null==e?t:(e="function"==typeof e?e():e,r.default.findDOMNode(e)||null)};var o,r=(o=n(7))&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(7),l=n(36),u=n(37),c=n(16),d=n(38),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.getDerivedStateFromProps=function(e,t){var n=!e.data||0===e.data.length;return!t&&n?null:t&&0===t.data.length&&0===e.data.length?null:t&&e.data&&!c.isSameArray(t.data,e.data)?i({},t,{data:e.data}):{}},t.prototype.componentDidUpdate=function(){this.table.setData(this.state.data)},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t){e.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pickSVGProps=t.pickHTMLProps=void 0;var o=i(n(1)),r=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}t.pickHTMLProps=o.default,t.pickSVGProps=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=a(n(2)),i=a(n(3));function a(e){return e&&e.__esModule?e:{default:e}}var s=o({},r.default,["about","datatype","defaultChecked","defaultValue","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","color","itemProp","itemScope","itemType","itemRef","itemID","security","unselectable","results","autoSave","allowtransparency","charSet","ismap","typemustmatch","onBlur","onChange","onClick","onContextMenu","onCopy","onCut","onDoubleClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onScroll","onSubmit","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onWheel","onCompositionEnd","onCompositionStart","onCompositionUpdate","onInvalid","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onGotPointerCapture","onLostPointerCapture","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onSelect","onAbort","onCanPlay","onCanPlayThrough","onDurationChange","onEmptied","onEncrypted","onEnded","onError","onLoadedData","onLoadedMetadata","onLoadStart","onPause","onPlay","onPlaying","onProgress","onRateChange","onSeeked","onSeeking","onStalled","onSuspend","onTimeUpdate","onVolumeChange","onWaiting","onLoad","onError","onAnimationStart","onAnimationEnd","onAnimationIteration","onTransitionEnd","onToggle"].reduce(function(e,t){return e[t]=t,e},{}));t.default=(0,i.default)(function(e){return Boolean(s[e])||/^(data|aria)-/.test(e)})},function(e,t){
/*!
* html-attributes
* https://github.com/alexmingoia/html-attributes
@@ -24,7 +24,7 @@ object-assign
* svg-attributes
* https://github.com/alexmingoia/svg-attributes
*/
-"use strict";e.exports={accentHeight:"accent-height",accumulate:"accumulate",additive:"additive",alphabetic:"alphabetic",amplitude:"amplitude",arabicForm:"arabic-form",ascent:"ascent",attributeName:"attributeName",attributeType:"attributeType",azimuth:"azimuth",baseFrequency:"baseFrequency",baseProfile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcMode:"calcMode",capHeight:"cap-height",class:"class",clipPathUnits:"clipPathUnits",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cx:"cx",cy:"cy",d:"d",descent:"descent",diffuseConstant:"diffuseConstant",divisor:"divisor",dur:"dur",dx:"dx",dy:"dy",edgeMode:"edgeMode",elevation:"elevation",end:"end",exponent:"exponent",externalResourcesRequired:"externalResourcesRequired",fill:"fill",filterRes:"filterRes",filterUnits:"filterUnits",fontFamily:"font-family",fontSize:"font-size",fontStretch:"font-stretch",fontStyle:"font-style",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphame:"glyph-name",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:"hanging",height:"height",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",id:"id",ideographic:"ideographic",in:"in",in2:"in2",intercept:"intercept",k:"k",k1:"k1",k2:"k2",k3:"k3",k4:"k4",kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lang:"lang",lengthAdjust:"lengthAdjust",limitingConeAngle:"limitingConeAngle",local:"local",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:"mathematical",max:"max",media:"media",method:"method",min:"min",mode:"mode",name:"name",numOctaves:"numOctaves",offset:"offset",onAbort:"onabort",onActivate:"onactivate",onBegin:"onbegin",onClick:"onclick",onEnd:"onend",onError:"onerror",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onLoad:"onload",onMouseDown:"onmousedown",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onRepeat:"onrepeat",onResize:"onresize",onScroll:"onscroll",onUnload:"onunload",onZoom:"onzoom",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overlinePosition:"overline-position",overlineThickness:"overline-thickness",panose1:"panose-1",path:"path",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",points:"points",pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:"r",radius:"radius",refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:"restart",result:"result",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",seed:"seed",slope:"slope",spacing:"spacing",specularConstant:"specularConstant",specularExponent:"specularExponent",spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchTiles:"stitchTiles",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:"string",style:"style",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",target:"target",targetX:"targetX",targetY:"targetY",textLength:"textLength",title:"title",to:"to",transform:"transform",type:"type",u1:"u1",u2:"u2",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:"unicode",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:"values",version:"version",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",width:"width",widths:"widths",x:"x",xHeight:"x-height",x1:"x1",x2:"x2",xChannelSelector:"xChannelSelector",xlink:"xlink",xml:"xml",y:"y",y1:"y1",y2:"y2",yChannelSelector:"yChannelSelector",z:"z",zoomAndPan:"zoomAndPan",alignmentBaseline:"alignment-baseline",baselineShift:"baseline-shift",clipPath:"clip-path",clipRule:"clip-rule",clip:"clip",colorInterpolationFilters:"color-interpolation-filters",colorInterpolation:"color-interpolation",colorProfile:"color-profile",colorRendering:"color-rendering",color:"color",cursor:"cursor",direction:"direction",display:"display",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:"filter",floodColor:"flood-color",floodOpacity:"flood-opacity",fontSizeAdjust:"font-size-adjust",fontVariant:"font-variant",fontWeight:"font-weight",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",imageRendering:"image-rendering",kerning:"kerning",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",mask:"mask",opacity:"opacity",overflow:"overflow",pointerEvents:"pointer-events",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",stroke:"stroke",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",unicodeBidi:"unicode-bidi",visibility:"visibility",wordSpacing:"word-spacing",writingMode:"writing-mode"}}])},function(e,t,n){"use strict";t.__esModule=!0;var o=n(54),r=function(){};t.propsToOptions=function(e){for(var t={},n=0,i=["height","layout","layoutColumnsOnNewData","columnMinWidth","columnVertAlign","resizableColumns","resizableRows","autoResize","tooltips","tooltipsHeader","tooltipGenerationMode","initialSort","initialFilter","footerElement","index","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardCopyHeader","clipboardPasteParser","clipboardPasteAction","rowFormatter","placeholder"];n<i.length;n++){var a=i[n];void 0!==e[a]&&(t[a]=e[a])}for(var s=0,l=["tableBuilt","rowClick","rowDblClick","rowContext","rowTap","rowDblTap","rowTapHold","rowAdded","rowDeleted","rowMoved","rowUpdated","rowSelectionChanged","rowSelected","rowDeselected","rowResized","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellEditing","cellEdited","cellEditCancelled","columnMoved","columnResized","columnTitleChanged","columnVisibilityChanged","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","htmlImporting","htmlImported","dataLoading","dataLoaded","dataEdited","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","renderStarted","renderComplete","pageLoaded","localized","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","validationFailed","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","downloadComplete"];s<l.length;s++){var u=l[s];t[u]=e[u]||r}return"object"==typeof e.footerElement&&(t.footerElement=o.renderToString(e.footerElement)),t}},function(t,n,o){var r,i,a,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};a=function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return r;r++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return i;r++}}});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,n=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>n?(t=e-n,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,n,o=[];if(e&&e.length){for(var r in t=e[0]){var i={field:r,title:r},a=t[r];switch(void 0===a?"undefined":s(a)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(a)?"array":"string";break;default:n=isNaN(a)||""===a?a.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}i.sorter=n,o.push(i)}this.table.options.columns=o,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var n=this;n.headersElement.firstChild;)n.headersElement.removeChild(n.headersElement.firstChild);n.columns=[],n.columnsByIndex=[],n.columnsByField={},n.table.modExists("frozenColumns")&&n.table.modules.frozenColumns.reset(),e.forEach(function(e,t){n._addColumn(e)}),n._reIndexColumns(),n.table.options.responsiveLayout&&n.table.modExists("responsiveLayout",!0)&&n.table.modules.responsiveLayout.initialize(),n.redraw(!0)},t.prototype._addColumn=function(e,t,n){var r=new o(e,this),i=r.getElement(),a=n?this.findColumnIndex(n):n;if(n&&a>-1){var s=this.columns.indexOf(n.getTopColumn()),l=n.getElement();t?(this.columns.splice(s,0,r),l.parentNode.insertBefore(i,l)):(this.columns.splice(s+1,0,r),l.parentNode.insertBefore(i,l.nextSibling))}else t?(this.columns.unshift(r),this.headersElement.insertBefore(r.getElement(),this.headersElement.firstChild)):(this.columns.push(r),this.headersElement.appendChild(r.getElement()));return r},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var n;e.clearVerticalAlign(),(n=e.getHeight())>t&&(t=n)}),e.columns.forEach(function(n){n.verticalAlign(e.table.options.columnVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){return"object"!=(void 0===e?"undefined":s(e))?this.columnsByField[e]||!1:e instanceof o?e:e instanceof n?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&this.columns.find(function(t){return t.element===e})||!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){return(e=this.columnsByIndex.findIndex(function(e){return e.visible}))>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,n){e(t,n)})},t.prototype.getDefinitions=function(e){var t=[];return this.columnsByIndex.forEach(function(n){(!e||e&&n.visible)&&t.push(n.getDefinition())}),t},t.prototype.getDefinitionTree=function(){var e=[];return this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach(function(e){t.push(e.getComponent())}),t},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,n){this._moveColumnInArray(this.columns,e,t,n),this._moveColumnInArray(this.columnsByIndex,e,t,n,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,n,o,r){var i,a=e.indexOf(t);a>-1&&(e.splice(a,1),(i=e.indexOf(n))>-1?o&&(i+=1):i=a,e.splice(i,0,t),r&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(a,1)[0];e.cells.splice(i,0,t)}}))},t.prototype.scrollToColumn=function(e,t,n){var o=this,r=0,i=0,a=0,s=e.getElement();return new Promise(function(l,u){if(void 0===t&&(t=o.table.options.scrollToColumnPosition),void 0===n&&(n=o.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":a=-o.element.clientWidth/2;break;case"right":a=s.clientWidth-o.headersElement.clientWidth}if(!n&&(i=s.offsetLeft)>0&&i+s.offsetWidth<o.element.clientWidth)return!1;r=s.offsetLeft+o.element.scrollLeft+a,r=Math.max(Math.min(r,o.table.rowManager.element.scrollWidth-o.table.rowManager.element.clientWidth),0),o.table.rowManager.scrollHorizontal(r),o.scrollHorizontal(r),l()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=[];return this.columnsByIndex.forEach(function(n){t.push(n.generateCell(e))}),t},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,n=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(o){var r,i,a;o.visible&&(r=o.definition.width||0,i=void 0===o.minWidth?e.table.options.columnMinWidth:parseInt(o.minWidth),a="string"==typeof r?r.indexOf("%")>-1?t/100*parseInt(r):parseInt(r):r,n+=a>i?a:i)}),n},t.prototype.addColumn=function(e,t,n){var o=this._addColumn(e,t,n);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&o.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(e){var t,n=e.getField();n&&delete this.columnsByField[n],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(d.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var n=function(e){this._column=e,this.type="ColumnComponent"};n.prototype.getElement=function(){return this._column.getElement()},n.prototype.getDefinition=function(){return this._column.getDefinition()},n.prototype.getField=function(){return this._column.getField()},n.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getVisibility=function(){return this._column.visible},n.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},n.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},n.prototype.toggle=function(){this._column.visible?this.hide():this.show()},n.prototype.delete=function(){this._column.delete()},n.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getParentColumn=function(){return this._column.parent instanceof o&&this._column.parent.getComponent()},n.prototype._getSelf=function(){return this._column},n.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},n.prototype.getTable=function(){return this._column.table},n.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},n.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},n.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},n.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},n.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()};var o=function e(t,n){var o=this;this.table=n.table,this.definition=t,this.parent=n,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,n){var r=new e(t,o);o.attachColumn(r)}),o.checkColumnVisibility()):n.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};o.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},o.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},o.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},o.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},o.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},o.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},o.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},o.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is depricated, you should now use htmlOutput"))},o.prototype.setTooltip=function(){var e=this,t=e.definition,n=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;n?!0===n?t.field?e.table.modules.localize.bind("columns|"+t.field,function(n){e.element.setAttribute("title",n||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof n&&!1===(n=n(e.getComponent()))&&(n=""),e.element.setAttribute("title",n)):e.element.setAttribute("title","")},o.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},o.prototype._bindEvents=function(){var e,t,n,o=this,r=o.definition;"function"==typeof r.headerClick&&o.element.addEventListener("click",function(e){r.headerClick(e,o.getComponent())}),"function"==typeof r.headerDblClick&&o.element.addEventListener("dblclick",function(e){r.headerDblClick(e,o.getComponent())}),"function"==typeof r.headerContext&&o.element.addEventListener("contextmenu",function(e){r.headerContext(e,o.getComponent())}),"function"==typeof r.headerTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&r.headerTap(e,o.getComponent()),n=!1})),"function"==typeof r.headerDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,r.headerDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof r.headerTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,r.headerTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof r.cellClick&&(o.cellEvents.cellClick=r.cellClick),"function"==typeof r.cellDblClick&&(o.cellEvents.cellDblClick=r.cellDblClick),"function"==typeof r.cellContext&&(o.cellEvents.cellContext=r.cellContext),"function"==typeof r.cellMouseEnter&&(o.cellEvents.cellMouseEnter=r.cellMouseEnter),"function"==typeof r.cellMouseLeave&&(o.cellEvents.cellMouseLeave=r.cellMouseLeave),"function"==typeof r.cellMouseOver&&(o.cellEvents.cellMouseOver=r.cellMouseOver),"function"==typeof r.cellMouseOut&&(o.cellEvents.cellMouseOut=r.cellMouseOut),"function"==typeof r.cellMouseMove&&(o.cellEvents.cellMouseMove=r.cellMouseMove),"function"==typeof r.cellTap&&(o.cellEvents.cellTap=r.cellTap),"function"==typeof r.cellDblTap&&(o.cellEvents.cellDblTap=r.cellDblTap),"function"==typeof r.cellTapHold&&(o.cellEvents.cellTapHold=r.cellTapHold),"function"==typeof r.cellEdited&&(o.cellEvents.cellEdited=r.cellEdited),"function"==typeof r.cellEditing&&(o.cellEvents.cellEditing=r.cellEditing),"function"==typeof r.cellEditCancelled&&(o.cellEvents.cellEditCancelled=r.cellEditCancelled)},o.prototype._buildColumnHeader=function(){var e=this,t=e.definition,n=e.table;(n.modExists("sort")&&n.modules.sort.initializeColumn(e,e.contentElement),n.modExists("format")&&n.modules.format.initializeColumn(e),void 0!==t.editor&&n.modExists("edit")&&n.modules.edit.initializeColumn(e),void 0!==t.validator&&n.modExists("validate")&&n.modules.validate.initializeColumn(e),n.modExists("mutator")&&n.modules.mutator.initializeColumn(e),n.modExists("accessor")&&n.modules.accessor.initializeColumn(e),s(n.options.responsiveLayout)&&n.modExists("responsiveLayout")&&n.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)});t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.align?"":e.definition.align},o.prototype._buildColumnHeaderContent=function(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),e.appendChild(this._buildColumnHeaderTitle()),e},o.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,n=e.table,o=document.createElement("div");if(o.classList.add("tabulator-col-title"),t.editableTitle){var r=document.createElement("input");r.classList.add("tabulator-title-editor"),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("change",function(){t.title=r.value,n.options.columnTitleChanged.call(e.table,e.getComponent())}),o.appendChild(r),t.field?n.modules.localize.bind("columns|"+t.field,function(e){r.value=e||t.title||" "}):r.value=t.title||" "}else t.field?n.modules.localize.bind("columns|"+t.field,function(n){e._formatColumnHeaderTitle(o,n||t.title||" ")}):e._formatColumnHeaderTitle(o,t.title||" ");return o},o.prototype._formatColumnHeaderTitle=function(e,t){var n,o,r,i;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(n=this.table.modules.format.getFormatter(this.definition.titleFormatter),i={getValue:function(){return t},getElement:function(){return e}},r="function"==typeof(r=this.definition.titleFormatterParams||{})?r():r,void 0===(o=n.call(this.table.modules.format,i,r))?"undefined":s(o)){case"object":o instanceof Node?e.appendChild(o):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",o));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=o}else e.innerHTML=t},o.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},o.prototype._getFlatData=function(e){return e[this.field]},o.prototype._getNestedData=function(e){for(var t,n=e,o=this.fieldStructure,r=o.length,i=0;i<r&&(t=n=n[o[i]],n);i++);return t},o.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},o.prototype._setNesteData=function(e,t){for(var n=e,o=this.fieldStructure,r=o.length,i=0;i<r;i++)i==r-1?n[o[i]]=t:(n[o[i]]||(n[o[i]]={}),n=n[o[i]])},o.prototype.attachColumn=function(e){this.groupElement?(this.columns.push(e),this.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},o.prototype.verticalAlign=function(e,t){var n=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=n+"px",this.isGroup&&(this.groupElement.style.minHeight=n-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},o.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},o.prototype.getElement=function(){return this.element},o.prototype.getGroupElement=function(){return this.groupElement},o.prototype.getField=function(){return this.field},o.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},o.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},o.prototype.getColumns=function(){return this.columns},o.prototype.getCells=function(){return this.cells},o.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},o.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},o.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},o.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px")},o.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},o.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},o.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},o.prototype.getWidth=function(){return this.width},o.prototype.getHeight=function(){return this.element.offsetHeight},o.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},o.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(e){e.delete()});for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},o.prototype.generateCell=function(e){var t=new u(this,e);return this.cells.push(t),t},o.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e+1)},o.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e-1)},o.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},o.prototype.fitToData=function(){this.widthFixed||(this.element.style.width="",this.cells.forEach(function(e){e.clearWidth()}));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach(function(t){var n=t.getWidth();n>e&&(e=n)}),e&&this.setWidthActual(e+1))},o.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},o.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],o.prototype.getComponent=function(){return new n(this)};var r=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]};r.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},r.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},r.prototype.getElement=function(){return this.element},r.prototype.getTableElement=function(){return this.tableElement},r.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},r.prototype.setColumnManager=function(e){this.columnManager=e},r.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,n=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(n),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t)):e.scrollTop=t})},r.prototype.findRow=function(e){var t=this;return"object"!=(void 0===e?"undefined":s(e))?null!=e&&(t.rows.find(function(n){return n.data[t.table.options.index]==e})||!1):e instanceof a?e:e instanceof i?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.rows.find(function(t){return t.element===e})||!1},r.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},r.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},r.prototype.scrollToRow=function(e,t,n){var o,r=this,i=this.getDisplayRows().indexOf(e),a=e.getElement(),s=0;return new Promise(function(e,l){if(i>-1){if(void 0===t&&(t=r.table.options.scrollToRowPosition),void 0===n&&(n=r.table.options.scrollToRowIfVisible),"nearest"===t)switch(r.renderMode){case"classic":o=d.prototype.helpers.elOffset(a).top,t=Math.abs(r.element.scrollTop-o)>Math.abs(r.element.scrollTop+r.element.clientHeight-o)?"bottom":"top";break;case"virtual":t=Math.abs(r.vDomTop-i)>Math.abs(r.vDomBottom-i)?"bottom":"top"}if(!n&&d.prototype.helpers.elVisible(a)&&(s=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top)>0&&s<r.element.clientHeight-a.offsetHeight)return!1;switch(r.renderMode){case"classic":r.element.scrollTop=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top+r.element.scrollTop;break;case"virtual":r._virtualRenderFill(i,!0)}switch(t){case"middle":case"center":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight/2;break;case"bottom":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight+a.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},r.prototype.setData=function(e,t){var n=this,o=this;return new Promise(function(r,i){t&&n.getDisplayRows().length?o.table.options.pagination?o._setDataActual(e,!0):n.reRenderInPosition(function(){o._setDataActual(e)}):(n.table.options.autoColumns&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),r()})},r.prototype._setDataActual=function(e,t){var n=this;n.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":s(e))){var o=new a(e,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),n.table.options.dataLoaded.call(this.table,e),n.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":s(e),"\nData: ",e)},r.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},r.prototype.deleteRow=function(e,t){var n=this.rows.indexOf(e),o=this.activeRows.indexOf(e);o>-1&&this.activeRows.splice(o,1),n>-1&&this.rows.splice(n,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},r.prototype.addRow=function(e,t,n,o){var r=this.addRowActual(e,t,n,o);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",r,{data:e,pos:t,index:n}),r},r.prototype.addRows=function(e,t,n){var o=this,r=this,i=[];return new Promise(function(a,s){t=o.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length-1,(void 0===n&&t||void 0!==n&&!t)&&e.reverse(),e.forEach(function(e,o){var a=r.addRow(e,t,n,!0);i.push(a)}),o.table.options.groupBy&&o.table.modExists("groupRows")?o.table.modules.groupRows.updateGroupRows(!0):o.table.options.pagination&&o.table.modExists("page")?o.refreshActiveData(!1,!1,!0):o.reRenderInPosition(),o.table.modExists("columnCalcs")&&o.table.modules.columnCalcs.recalc(o.table.rowManager.activeRows),a(i)})},r.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},r.prototype.addRowActual=function(e,t,n,o){var r,i=e instanceof a?e:new a(e||{},this),s=this.findAddRowPos(t);if(!n&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(r=this.getDisplayRows(),s?r.length?n=r[0]:this.activeRows.length&&(n=this.activeRows[this.activeRows.length-1],s=!1):r.length&&(n=r[r.length-1],s=!(r.length<this.table.modules.page.getPageSize()))),n&&(n=this.findRow(n)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(i);var l=i.getGroup().rows;l.length>1&&(!n||n&&-1==l.indexOf(n)?s?l[0]!==i&&(n=l[0],this._moveRowInArray(i.getGroup().rows,i,n,s)):l[l.length-1]!==i&&(n=l[l.length-1],this._moveRowInArray(i.getGroup().rows,i,n,s)):this._moveRowInArray(i.getGroup().rows,i,n,s))}if(n){var u=this.rows.indexOf(n),c=this.activeRows.indexOf(n);this.displayRowIterator(function(e){var t=e.indexOf(n);t>-1&&e.splice(s?t:t+1,0,i)}),c>-1&&this.activeRows.splice(s?c:c+1,0,i),u>-1&&this.rows.splice(s?u:u+1,0,i)}else s?(this.displayRowIterator(function(e){e.unshift(i)}),this.activeRows.unshift(i),this.rows.unshift(i)):(this.displayRowIterator(function(e){e.push(i)}),this.activeRows.push(i),this.rows.push(i));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,i.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),o||this.reRenderInPosition(),i},r.prototype.moveRow=function(e,t,n){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{pos:this.getRowPosition(e),to:t,after:n}),this.moveRowActual(e,t,n),this.table.options.rowMoved.call(this.table,e.getComponent())},r.prototype.moveRowActual=function(e,t,n){var o=this;if(this._moveRowInArray(this.rows,e,t,n),this._moveRowInArray(this.activeRows,e,t,n),this.displayRowIterator(function(r){o._moveRowInArray(r,e,t,n)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var r=t.getGroup(),i=e.getGroup();r===i?this._moveRowInArray(r.rows,e,t,n):(i&&i.removeRow(e),r.insertRow(e,t,n))}},r.prototype._moveRowInArray=function(e,t,n,o){var r,i,a;if(t!==n&&((r=e.indexOf(t))>-1&&(e.splice(r,1),(i=e.indexOf(n))>-1?o?e.splice(i+1,0,t):e.splice(i,0,t):e.splice(r,0,t)),e===this.getDisplayRows())){a=i>r?i:r+1;for(var s=r<i?r:i;s<=a;s++)e[s]&&this.styleRow(e[s],s)}},r.prototype.clearData=function(){this.setData([])},r.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},r.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},r.prototype.nextDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return!1!==n&&n<this.displayRowsCount-1&&(o=this.getDisplayRows()[n+1]),!o||o instanceof a&&"row"==o.type?o:this.nextDisplayRow(o,t)},r.prototype.prevDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return n&&(o=this.getDisplayRows()[n-1]),!o||o instanceof a&&"row"==o.type?o:this.prevDisplayRow(o,t)},r.prototype.findRowIndex=function(e,t){var n;return!!((e=this.findRow(e))&&(n=t.indexOf(e))>-1)&&n},r.prototype.getData=function(e,t){var n=[];return(e?this.activeRows:this.rows).forEach(function(e){n.push(e.getData(t||"data"))}),n},r.prototype.getComponents=function(e){var t=[];return(e?this.activeRows:this.rows).forEach(function(e){t.push(e.getComponent())}),t},r.prototype.getDataCount=function(e){return e?this.activeRows.length:this.rows.length},r.prototype._genRemoteRequest=function(){var e=this,t=e.table,n=t.options,o={};if(t.modExists("page")){if(n.ajaxSorting){var r=e.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),o[e.table.modules.page.paginationDataSentNames.sorters]=r}if(n.ajaxFiltering){var i=e.table.modules.filter.getFilters(!0,!0);o[e.table.modules.page.paginationDataSentNames.filters]=i}e.table.modules.ajax.setParams(o,!0)}t.modules.ajax.sendRequest().then(function(t){e.setData(t)}).catch(function(e){})},r.prototype.filterRefresh=function(){var e=this.table,t=e.options,n=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(n)},r.prototype.sorterRefresh=function(e){var t=this.table,n=this.table.options,o=this.scrollLeft;n.ajaxSorting?("remote"==n.pagination||n.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):n.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(o)},r.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},r.prototype.refreshActiveData=function(e,t,n){var o,r=this.table;switch(this.table.modExists("edit")&&this.table.modules.edit.cancelEdit(),e||(e="all"),r.options.selectable&&!r.options.selectablePersistence&&r.modExists("selectRow")&&r.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:r.modExists("filter")?this.setActiveRows(r.modules.filter.filter(this.rows)):this.setActiveRows(this.rows.slice(0));case"sort":t?t=!1:r.modExists("sort")&&r.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&r.modules.frozenRows.isFrozen()&&(r.modules.frozenRows.getDisplayIndex()||r.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.frozenRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.frozenRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.frozenRows.setDisplayIndex(o));case"group":t?t=!1:r.options.groupBy&&r.modExists("groupRows")&&(r.modules.groupRows.getDisplayIndex()||r.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.groupRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.groupRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.groupRows.setDisplayIndex(o));case"tree":t?t=!1:r.options.dataTree&&r.modExists("dataTree")&&(r.modules.dataTree.getDisplayIndex()||r.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.dataTree.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.dataTree.getRows(this.getDisplayRows(o-1)),o))&&r.modules.dataTree.setDisplayIndex(o)),r.options.pagination&&r.modExists("page")&&!n&&"local"==r.modules.page.getMode()&&r.modules.page.reset();case"page":t?t=!1:r.options.pagination&&r.modExists("page")&&(r.modules.page.getDisplayIndex()||r.modules.page.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.page.getDisplayIndex(),"local"==r.modules.page.getMode()&&r.modules.page.setMaxRows(this.getDisplayRows(o-1).length),!0!==(o=this.setDisplayRows(r.modules.page.getRows(this.getDisplayRows(o-1)),o))&&r.modules.page.setDisplayIndex(o))}d.prototype.helpers.elVisible(this.element)&&(n?this.reRenderInPosition():(this.renderTable(),r.options.layoutColumnsOnNewData&&this.table.columnManager.redraw(!0))),r.modExists("columnCalcs")&&r.modules.columnCalcs.recalc(this.activeRows)},r.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},r.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},r.prototype.getNextDisplayIndex=function(){return this.displayRows.length},r.prototype.setDisplayRows=function(e,t){var n=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,n=!0):(this.displayRows.push(e),n=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),n},r.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},r.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,n=this.element.clientHeight+t,o=!1,r=0,i=0,a=this.getDisplayRows();if(e){this.getDisplayRows();for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(a[s])if(o){if(!(n-a[s].getElement().offsetTop>=0))break;i=s}else t-a[s].getElement().offsetTop>=0?r=s:o=!0}else r=this.vDomTop,i=this.vDomBottom;return a.slice(r,i+1)},r.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},r.prototype.getRows=function(){return this.rows},r.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode()){for(var t=this.element.scrollTop,n=!1,o=!1,r=this.scrollLeft,i=this.getDisplayRows(),a=this.vDomTop;a<=this.vDomBottom;a++)if(i[a]){var s=t-i[a].getElement().offsetTop;if(!(!1===o||Math.abs(s)<o))break;o=s,n=a}e&&e(),this._virtualRenderFill(!1===n?this.displayRowsCount-1:n,!0,o||0),this.scrollHorizontal(r)}else this.renderTable(),e&&e()},r.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},r.prototype.getRenderMode=function(){return this.renderMode},r.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.renderMode&&this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder)),this.table.options.renderComplete.call(this.table)},r.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},r.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,n=!0;e.getDisplayRows().forEach(function(o,r){e.styleRow(o,r),t.appendChild(o.getElement()),o.initialize(!0),"group"!==o.type&&(n=!1)}),t.style.minWidth=n?e.table.columnManager.getWidth()+"px":""},r.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},r.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},r.prototype.styleRow=function(e,t){var n=e.getElement();t%2?(n.classList.add("tabulator-row-even"),n.classList.remove("tabulator-row-odd")):(n.classList.add("tabulator-row-odd"),n.classList.remove("tabulator-row-even"))},r.prototype._virtualRenderFill=function(e,t,n){var o=this.tableElement,r=this.element,i=0,a=0,s=0,l=0,u=!0,c=this.getDisplayRows();if(n=n||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);var p=(this.displayRowsCount-e+1)*this.vDomRowHeight;p<this.height&&(e-=Math.ceil((this.height-p)/this.vDomRowHeight))<0&&(e=0),e-=i=Math.min(Math.max(Math.floor(this.vDomWindowBuffer/this.vDomRowHeight),this.vDomWindowMinMarginRows),e)}else this._clearVirtualDom();if(this.displayRowsCount&&d.prototype.helpers.elVisible(this.element)){for(this.vDomTop=e,this.vDomBottom=e-1;(a<=this.height+this.vDomWindowBuffer||l<this.vDomWindowMinTotalRows)&&this.vDomBottom<this.displayRowsCount-1;){var h,f=this.vDomBottom+1,m=c[f];this.styleRow(m,f),o.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),h=m.getHeight(),l<i?s+=h:a+=h,h>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*h),"group"!==m.type&&(u=!1),this.vDomBottom++,l++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+n:this.scrollTop-s,this.vDomBottomPad=this.vDomBottom==this.displayRowsCount-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-s,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+s)/l),this.vDomBottomPad=this.vDomRowHeight*(this.displayRowsCount-this.vDomBottom-1),this.vDomScrollHeight=s+a+this.vDomBottomPad-this.height),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+s+n-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,r.scrollTop=this.scrollTop,o.style.minWidth=u?this.table.columnManager.getWidth()+"px":"",this.table.options.groupBy&&"fitDataFill"!=this.table.modules.layout.getMode()&&this.displayRowsCount==this.table.modules.groupRows.countGroups()&&(this.tableElement.style.minWidth=this.table.columnManager.getWidth())}else this.renderEmptyScroll()},r.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,n=this.scrollTop-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer;if(-t>o||n>o){var r=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(r)}else e?(t<0&&this._addTopRow(-t),n<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-n)):(t>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(t),n>=0&&this._addBottomRow(n))},r.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomTop){var r=this.vDomTop-1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.insertBefore(i.getElement(),n.firstChild),i.initialized&&i.heightInitialized||(this.vDomTopNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomTopPad-=a,this.vDomTopPad<0&&(this.vDomTopPad=r*this.vDomRowHeight),r||(this.vDomTopPad=0),n.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=a,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(o[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},r.prototype._removeTopRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomTop],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode.removeChild(r),this.vDomTopPad+=o,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?o:o+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},r.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var r=this.vDomBottom+1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.appendChild(i.getElement()),i.initialized&&i.heightInitialized||(this.vDomBottomNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomBottomPad-=a,(this.vDomBottomPad<0||r==this.displayRowsCount-1)&&(this.vDomBottomPad=0),n.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=a,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(o[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},r.prototype._removeBottomRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomBottom],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode&&r.parentNode.removeChild(r),this.vDomBottomPad+=o,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=o,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},r.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},r.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},r.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var e=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+e+"px)",this.element.style.height="calc(100% - "+e+"px)",this.element.style.maxHeight="calc(100% - "+e+"px)"}},r.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},r.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==self.renderMode?self.table.options.groupBy?self.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},r.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var i=function(e){this._row=e};i.prototype.getData=function(e){return this._row.getData(e)},i.prototype.getElement=function(){return this._row.getElement()},i.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},i.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},i.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},i.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},i.prototype.delete=function(){return this._row.delete()},i.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},i.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},i.prototype.move=function(e,t){this._row.moveToRow(e,t)},i.prototype.update=function(e){return this._row.updateData(e)},i.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},i.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},i.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},i.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},i.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},i.prototype._getSelf=function(){return this._row},i.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},i.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},i.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},i.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},i.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},i.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},i.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},i.prototype.reformat=function(){return this._row.reinitialize()},i.prototype.getGroup=function(){return this._row.getGroup().getComponent()},i.prototype.getTable=function(){return this._row.table},i.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},i.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var a=function(e,t){this.table=t.table,this.parent=t,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(e),this.generateElement()};a.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},a.prototype.getElement=function(){return this.element},a.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.generateElement=function(){var e,t,n,o=this;!1!==o.table.options.selectable&&o.table.modExists("selectRow")&&o.table.modules.selectRow.initializeRow(this),!1!==o.table.options.movableRows&&o.table.modExists("moveRow")&&o.table.modules.moveRow.initializeRow(this),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.initializeRow(this),o.table.options.rowClick&&o.element.addEventListener("click",function(e){o.table.options.rowClick(e,o.getComponent())}),o.table.options.rowDblClick&&o.element.addEventListener("dblclick",function(e){o.table.options.rowDblClick(e,o.getComponent())}),o.table.options.rowContext&&o.element.addEventListener("contextmenu",function(e){o.table.options.rowContext(e,o.getComponent())}),o.table.options.rowMouseEnter&&o.element.addEventListener("mouseenter",function(e){o.table.options.rowMouseEnter(e,o.getComponent())}),o.table.options.rowMouseLeave&&o.element.addEventListener("mouseleave",function(e){o.table.options.rowMouseLeave(e,o.getComponent())}),o.table.options.rowMouseOver&&o.element.addEventListener("mouseover",function(e){o.table.options.rowMouseOver(e,o.getComponent())}),o.table.options.rowMouseOut&&o.element.addEventListener("mouseout",function(e){o.table.options.rowMouseOut(e,o.getComponent())}),o.table.options.rowMouseMove&&o.element.addEventListener("mousemove",function(e){o.table.options.rowMouseMove(e,o.getComponent())}),o.table.options.rowTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.table.options.rowTap(e,o.getComponent()),n=!1})),o.table.options.rowDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.table.options.rowDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.table.options.rowTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.table.options.rowTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},a.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},a.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},a.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},a.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},a.prototype.calcHeight=function(e){var t=0,n=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var n=e.getHeight();n>t&&(t=n)}),this.height=e?Math.max(t,n):this.manualHeight?this.height:Math.max(t,n),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},a.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},a.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},a.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},a.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},a.prototype.getHeight=function(){return this.outerHeight},a.prototype.getWidth=function(){return this.element.offsetWidth},a.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},a.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},a.prototype.updateData=function(e){var t=this,n=this,o=d.prototype.helpers.elVisible(this.element);return new Promise(function(r,i){for(var a in"string"==typeof e&&(e=JSON.parse(e)),t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.block(),n.table.modExists("mutator")&&(e=n.table.modules.mutator.transformRow(e,"data",!0)),e)n.data[a]=e[a];for(var a in t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.unblock(),e){var s=t.getCell(a);s&&s.getValue()!=e[a]&&(s.setValueProcessData(e[a]),o&&s.cellRendered())}o?(n.normalizeHeight(),n.table.options.rowFormatter&&n.table.options.rowFormatter(n.getComponent())):(t.initialized=!1,t.height=0,t.heightStyled=""),!1!==n.table.options.dataTree&&n.table.modExists("dataTree")&&void 0!==e[t.table.modules.dataTree.getChildField()]&&(t.table.modules.dataTree.initializeRow(t),t.table.rowManager.refreshActiveData("tree",!1,!0)),n.table.options.rowUpdated.call(t.table,n.getComponent()),r()})},a.prototype.getData=function(e){return e?this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this.data,e):void 0:this.data},a.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},a.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},a.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var n=e+1;n<this.cells.length;n++){var o=this.cells[n];if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())){var r=!0;if("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r){t=o;break}}}return t},a.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var n=e-1;n>=0;n--){var o=this.cells[n],r=!0;if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r)){t=o;break}}return t},a.prototype.getCells=function(){return this.cells},a.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},a.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},a.prototype.moveToRow=function(e,t){var n=this.table.rowManager.findRow(e);n?(this.table.rowManager.moveRowActual(this,n,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},a.prototype.delete=function(){var e=this;return new Promise(function(t,n){var o=e.table.rowManager.getRowIndex(e);e.deleteActual(),e.table.options.history&&e.table.modExists("history")&&(o&&(o=e.table.rowManager.rows[o-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!o,index:o})),t()})},a.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},a.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},a.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.getGroup=function(){return this.modules.group||!1},a.prototype.getComponent=function(){return new i(this)};var l=function(e){this._cell=e};l.prototype.getValue=function(){return this._cell.getValue()},l.prototype.getOldValue=function(){return this._cell.getOldValue()},l.prototype.getElement=function(){return this._cell.getElement()},l.prototype.getRow=function(){return this._cell.row.getComponent()},l.prototype.getData=function(){return this._cell.row.getData()},l.prototype.getField=function(){return this._cell.column.getField()},l.prototype.getColumn=function(){return this._cell.column.getComponent()},l.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},l.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},l.prototype.edit=function(e){return this._cell.edit(e)},l.prototype.cancelEdit=function(){this._cell.cancelEdit()},l.prototype.nav=function(){return this._cell.nav()},l.prototype.checkHeight=function(){this._cell.checkHeight()},l.prototype.getTable=function(){return this._cell.table},l.prototype._getSelf=function(){return this._cell};var u=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};u.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},u.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},u.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,n=e.element,o=this.column.getField();(n.style.textAlign=e.column.hozAlign,o&&n.setAttribute("tabulator-field",o),e.column.definition.cssClass)&&e.column.definition.cssClass.split(" ").forEach(function(e){n.classList.add(e)});"hover"===this.table.options.tooltipGenerationMode&&n.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},u.prototype._bindClickEvents=function(e){var t=this,n=t.element;(e.cellClick||t.table.options.cellClick)&&n.addEventListener("click",function(n){var o=t.getComponent();e.cellClick&&e.cellClick.call(t.table,n,o),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,n,o)}),e.cellDblClick||this.table.options.cellDblClick?n.addEventListener("dblclick",function(n){var o=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,n,o),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,n,o)}):n.addEventListener("dblclick",function(e){if(e.preventDefault(),document.selection)(n=document.body.createTextRange()).moveToElementText(t.element),n.select();else if(window.getSelection){var n;(n=document.createRange()).selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(n)}}),(e.cellContext||this.table.options.cellContext)&&n.addEventListener("contextmenu",function(n){var o=t.getComponent();e.cellContext&&e.cellContext.call(t.table,n,o),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,n,o)})},u.prototype._bindMouseEvents=function(e){var t=this,n=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&n.addEventListener("mouseenter",function(n){var o=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,n,o),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,n,o)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&n.addEventListener("mouseleave",function(n){var o=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,n,o),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,n,o)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&n.addEventListener("mouseover",function(n){var o=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,n,o),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,n,o)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&n.addEventListener("mouseout",function(n){var o=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,n,o),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,n,o)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&n.addEventListener("mousemove",function(n){var o=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,n,o),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,n,o)})},u.prototype._bindTouchEvents=function(e){var t,n,o,r=this,i=r.element;(e.cellTap||this.table.options.cellTap)&&(o=!1,i.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.addEventListener("touchend",function(t){if(o){var n=r.getComponent();e.cellTap&&e.cellTap.call(r.table,t,n),r.table.options.cellTap&&r.table.options.cellTap.call(r.table,t,n)}o=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,i.addEventListener("touchend",function(n){if(t){clearTimeout(t),t=null;var o=r.getComponent();e.cellDblTap&&e.cellDblTap.call(r.table,n,o),r.table.options.cellDblTap&&r.table.options.cellDblTap.call(r.table,n,o)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(n=null,i.addEventListener("touchstart",function(t){clearTimeout(n),n=setTimeout(function(){clearTimeout(n),n=null,o=!1;var i=r.getComponent();e.cellTapHold&&e.cellTapHold.call(r.table,t,i),r.table.options.cellTapHold&&r.table.options.cellTapHold.call(r.table,t,i)},1e3)},{passive:!0}),i.addEventListener("touchend",function(e){clearTimeout(n),n=null}))},u.prototype._generateContents=function(){var e;switch(void 0===(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value)?"undefined":s(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},u.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},u.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},u.prototype.getElement=function(){return this.element},u.prototype.getValue=function(){return this.value},u.prototype.getOldValue=function(){return this.oldValue},u.prototype.setValue=function(e,t){var n;this.setValueProcessData(e,t)&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),n=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,n),this.table.options.cellEdited.call(this.table,n),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},u.prototype.setValueProcessData=function(e,t){var n=!1;return this.value!=e&&(n=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),n&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),n},u.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},u.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},u.prototype.clearWidth=function(){this.width="",this.element.style.width=""},u.prototype.getWidth=function(){return this.width||this.element.offsetWidth},u.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},u.prototype.checkHeight=function(){this.row.reinitializeHeight()},u.prototype.clearHeight=function(){this.element.style.height="",this.height=null},u.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},u.prototype.getHeight=function(){return this.height||this.element.offsetHeight},u.prototype.show=function(){this.element.style.display=""},u.prototype.hide=function(){this.element.style.display="none"},u.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},u.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},u.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},u.prototype.nav=function(){var e=this,t=!1,n=this.row.getCellIndex(this);return{next:function(){var t,n=this.right();return!!n||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(n=t.findNextEditableCell(-1)))&&(n.edit(),!0)},prev:function(){var t,n=this.left();return!!n||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(n=t.findPrevEditableCell(t.cells.length)))&&(n.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(n))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(n))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[n].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[n].edit()}}},u.prototype.getIndex=function(){this.row.getCellIndex(this)},u.prototype.getComponent=function(){return new l(this)};var c=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},c.prototype._initialize=function(e){if(this.table.options.footerElement)switch(s(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},c.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},c.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var d=function e(t,n){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(t),this.initializeOptions(n||{}),this._create(),e.prototype.comms.register(this)};d.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,footerElement:!1,index:"id",keybindings:[],clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},d.prototype.initializeOptions=function(e){for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t);for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===s(this.defaultOptions[t])?this.options[t]={}:this.options[t]=this.defaultOptions[t]},d.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},d.prototype._mapDepricatedFunctionality=function(){},d.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},d.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new r(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},d.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},d.prototype._buildElement=function(){var e=this,t=this.element,n=this.modules,o=this.options;for(o.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);for(var r in o.height&&(o.height=isNaN(o.height)?o.height:o.height+"px",t.style.height=o.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&n.layout.initialize(o.layout),!1!==o.headerFilterPlaceholder&&n.localize.setHeaderFilterPlaceholder(o.headerFilterPlaceholder),o.langs)n.localize.installLang(r,o.langs[r]);if(n.localize.setLocale(o.locale),"string"==typeof o.placeholder){var i=document.createElement("div");i.classList.add("tabulator-placeholder");var a=document.createElement("span");a.innerHTML=o.placeholder,i.appendChild(a),o.placeholder=i}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),o.footerElement&&this.footerManager.activate(),(o.persistentLayout||o.persistentSort||o.persistentFilter)&&this.modExists("persistence",!0)&&n.persistence.initialize(o.persistenceMode,o.persistenceID),o.persistentLayout&&this.modExists("persistence",!0)&&(o.columns=n.persistence.load("columns",o.columns)),o.movableRows&&this.modExists("moveRow")&&n.moveRow.initialize(),o.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&n.columnCalcs.initialize(),this.columnManager.setColumns(o.columns),o.dataTree&&this.modExists("dataTree",!0)&&n.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(o.persistentSort||o.initialSort)&&this.modExists("sort",!0)){var s=[];o.persistentSort&&this.modExists("persistence",!0)?!1===(s=n.persistence.load("sort"))&&o.initialSort&&(s=o.initialSort):o.initialSort&&(s=o.initialSort),n.sort.setSort(s)}if((o.persistentFilter||o.initialFilter)&&this.modExists("filter",!0)){var l=[];o.persistentFilter&&this.modExists("persistence",!0)?!1===(l=n.persistence.load("filter"))&&o.initialFilter&&(l=o.initialFilter):o.initialFilter&&(l=o.initialFilter),n.filter.setFilter(l)}o.initialHeaderFilter&&this.modExists("filter",!0)&&o.initialHeaderFilter.forEach(function(t){var o=e.columnManager.findColumn(t.field);if(!o)return console.warn("Column Filter Error - No matching column found:",t.field),!1;n.filter.setHeaderFilterValue(o,t.value)}),this.modExists("ajax")&&n.ajax.initialize(),o.pagination&&this.modExists("page",!0)&&n.page.initialize(),o.groupBy&&this.modExists("groupRows",!0)&&n.groupRows.initialize(),this.modExists("keybindings")&&n.keybindings.initialize(),this.modExists("selectRow")&&n.selectRow.clearSelectionData(!0),o.autoResize&&this.modExists("resizeTable")&&n.resizeTable.initialize(),this.modExists("clipboard")&&n.clipboard.initialize(),o.printAsHtml&&this.modExists("print")&&n.print.initialize(),o.tableBuilt.call(this)},d.prototype._loadInitialData=function(){this.options.pagination&&this.modExists("page")?(this.modules.page.reset(!0),"local"==this.options.pagination?this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data):this.options.ajaxURL?this.modules.page.setPage(1).then(function(){}).catch(function(){}):this.rowManager.setData([])):this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data)},d.prototype.destroy=function(){var e=this.element;for(d.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},d.prototype._detectBrowser=function(){var e=navigator.userAgent;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},d.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(n,o){var r=document.createElement("input");r.type="file",r.accept=e||".json,application/json",r.addEventListener("change",function(e){var i,a=r.files[0],s=new FileReader;s.readAsText(a),s.onload=function(e){try{i=JSON.parse(s.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void o(e)}t._setData(i).then(function(e){n(e)}).catch(function(e){n(e)})},s.onerror=function(e){console.warn("File Load Error - Unable to read file"),o()}}),r.click()})},d.prototype.setData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n)},d.prototype._setData=function(e,t,n,o){return"string"!=typeof e?e?this.rowManager.setData(e,o):this.modExists("ajax")&&(this.modules.ajax.getUrl||this.options.ajaxURLGenerator)?"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o):this.rowManager.setData([],o):0==e.indexOf("{")||0==e.indexOf("[")?this.rowManager.setData(JSON.parse(e),o):this.modExists("ajax",!0)?(t&&this.modules.ajax.setParams(t),n&&this.modules.ajax.setConfig(n),this.modules.ajax.setUrl(e),"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o)):void 0},d.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},d.prototype.getData=function(e){return this.rowManager.getData(e)},d.prototype.getDataCount=function(e){return this.rowManager.getDataCount(e)},d.prototype.searchRows=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,n)},d.prototype.searchData=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,n)},d.prototype.getHtml=function(e,t,n){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(e,t,n)},d.prototype.print=function(e,t,n){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,n)},d.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},d.prototype.replaceData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n,!0)},d.prototype.updateData=function(e){var t=this,n=this,o=0;return new Promise(function(r,i){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);t&&(o++,t.updateData(e).then(function(){--o||r()}))}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.addData=function(e,t,n){var o=this;return new Promise(function(r,i){o.modExists("ajax")&&o.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?o.rowManager.addRows(e,t,n).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),r(t)}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.updateOrAddData=function(e){var t=this,n=this,o=[],r=0;return new Promise(function(i,a){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);r++,t?t.updateData(e).then(function(){r--,o.push(t.getComponent()),r||i(o)}):n.rowManager.addRows(e).then(function(e){r--,o.push(e[0].getComponent()),r||i(o)})}):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))})},d.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.getRowFromPosition=function(e,t){var n=this.rowManager.getRowFromPosition(e,t);return n?n.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.deleteRow=function(e){var t=this;return new Promise(function(n,o){var r=t.rowManager.findRow(e);r?r.delete().then(function(){n()}).catch(function(e){o(e)}):(console.warn("Delete Error - No matching row found:",e),o("Delete Error - No matching row found"))})},d.prototype.addRow=function(e,t,n){var o=this;return new Promise(function(r,i){"string"==typeof e&&(e=JSON.parse(e)),o.rowManager.addRows(e,t,n).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),r(e[0].getComponent())})})},d.prototype.updateOrAddRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(i.getComponent())}).catch(function(e){r(e)}):i=n.rowManager.addRows(t).then(function(e){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(e[0].getComponent())}).catch(function(e){r(e)})})},d.prototype.updateRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){o(i.getComponent())}).catch(function(e){r(e)}):(console.warn("Update Error - No matching row found:",e),r("Update Error - No matching row found"))})},d.prototype.scrollToRow=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.rowManager.findRow(e);a?o.rowManager.scrollToRow(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching row found:",e),i("Scroll Error - No matching row found"))})},d.prototype.moveRow=function(e,t,n){var o=this.rowManager.findRow(e);o?o.moveToRow(t,n):console.warn("Move Error - No matching row found:",e)},d.prototype.getRows=function(e){return this.rowManager.getComponents(e)},d.prototype.getRowPosition=function(e,t){var n=this.rowManager.findRow(e);return n?this.rowManager.getRowPosition(n,t):(console.warn("Position Error - No matching row found:",e),!1)},d.prototype.copyToClipboard=function(e,t,n,o){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e,t,n,o)},d.prototype.setColumns=function(e){this.columnManager.setColumns(e)},d.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},d.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},d.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},d.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},d.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},d.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},d.prototype.addColumn=function(e,t,n){var o=this.columnManager.findColumn(n);this.columnManager.addColumn(e,t,o)},d.prototype.deleteColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Delete Error - No matching column found:",e),!1;t.delete()},d.prototype.scrollToColumn=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.columnManager.findColumn(e);a?o.columnManager.scrollToColumn(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching column found:",e),i("Scroll Error - No matching column found"))})},d.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},d.prototype.getLocale=function(){return this.modules.localize.getLocale()},d.prototype.getLang=function(e){return this.modules.localize.getLang(e)},d.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},d.prototype.setHeight=function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.redraw()},d.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},d.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},d.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},d.prototype.setFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.addFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},d.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},d.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var n=this.columnManager.findColumn(e);if(!n)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(n,t)}},d.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},d.prototype.removeFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},d.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},d.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(e)},d.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},d.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},d.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},d.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},d.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},d.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},d.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){t.options.pagination&&t.modExists("page")&&(e=t.rowManager.findRow(e))?t.modules.page.setPageToRow(e).then(function(){n()}).catch(function(){o()}):o()})},d.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},d.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},d.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},d.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},d.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},d.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},d.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},d.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},d.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},d.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},d.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},d.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},d.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},d.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},d.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},d.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},d.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},d.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},d.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},d.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},d.prototype.download=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n)},d.prototype.downloadToTab=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n,!0)},d.prototype.tableComms=function(e,t,n,o){this.modules.comms.receive(e,t,n,o)},d.prototype.moduleBindings={},d.prototype.extendModule=function(e,t,n){if(d.prototype.moduleBindings[e]){var o=d.prototype.moduleBindings[e].prototype[t];if(o)if("object"==(void 0===n?"undefined":s(n)))for(var r in n)o[r]=n[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},d.prototype.registerModule=function(e,t){d.prototype.moduleBindings[e]=t},d.prototype.bindModules=function(){for(var e in this.modules={},d.prototype.moduleBindings)this.modules[e]=new d.prototype.moduleBindings[e](this)},d.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},d.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var n in e)null!=e[n]&&"object"===s(e[n])?e[n]instanceof Date?t[n]=new Date(e[n]):t[n]=this.deepClone(e[n]):t[n]=e[n];return t}},d.prototype.comms={tables:[],register:function(e){d.prototype.comms.tables.push(e)},deregister:function(e){var t=d.prototype.comms.tables.indexOf(e);t>-1&&d.prototype.comms.tables.splice(t,1)},lookupTable:function(e){var t,n,o=[];if("string"==typeof e){if((t=document.querySelectorAll(e)).length)for(var r=0;r<t.length;r++)(n=d.prototype.comms.matchElement(t[r]))&&o.push(n)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof d?(n=d.prototype.comms.matchElement(e))&&o.push(n):Array.isArray(e)?e.forEach(function(e){o=o.concat(d.prototype.comms.lookupTable(e))}):console.warn("Table Connection Error - Invalid Selector",e);return o},matchElement:function(e){return d.prototype.comms.tables.find(function(t){return e instanceof d?t===e:t.element===e})}};var p=function(e){this.table=e,this.mode=null};p.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},p.prototype.getMode=function(){return this.mode},p.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},p.prototype.modes={fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,n,o=this.table.element.clientWidth,r=0,i=0,a=0,s=[],l=[],u=0,c=0;function d(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function p(e,t,n,o){var r=[],i=0,a=0,s=0,l=0,u=0,c=[];function h(e){return n*(e.column.definition.widthGrow||1)}function f(e){return d(e.width)-n*(e.column.definition.widthShrink||0)}return e.forEach(function(e,t){var n=o?f(e):h(e);e.column.minWidth>=n?r.push(e):(c.push(e),u+=o?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),r.length?(r.forEach(function(e){i+=o?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),l=(a=t-i)-(s=u?Math.floor(a/u):a)*u,l+=p(c,a,s,o)):(l=u?t-Math.floor(t/u)*u:t,c.forEach(function(e){e.width=o?f(e):h(e)})),l}this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var t,n,o;e.visible&&(t=e.definition.width,n=parseInt(e.minWidth),t?(o=d(t),r+=o>n?o:n,e.definition.widthShrink&&(l.push({column:e,width:o>n?o:n}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),i=o-r,t=Math.floor(i/a);c=p(s,i,t,!1);s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach(function(e){i-=e.width}),(n=Math.abs(c)+i)>0&&u&&(c=p(l,n,Math.floor(n/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach(function(e){e.column.setWidth(e.width)}),l.forEach(function(e){e.column.setWidth(e.width)})}},d.prototype.registerModule("layout",p);var h=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},h.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},h.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},h.prototype._setLangProp=function(e,t){for(var n in t)e[n]&&"object"==s(e[n])?this._setLangProp(e[n],t[n]):e[n]=t[n]},h.prototype.setLocale=function(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langs[e]){var t=e.split("-")[0];this.langs[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=d.prototype.helpers.deepClone(this.langs.default||{}),"default"!=e&&function e(t,n){for(var o in t)"object"==s(t[o])?(n[o]||(n[o]={}),e(t[o],n[o])):n[o]=t[o]}(this.langs[e],this.lang),this.table.options.localized.call(this.table,this.locale,this.lang),this._executeBindings()},h.prototype.getLocale=function(e){return self.locale},h.prototype.getLang=function(e){return e?this.langs[e]:this.lang},h.prototype.getText=function(e,t){var n=(e=t?e+"|"+t:e).split("|");return this._getLangElement(n,this.locale)||""},h.prototype._getLangElement=function(e,t){var n=this.lang;return e.forEach(function(e){var t;n&&(t=n[e],n=void 0!==t&&t)}),n},h.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},h.prototype._executeBindings=function(){var e=this,t=function(t){e.bindings[t].forEach(function(n){n(e.getText(t),e.lang)})};for(var n in e.bindings)t(n)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},d.prototype.registerModule("localize",h);var f=function(e){this.table=e};f.prototype.getConnections=function(e){var t=this,n=[];return d.prototype.comms.lookupTable(e).forEach(function(e){t.table!==e&&n.push(e)}),n},f.prototype.send=function(e,t,n,o){var r=this,i=this.getConnections(e);i.forEach(function(e){e.tableComms(r.table.element,t,n,o)}),!i.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},f.prototype.receive=function(e,t,n,o){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,n,o);console.warn("Inter-table Comms Error - no such module:",t)},d.prototype.registerModule("comms",f);var m=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="accessor"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupAccessor(e.definition[a]))&&(n=!0,o[a]={accessor:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.accessor=o)},m.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},m.prototype.transformRow=function(e,t){var n="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),o=d.prototype.helpers.deepClone(e||{});return this.table.columnManager.traverse(function(e){var r,i,a,s;e.modules.accessor&&(i=e.modules.accessor[n]||e.modules.accessor.accessor||!1)&&"undefined"!=(r=e.getFieldValue(o))&&(s=e.getComponent(),a="function"==typeof i.params?i.params(r,o,t,s):i.params,e.setFieldValue(o,i.accessor(r,o,t,a,s)))}),o},m.prototype.accessors={},d.prototype.registerModule("accessor",m);var g=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};g.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},g.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},g.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},g.prototype.setParams=function(e,t){if(t)for(var n in this.params=this.params||{},e)this.params[n]=e[n];else this.params=e},g.prototype.getParams=function(){return this.params||{}},g.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},g.prototype._loadDefaultConfig=function(e){if(!this.config||e)for(var t in this.config={},this.defaultConfig)this.config[t]=this.defaultConfig[t]},g.prototype.setUrl=function(e){this.url=e},g.prototype.getUrl=function(){return this.url},g.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},g.prototype.nextPage=function(e){this.loading||e<(this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight)&&this.table.modules.page.nextPage().then(function(){}).catch(function(){})},g.prototype.blockActiveRequest=function(){this.requestOrder++},g.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},g.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(n,o){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){n()}).catch(function(e){o(e)})}).catch(function(e){o(e)})})},g.prototype.generateParamsList=function(e,t){var n=this,o=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){o=o.concat(n.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":s(e)))for(var r in e)o=o.concat(n.generateParamsList(e[r],t?t+"["+r+"]":r));else o.push({key:t,value:e});return o},g.prototype.serializeParams=function(e){var t=this.generateParamsList(e),n=[];return t.forEach(function(e){n.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),n.join("&")},g.prototype.sendRequest=function(e){var t,n=this,o=this,r=o.url;return o.requestOrder++,t=o.requestOrder,o._loadDefaultConfig(),new Promise(function(i,a){!1!==o.table.options.ajaxRequesting.call(n.table,o.url,o.params)?(o.loading=!0,e||o.showLoader(),n.loaderPromise(r,o.config,o.params).then(function(e){t===o.requestOrder?(o.table.options.ajaxResponse&&(e=o.table.options.ajaxResponse.call(o.table,o.url,o.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),o.hideLoader(),o.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),o.table.options.ajaxError.call(o.table,e),o.showError(),setTimeout(function(){o.hideLoader()},3e3),o.loading=!1,a()})):a()})},g.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},g.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},g.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},g.prototype.defaultConfig={method:"GET"},g.prototype.defaultURLGenerator=function(e,t,n){return e&&n&&Object.keys(n).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(n))),e},g.prototype.defaultLoaderPromise=function(e,t,n){var o,r=this;return new Promise(function(i,a){if(e=r.urlGenerator(e,t,n),"GET"!=t.method.toUpperCase())if(o="object"===s(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var l in o.headers)t.headers||(t.headers={}),void 0===t.headers[l]&&(t.headers[l]=o.headers[l]);t.body=o.body.call(r,e,t,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){a(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),a(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),a(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},g.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,n){return JSON.stringify(n)}},form:{headers:{},body:function(e,t,n){var o=this.generateParamsList(n),r=new FormData;return o.forEach(function(e){r.append(e.key,e.value)}),r}}},d.prototype.registerModule("ajax",g);var v=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};v.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},v.prototype.initialize=function(){this.genColumn=new o({field:"value"},this)},v.prototype.registerColumnField=function(){},v.prototype.initializeColumn=function(e){var t=e.definition,n={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(s(t.topCalc)){case"string":this.calculations[t.topCalc]?n.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":n.topCalc=t.topCalc}n.topCalc&&(e.modules.columnCalcs=n,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(s(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?n.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":n.botCalc=t.bottomCalc}n.botCalc&&(e.modules.columnCalcs=n,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},v.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},v.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},v.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},v.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},v.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},v.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},v.prototype.recalcGroup=function(e){var t,n;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),n=this.generateRowData("bottom",t),e.calcs.bottom.updateData(n),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),n=this.generateRowData("top",t),e.calcs.top.updateData(n),e.calcs.top.reinitialize()))},v.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},v.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},v.prototype.rowsToData=function(e){var t=[];return e.forEach(function(e){t.push(e.getData())}),t},v.prototype.generateRow=function(e,t){var n,o=this,r=this.generateRowData(e,t);return o.table.modExists("mutator")&&o.table.modules.mutator.disable(),n=new a(r,this),o.table.modExists("mutator")&&o.table.modules.mutator.enable(),n.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),n.type="calc",n.generateCells=function(){var t=[];o.table.columnManager.columnsByIndex.forEach(function(r){o.genColumn.setField(r.getField()),o.genColumn.hozAlign=r.hozAlign,r.definition[e+"CalcFormatter"]&&o.table.modExists("format")?o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter(r.definition[e+"CalcFormatter"]),params:r.definition[e+"CalcFormatterParams"]}:o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter("plaintext"),params:{}},o.genColumn.definition.cssClass=r.definition.cssClass;var i=new u(o.genColumn,n);i.column=r,i.setWidth(),r.cells.push(i),t.push(i),r.visible||i.hide()}),this.cells=t},n},v.prototype.generateRowData=function(e,t){var n,o,r={},i="top"==e?this.topCalcs:this.botCalcs,a="top"==e?"topCalc":"botCalc";return i.forEach(function(e){var i=[];e.modules.columnCalcs&&e.modules.columnCalcs[a]&&(t.forEach(function(t){i.push(e.getFieldValue(t))}),o=a+"Params",n="function"==typeof e.modules.columnCalcs[o]?e.modules.columnCalcs[o](i,t):e.modules.columnCalcs[o],e.setFieldValue(r,e.modules.columnCalcs[a](i,t,n)))}),r},v.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},v.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},v.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},v.prototype.getResults=function(){var e=this,t={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach(function(n){t[n.getKey()]=e.getGroupResults(n)}):t={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},t},v.prototype.getGroupResults=function(e){var t=this,n=e._getSelf(),o=e.getSubGroups(),r={};return o.forEach(function(e){r[e.getKey()]=t.getGroupResults(e)}),{top:n.calcs.top?n.calcs.top.getData():{},bottom:n.calcs.bottom?n.calcs.bottom.getData():{},groups:r}},v.prototype.calculations={avg:function(e,t,n){var o=0,r=void 0!==n.precision?n.precision:2;return e.length&&(o=e.reduce(function(e,t){return e+(t=Number(t))}),o/=e.length,o=!1!==r?o.toFixed(r):o),parseFloat(o).toString()},max:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))>o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},min:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))<o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},sum:function(e,t,n){var o=0,r=void 0!==n.precision&&n.precision;return e.length&&e.forEach(function(e){e=Number(e),o+=isNaN(e)?0:Number(e)}),!1!==r?o.toFixed(r):o},concat:function(e,t,n){var o=0;return e.length&&(o=e.reduce(function(e,t){return String(e)+String(t)})),o},count:function(e,t,n){var o=0;return e.length&&e.forEach(function(e){e&&o++}),o}},d.prototype.registerModule("columnCalcs",v);var y=function(e){this.table=e,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};y.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var n;e.processConfig(),e.blocked||(t.preventDefault(),n=e.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",n):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",n),e.htmlElement&&t.clipboardData.setData("text/html",e.htmlElement.outerHTML)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",n),e.htmlElement&&t.originalEvent.clipboardData.setData("text/html",e.htmlElement.outerHTML)),e.table.options.clipboardCopied.call(this.table,n),e.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},y.prototype.processConfig=function(){var e={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(e.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var t in this.table.options.clipboardCopyConfig)e[t]=this.table.options.clipboardCopyConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnHeaders?"groups"!==e.columnHeaders&&!0!==e||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},y.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},y.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},y.prototype.paste=function(e){var t,n,o;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(n=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(n=this.mutateData(n)),o=this.pasteAction.call(this,n),this.table.options.clipboardPasted.call(this.table,t,n,o)):this.table.options.clipboardPasteError.call(this.table,t))},y.prototype.mutateData=function(e){var t=this,n=[];return Array.isArray(e)?e.forEach(function(e){n.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):n=e,n},y.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},y.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},y.prototype.copy=function(e,t,n,o,r){var i,a,s;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?((i=document.createRange()).selectNodeContents(this.table.element),(a=window.getSelection()).toString()&&r&&(e="userSelection",n="raw",t=a.toString()),a.removeAllRanges(),a.addRange(i)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),this.setSelector(e),this.copySelectorParams=void 0!==t&&null!=t?t:this.config.columnHeaders,this.setFormatter(n),this.copyFormatterParams=void 0!==o&&null!=o?o:{},document.execCommand("copy"),a&&a.removeAllRanges())},y.prototype.setSelector=function(e){switch(void 0===(e=e||this.table.options.clipboardCopySelector)?"undefined":s(e)){case"string":this.copySelectors[e]?this.copySelector=this.copySelectors[e]:console.warn("Clipboard Error - No such selector found:",e);break;case"function":this.copySelector=e}},y.prototype.setFormatter=function(e){switch(void 0===(e=e||this.table.options.clipboardCopyFormatter)?"undefined":s(e)){case"string":this.copyFormatters[e]?this.copyFormatter=this.copyFormatters[e]:console.warn("Clipboard Error - No such formatter found:",e);break;case"function":this.copyFormatter=e}},y.prototype.generateContent=function(){var e;return this.htmlElement=!1,e=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,e,this.config,this.copyFormatterParams)},y.prototype.generateSimpleHeaders=function(e){var t=[];return e.forEach(function(e){t.push(e.definition.title)}),t},y.prototype.generateColumnGroupHeaders=function(e){var t=this,n=[];return this.table.columnManager.columns.forEach(function(e){var o=t.processColumnGroup(e);o&&n.push(o)}),n},y.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o={type:"group",title:e.definition.title,column:e};if(n.length){if(o.subGroups=[],o.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(o.width+=n.width,o.subGroups.push(n))}),!o.width)return!1}else{if(!e.field||!e.visible)return!1;o.width=1}return o},y.prototype.groupHeadersToRows=function(e){var t=[];function n(e,o){var r;void 0===t[o]&&(t[o]=[]),t[o].push(e.title),e.subGroups?e.subGroups.forEach(function(e){n(e,o+1)}):(r=0,t.forEach(function(e){var t=e.length;t>r&&(r=t)}),t.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}))}return e.forEach(function(e){n(e,0)}),t},y.prototype.rowsToData=function(e,t,n){var o=this.table.columnManager.columnsByIndex,r=[];return e.forEach(function(e){var t=[],n=e instanceof i?e.getData("clipboard"):e;o.forEach(function(e){var o=e.getFieldValue(n);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push(o)}),r.push(t)}),r},y.prototype.buildComplexRows=function(e){var t=this,n=[];return this.table.modules.groupRows.getGroups().forEach(function(e){n.push(t.processGroupData(e))}),n},y.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getRows(!0),o},y.prototype.getCalcRow=function(e,t,n){var o=e[t];return o&&(n&&(o=o[n]),Object.keys(o).length)?this.rowsToData([o]):[]},y.prototype.buildOutput=function(e,t,n){var o,r=this,i=[],a=this.table.columnManager.columnsByIndex;return t.columnHeaders&&("groups"==t.columnHeaders?(a=this.generateColumnGroupHeaders(this.table.columnManager.columns),i=i.concat(this.groupHeadersToRows(a))):i.push(this.generateSimpleHeaders(a))),this.config.columnCalcs&&(o=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(e,a,o,t,n),t.rowGroups?e.forEach(function(e){i=i.concat(r.parseRowGroupData(e,t,n,o||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"top"))),i=i.concat(this.rowsToData(e,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"bottom")))),i},y.prototype.parseRowGroupData=function(e,t,n,o){var r=this,i=[];return i.push([e.key]),e.subGroups?e.subGroups.forEach(function(a){i=i.concat(r.parseRowGroupData(a,t,n,o[e.key]&&o[e.key].groups||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"top"))),i=i.concat(this.rowsToData(e.rows,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"bottom")))),i},y.prototype.generateHTML=function(e,t,n,o,r){var a,l,u,c,d,p,h,f,m,g=this,v=[];function y(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&b([o]))}function b(e){e.forEach(function(e,n){var o,r=document.createElement("tr"),h=d,f=!1;e instanceof i?o=e.getData("clipboard"):(o=e,f=!0),t.forEach(function(e,n){var i=document.createElement("td"),a=e.getFieldValue(o);switch(void 0===a?"undefined":s(a)){case"object":a=JSON.stringify(a);break;case"undefined":case"null":a="";break;default:a=a}i.innerHTML=a,e.definition.align&&(i.style.textAlign=e.definition.align),t.length,p&&g.mapElementStyles(p,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),r.appendChild(i)}),f?h=c:(n%2||!l||(h=l),n%2&&u&&(h=u)),h&&g.mapElementStyles(h,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),a.appendChild(r)})}this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),o.columnHeaders&&("groups"==o.columnHeaders?(t.forEach(function(e){!function e(t,n){void 0===v[n]&&(v[n]=[]),v[n].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}(e,0)}),v.forEach(function(e,t){e.forEach(function(e){e.children||(e.height=v.length-t)})}),function(e){var t=document.createElement("thead");e.forEach(function(e){var n=document.createElement("tr");e.forEach(function(e){var t=document.createElement("th");e.width>1&&(t.colSpan=e.width),e.height>1&&(t.rowSpan=e.height),t.innerHTML=e.title,g.mapElementStyles(e.element,t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(n)}),g.htmlElement.appendChild(t)}(v)):(m=document.createElement("tr"),t.forEach(function(e){var t=document.createElement("th");t.innerHTML=e.definition.title,g.mapElementStyles(e.getElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),m.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),m,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(m)))),t=this.table.columnManager.columnsByIndex,a=document.createElement("tbody"),window.getComputedStyle&&(l=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),c=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),d=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.getElementsByClassName("tabulator-group")[0],d&&(f=d.getElementsByClassName("tabulator-cell"),p=f[0],f[f.length-1])),o.rowGroups?e.forEach(function(e){!function e(n,r){var i=document.createElement("tr"),s=document.createElement("td");s.colSpan=t.length,s.innerHTML=n.key,i.appendChild(s),a.appendChild(i),g.mapElementStyles(h,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.subGroups?n.subGroups.forEach(function(t){e(t,r[n.key]&&r[n.key].groups||{})}):(o.columnCalcs&&y(r,n.key,"top"),b(n.rows),o.columnCalcs&&y(r,n.key,"bottom"))}(e,n||{})}):(o.columnCalcs&&y(n,"top"),b(e),o.columnCalcs&&y(n,"bottom")),this.htmlElement.appendChild(a)},y.prototype.mapElementStyles=function(e,t,n){var o={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}},y.prototype.copySelectors={userSelection:function(e,t){return t},selected:function(e,t){var n=[];return this.table.modExists("selectRow",!0)&&(n=this.table.modules.selectRow.getSelectedRows()),e.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(n,e,t)},table:function(e,t){return e.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),e,t)},active:function(e,t){var n;return n=e.rowGroups?this.buildComplexRows(e):this.table.rowManager.getComponents(!0),this.buildOutput(n,e,t)}},y.prototype.copyFormatters={raw:function(e,t){return e},table:function(e,t){var n=[];return e.forEach(function(e){e.forEach(function(e){void 0===e&&(e=""),(e=null==e?"":e.toString()).match(/\r|\n/)&&(e='"'+(e=e.split('"').join('""'))+'"')}),n.push(e.join("\t"))}),n.join("\n")}},y.prototype.pasteParsers={table:function(e){var t=[],n=!0,o=this.table.columnManager.columns,r=[],i=[];return(e=e.split("\n")).forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=o.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?r.push(t):n=!1}),n||(n=!0,r=[],t[0].forEach(function(e){var t=o.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?r.push(t):n=!1}),n||(r=this.table.columnManager.columnsByIndex)),n&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,n){r[n]&&(t[r[n].field]=e)}),i.push(t)}),i)}},y.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},d.prototype.registerModule("clipboard",y);var b=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};b.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),n=this.table.options;switch(this.field=n.dataTreeChildField,this.indent=n.dataTreeChildIndent,this.elementField=n.dataTreeElementColumn||!!t&&t.field,n.dataTreeBranchElement&&(!0===n.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof n.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=n.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=n.dataTreeBranchElement),n.dataTreeCollapseElement?"string"==typeof n.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=n.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=n.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),n.dataTreeExpandElement?"string"==typeof n.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=n.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=n.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),s(n.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return n.dataTreeStartExpanded};break;case"function":this.startOpen=n.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return n.dataTreeStartExpanded[t]}}},b.prototype.initializeRow=function(e){var t=e.getData()[this.field],n=Array.isArray(t),o=n||!n&&"object"===(void 0===t?"undefined":s(t))&&null!==t;e.modules.dataTree={index:0,open:!!o&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:o}},b.prototype.layoutRow=function(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,t),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(n.branchEl,t.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},b.prototype.generateControlElement=function(e,t){var n=this,o=e.modules.dataTree,r=(t=t||e.getCells()[0].getElement(),o.controlEl);!1!==o.children&&(o.open?(o.controlEl=this.collapseEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.collapseRow(e)})):(o.controlEl=this.expandEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.expandRow(e)})),o.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(o.controlEl,r):t.insertBefore(o.controlEl,t.firstChild))},b.prototype.setDisplayIndex=function(e){this.displayIndex=e},b.prototype.getDisplayIndex=function(){return this.displayIndex},b.prototype.getRows=function(e){var t=this,n=[];return e.forEach(function(e,o){var r;n.push(e),e instanceof a&&((r=e.modules.dataTree.children).index||!1===r.children||t.getChildren(e).forEach(function(e){n.push(e)}))}),n},b.prototype.getChildren=function(e){var t=this,n=e.modules.dataTree,o=[],r=[];return!1!==n.children&&n.open&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.modules.sort.sort(o),o.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},b.prototype.generateChildren=function(e){var t=this,n=[],o=e.getData()[this.field];return Array.isArray(o)||(o=[o]),o.forEach(function(o){var r=new a(o||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),n.push(r)}),n},b.prototype.expandRow=function(e,t){var n=e.modules.dataTree;!1!==n.children&&(n.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},b.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},b.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},b.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},b.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,n=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof a&&n.push(e.getComponent())})),n},b.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},b.prototype.getChildField=function(){return this.field},d.prototype.registerModule("dataTree",b);var w=function(e){this.table=e,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};w.prototype.download=function(e,t,n,o){var r=this,i=!1;this.processConfig(),"function"==typeof e?i=e:r.downloaders[e]?i=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),this.processColumns(),i&&i.call(this,r.processDefinitions(),r.processData(),n||{},function(n,i){o?!0===o?r.triggerDownload(n,i,e,t,!0):o(n):r.triggerDownload(n,i,e,t)},this.config)},w.prototype.processConfig=function(){var e={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)e[t]=this.table.options.downloadConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},w.prototype.processColumns=function(){var e=this;e.columnsByIndex=[],e.columnsByField={},e.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(e.columnsByIndex.push(t),e.columnsByField[t.field]=t)})},w.prototype.processDefinitions=function(){var e=this,t=[];return this.config.columnGroups?e.table.columnManager.columns.forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}):e.columnsByIndex.forEach(function(n){!1!==n.download&&t.push(e.processDefinition(n))}),t},w.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r=this.processDefinition(e),i={type:"group",title:r.title,depth:1};if(n.length){if(i.subGroups=[],i.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n.depth>o&&(o=n.depth),n&&(i.width+=n.width,i.subGroups.push(n))}),i.depth+=o,!i.width)return!1}else{if(!e.field||!1===e.definition.download||!(e.visible||!e.visible&&e.definition.download))return!1;i.width=1,i.definition=r}return i},w.prototype.processDefinition=function(e){var t={};for(var n in e.definition)t[n]=e.definition[n];return void 0!==e.definition.downloadTitle&&(t.title=e.definition.downloadTitle),t},w.prototype.processData=function(){var e=this,t=[],n={};return this.config.rowGroups?this.table.modules.groupRows.getGroups().forEach(function(n){t.push(e.processGroupData(n))}):t=this.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),t={calcs:n,data:t}),"function"==typeof this.table.options.downloadDataFormatter&&(t=this.table.options.downloadDataFormatter(t)),t},w.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getData(!0,"download"),o},w.prototype.triggerDownload=function(e,t,n,o,r){var i=document.createElement("a"),a=new Blob([e],{type:t});o=o||"Tabulator."+("function"==typeof n?"txt":n);(a=this.table.options.downloadReady.call(this.table,e,a))&&(r?window.open(window.URL.createObjectURL(a)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(a,o):(i.setAttribute("href",window.URL.createObjectURL(a)),i.setAttribute("download",o),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},w.prototype.getFieldValue=function(e,t){var n=this.columnsByField[e];return!!n&&n.getFieldValue(t)},w.prototype.commsReceived=function(e,t,n){switch(t){case"intercept":this.download(n.type,"",n.options,n.intercept)}},w.prototype.downloaders={csv:function(e,t,n,o,r){var i,a,l=this,u=[],c=[],d=n&&n.delimiter?n.delimiter:",";function p(e){e.forEach(function(e){var t=[];c.forEach(function(n){var o=l.getFieldValue(n,e);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push('"'+String(o).split('"').join('""')+'"')}),i.push(t.join(d))})}r.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),e.forEach(function(e){!function e(t,n){t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):(u.push('"'+String(t.title).split('"').join('""')+'"'),c.push(t.definition.field))}(e,0)})):e.forEach(function(e){u.push('"'+String(e.title).split('"').join('""')+'"'),c.push(e.field)}),i=[u.join(d)],r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),r.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(e){!function e(t){t.subGroups?t.subGroups.forEach(function(t){e(t)}):p(t.rows)}(e)})):p(t),a=i.join("\n"),n.bom&&(a="\ufeff"+a),o(a,"text/csv")},json:function(e,t,n,o,r){r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),o(JSON.stringify(t,null,"\t"),"application/json")},pdf:function(e,t,n,o,r){var i=this,a=[],l=[],u=[],c={},d=1,p={},h=n.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},f=n.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},m=n.jsPDF||{},g=n&&n.title?n.title:"";if(r.columnCalcs&&(c=t.calcs,t=t.data),m.orientation||(m.orientation=n.orientation||"landscape"),m.unit||(m.unit="pt"),r.columnGroups){e.forEach(function(e){e.depth>d&&(d=e.depth)});for(var v=0;v<d;v++)l.push([]);e.forEach(function(e){!function e(t,n){var o=t.width,r=1,i={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){e(t,n+1)}),r=1):(a.push(t.definition.field),r=d-n),i.rowSpan=r,l[n].push(i),o--,r>1)for(var s=n+1;s<d;s++)l[s].push("");for(s=0;s<o;s++)l[n].push("")}(e,0)})}else e.forEach(function(e){e.field&&(l.push(e.title||""),a.push(e.field))}),l=[l];function y(e){switch(void 0===e?"undefined":s(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}return e}function b(e){e.forEach(function(e){u.push(w(e))})}function w(e,t){var n=[];return a.forEach(function(o){var r=i.getFieldValue(o,e);r=y(r),t?n.push({content:r,styles:t}):n.push(r)}),n}function E(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&u.push(w(o,f)))}r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push({content:y(t.key),colSpan:a.length,styles:h}),u.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&E(n,t.key,"top"),b(t.rows),r.columnCalcs&&E(n,t.key,"bottom"))}(e,c)}):(r.columnCalcs&&E(c,"top"),b(t),r.columnCalcs&&E(c,"bottom"));var C=new jsPDF(m);n&&n.autoTable&&(p="function"==typeof n.autoTable?n.autoTable(C)||{}:n.autoTable),g&&(p.addPageContent=function(e){C.text(g,40,30)}),p.head=l,p.body=u,C.autoTable(p),n&&n.documentProcessing&&n.documentProcessing(C),o(C.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,n,o,r){var i=this,a=n.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},u={},c=[],d=[],p=[];function h(){var n=[],o=[],a=[];function l(e,t){var r;void 0===n[t]&&(n[t]=[]),void 0===d[t]&&(d[t]=[]),e.width>1&&d[t].push({type:"hoz",start:n[t].length,end:n[t].length+e.width-1}),n[t].push(e.title),e.subGroups?e.subGroups.forEach(function(e){l(e,t+1)}):(o.push(e.definition.field),o.length,r=0,n.forEach(function(e){var t=e.length;t>r&&(r=t)}),n.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}),d[t].push({type:"vert",start:o.length-1}))}function h(e){e.forEach(function(e){a.push(f(e))})}function f(e){var t=[];return o.forEach(function(n){var o=i.getFieldValue(n,e);t.push(o instanceof Date||"object"!==(void 0===o?"undefined":s(o))?o:JSON.stringify(o))}),t}function m(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&(p.push(a.length),a.push(f(o))))}return r.columnGroups?(e.forEach(function(e){l(e,0)}),n.forEach(function(e){a.push(e)})):(e.forEach(function(e){n.push(e.title),o.push(e.field)}),a.push(n)),r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push(t.key),c.push(a.length),a.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&m(n,t.key,"top"),h(t.rows),r.columnCalcs&&m(n,t.key,"bottom"))}(e,u)}):(r.columnCalcs&&m(u,"top"),h(t),r.columnCalcs&&m(u,"bottom")),function(){var e={},t={s:{c:0,r:0},e:{c:o.length,r:a.length}};XLSX.utils.sheet_add_aoa(e,a),e["!ref"]=XLSX.utils.encode_range(t);var r=function(){var e=[];return c.forEach(function(t){e.push({s:{r:t,c:0},e:{r:t,c:o.length-1}})}),d.forEach(function(t,o){t.forEach(function(t){"hoz"===t.type?e.push({s:{r:o,c:t.start},e:{r:o,c:t.end}}):o!=n.length-1&&e.push({s:{r:o,c:t.start},e:{r:n.length-1,c:t.start}})})}),e}();return r.length&&(e["!merges"]=r),e}()}if(r.columnCalcs&&(u=t.calcs,t=t.data),n.sheetOnly)o(h());else{if(n.sheets)for(var f in n.sheets)!0===n.sheets[f]?(l.SheetNames.push(f),l.Sheets[f]=h()):(l.SheetNames.push(f),this.table.modules.comms.send(n.sheets[f],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(e){l.Sheets[f]=e}}));else l.SheetNames.push(a),l.Sheets[a]=h();o(function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!=e.length;++o)n[o]=255&e.charCodeAt(o);return t}(XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}}},d.prototype.registerModule("download",w);var E=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};E.prototype.initializeColumn=function(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(s(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)},E.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},E.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,(e=t.getElement()).classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},E.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},E.prototype.bindEditor=function(e){var t=this,n=e.getElement();n.setAttribute("tabindex",0),n.addEventListener("click",function(e){n.classList.contains("tabulator-editing")||n.focus()}),n.addEventListener("mousedown",function(e){t.mouseClick=!0}),n.addEventListener("focus",function(n){t.recursionBlock||t.edit(e,n,!1)})},E.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},E.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},E.prototype.edit=function(e,t,n){var o,r,i,a=this,l=!0,u=function(){},c=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(t&&t.stopPropagation(),s(e.column.modules.edit.check)){case"function":l=e.column.modules.edit.check(e.getComponent());break;case"boolean":l=e.column.modules.edit.check}if(l||n){if(a.cancelEdit(),a.currentCell=e,r=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,r)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,r),a.table.options.cellEditing.call(this.table,r),i="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(r):e.column.modules.edit.params,!1===(o=e.column.modules.edit.editor.call(a,r,function(e){u=e},function(t){if(a.currentCell===e){var n=!0;e.column.modules.validate&&a.table.modExists("validate")&&(n=a.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===n?(a.clearEditor(),e.setValue(t,!0),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e)):(a.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),a.focusCellNoEvent(e),u(),a.table.options.validationFailed.call(a.table,e.getComponent(),t,n))}},function(){a.currentCell===e&&(a.cancelEdit(),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e))},i)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var d=c.children,p=0;p<d.length;p++)d[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,c.blur(),!1}this.invalidEdit||this.cancelEdit()},E.prototype.editors={input:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(e){null==i&&""!==a.value||a.value!=i?n(a.value):o()}return a.setAttribute("type",r.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=void 0!==i?i:"",t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:n(a.value);break;case 27:o()}}),a},textarea:function(e,t,n,o,r){var i=e.getValue(),a=String(null!=i?i:""),s=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),l=0;function u(t){null==i&&""!==s.value||s.value!=i?(n(s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):o()}return s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",s.value=a,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=l&&(l=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&o()}),s},number:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");a.setAttribute("type","number"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i;var s=function(e){l()};function l(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return t(function(){a.removeEventListener("blur",s),a.focus(),a.style.height="100%",a.addEventListener("blur",s)}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:l();break;case 27:o()}}),a},range:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return a.setAttribute("type","range"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i,t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:s();break;case 27:o()}}),a},select:function(e,t,n,o,r){var i=this,a=e.getElement(),l=e.getValue(),u=document.createElement("input"),c=document.createElement("div"),p=[],h=[],f={},m=!0;function g(){var t={},n=e.getColumn()._getSelf();return i.table.getData().forEach(function(e){var o=n.getFieldValue(e);null!=o&&""!==o&&(t[o]=!0)}),t=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(t).sort():Object.keys(t).sort().reverse():Object.keys(t)}function v(t,n){var o=[],i=[];function a(e){return(e={label:r.listItemFormatter?r.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1}).value!==n&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(n))||y(e),o.push(e),i.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":s(e))?e.options?(t={label:e.label,group:!0,element:!1},i.push(t),e.options.forEach(function(e){a(e)})):a(e):((t={label:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1}).value!==n&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(n))||y(t),o.push(t),i.push(t))});else for(var l in t){var u={label:r.listItemFormatter?r.listItemFormatter(l,t[l]):t[l],value:l,element:!1};u.value!==n&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(n))||y(u),o.push(u),i.push(u)}p=o,h=i,function(){for(;c.firstChild;)c.removeChild(c.firstChild);h.forEach(function(e){var t=e.element;t||(e.group?((t=document.createElement("div")).classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label):((t=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label,t.addEventListener("click",function(){y(e),b()}),e===f&&t.classList.add("active")),t.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),e.element=t),c.appendChild(t)})}()}function y(e){f&&f.element&&f.element.classList.remove("active"),f=e,u.value=" "===e.label?"":e.label,e.element&&e.element.classList.add("active")}function b(){E(),l!==f.value?(l=f.value,n(f.value)):o()}function w(){E(),o()}function E(){c.parentNode&&c.parentNode.removeChild(c),i.table.rowManager.element.removeEventListener("scroll",w)}return this.table.rowManager.element.addEventListener("scroll",w),(Array.isArray(r)||!Array.isArray(r)&&"object"===(void 0===r?"undefined":s(r))&&!r.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),r={values:r}),u.setAttribute("type","text"),u.style.padding="4px",u.style.width="100%",u.style.boxSizing="border-box",u.style.cursor="default",u.readOnly=0!=this.currentCell,u.value=void 0!==l||null===l?l:"",!0===r.values?v(g(),l):v(r.values||[],l),u.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))>0&&y(p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&y(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:b();break;case 27:w()}}),u.addEventListener("blur",function(e){m&&w()}),u.addEventListener("focus",function(e){!function(){if(!c.parentNode){!0===r.values?v(g(),l):v(r.values||[],l);var e=d.prototype.helpers.elOffset(a);c.style.minWidth=a.offsetWidth+"px",c.style.top=e.top+a.offsetHeight+"px",c.style.left=e.left+"px",document.body.appendChild(c)}}()}),(c=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){u.style.height="100%",u.focus()}),u},autocomplete:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=document.createElement("input"),u=document.createElement("div"),c=[],p=[],h=[],f={},m=!0;function g(e,t){var n=[],o=[];r.searchFunc?(c.forEach(function(e){o.push(e.search)}),r.searchFunc(e,o).forEach(function(e){var t=c.find(function(t){return t.search===e});t&&n.push(t)})):""===e?r.showListOnEmpty&&c.forEach(function(e){n.push(e)}):c.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&n.push(t)}),p=n,function(e){var t=!1;for(;u.firstChild;)u.removeChild(u.firstChild);p.forEach(function(n){var o=n.element;o||((o=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=n.title,o.addEventListener("click",function(){v(n),y()}),o.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),n.element=o,e&&n.value==s&&(l.value=n.title,n.element.classList.add("active"),t=!0),n===f&&(n.element.classList.add("active"),t=!0)),u.appendChild(o)}),t||v(!1)}(t)}function v(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active")}function y(){E(),f?s!==f.value?(s=f.value,l.value=f.title,n(f.value)):o():r.freetext?(s=l.value,n(l.value)):r.allowEmpty&&""===l.value?(s=l.value,n(l.value)):o()}function b(){E(),o()}function w(){if(!u.parentNode){for(;u.firstChild;)u.removeChild(u.firstChild);!0===r.values?(n={},o=e.getColumn()._getSelf(),i.table.getData().forEach(function(e){var t=o.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)}),h=n=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):h=r.values||[],function(e,t){var n=[];if(Array.isArray(e))e.forEach(function(e){var o={title:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||v(o),n.push(o)});else for(var o in e){var i={title:r.listItemFormatter?r.listItemFormatter(o,e[o]):e[o],value:o,element:!1};i.value!==t&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(t))||v(i),n.push(i)}r.searchFunc&&n.forEach(function(e){e.search={title:e.title,value:e.value}}),c=n}(h,s);var t=d.prototype.helpers.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=t.top+a.offsetHeight+"px",u.style.left=t.left+"px",document.body.appendChild(u)}var n,o}function E(){u.parentNode&&u.parentNode.removeChild(u),i.table.rowManager.element.removeEventListener("scroll",b)}return this.table.rowManager.element.addEventListener("scroll",b),l.setAttribute("type","search"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",l.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),v((t=p.indexOf(f))>0&&p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&v(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:y();break;case 27:b();break;case 36:case 35:e.stopImmediatePropagation()}}),l.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:g(l.value)}}),l.addEventListener("search",function(e){g(l.value)}),l.addEventListener("blur",function(e){m&&y()}),l.addEventListener("focus",function(e){var t=void 0!==s||null===s?s:"";w(),l.value=t,g(t,!0)}),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){l.style.height="100%",l.focus()}),l},star:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=a.getElementsByTagName("svg").length||5,u=a.getElementsByTagName("svg")[0]?a.getElementsByTagName("svg")[0].getAttribute("width"):14,c=[],d=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");function h(e){c.forEach(function(t,n){n<e?("ie"==i.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==i.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function f(e){var t=document.createElement("span"),o=p.cloneNode(!0);c.push(o),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),h(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e)}),t.appendChild(o),d.appendChild(t)}function m(e){s=e,h(e)}a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",p.setAttribute("width",u),p.setAttribute("height",u),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px";for(var g=1;g<=l;g++)f(g);return h(s=Math.min(parseInt(s),l)),d.addEventListener("mousemove",function(e){h(0)}),d.addEventListener("click",function(e){n(0)}),a.addEventListener("blur",function(e){o()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 39:m(s+1);break;case 37:m(s-1);break;case 13:n(s);break;case 27:o()}}),d},progress:function(e,t,n,o,r){var i,a,s=e.getElement(),l=void 0===r.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:r.max,u=void 0===r.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:r.min,c=(l-u)/100,d=e.getValue()||0,p=document.createElement("div"),h=document.createElement("div");function f(){var e=c*Math.round(h.offsetWidth/(s.clientWidth/100))+u;n(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",d)}return p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),h.style.display="inline-block",h.style.position="relative",h.style.height="100%",h.style.backgroundColor="#488CE9",h.style.maxWidth="100%",h.style.minWidth="0%",s.style.padding="4px 4px",d=Math.min(parseFloat(d),l),d=Math.max(parseFloat(d),u),d=Math.round((d-u)/c),h.style.width=d+"%",s.setAttribute("aria-valuemin",u),s.setAttribute("aria-valuemax",l),h.appendChild(p),p.addEventListener("mousedown",function(e){i=e.screenX,a=h.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){i&&(h.style.width=a+e.screenX-i+"px")}),s.addEventListener("mouseup",function(e){i&&(e.stopPropagation(),e.stopImmediatePropagation(),i=!1,a=!1,f())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:h.style.width=h.clientWidth+s.clientWidth/100+"px";break;case 37:h.style.width=h.clientWidth-s.clientWidth/100+"px";break;case 13:f();break;case 27:o()}}),s.addEventListener("blur",function(){o()}),h},tickCross:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input"),s=r.tristate,l=void 0===r.indeterminateValue?null:r.indeterminateValue,u=!1;function c(e){return s?e?u?l:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,l):(u=!1,a.checked):a.checked}return a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",a.value=i,!s||void 0!==i&&i!==l&&""!==i||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus()}),a.checked=!0===i||"true"===i||"True"===i||1===i,a.addEventListener("change",function(e){n(c())}),a.addEventListener("blur",function(e){n(c(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&n(c()),27==e.keyCode&&o()}),a}},d.prototype.registerModule("edit",E);var C=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};C.prototype.initializeColumn=function(e,t){var n,o=this,r=e.getField();e.modules.filter={success:function(t){var i,a="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",l="";if(void 0===n||n!==t){if(n=t,e.modules.filter.emptyFunc(t))delete o.headerFilters[r];else{switch(e.modules.filter.value=t,s(e.definition.headerFilterFunc)){case"string":o.filters[e.definition.headerFilterFunc]?(l=e.definition.headerFilterFunc,i=function(n){var r=e.definition.headerFilterFuncParams||{},i=e.getFieldValue(n);return r="function"==typeof r?r(t,i,n):r,o.filters[e.definition.headerFilterFunc](t,i,n,r)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":l=i=function(n){var o=e.definition.headerFilterFuncParams||{},r=e.getFieldValue(n);return o="function"==typeof o?o(t,r,n):o,e.definition.headerFilterFunc(t,r,n,o)}}if(!i)switch(a){case"partial":i=function(n){var o=e.getFieldValue(n);return null!=o&&String(o).toLowerCase().indexOf(String(t).toLowerCase())>-1},l="like";break;default:i=function(n){return e.getFieldValue(n)==t},l="="}o.headerFilters[r]={value:t,func:i,type:l}}o.changed=!0,o.table.rowManager.filterRefresh()}},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},C.prototype.generateHeaderFilterElement=function(e,t){var n,o,r,i,a,l,u,c=this,d=this,p=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var f=e.modules.filter.headerElement.parentNode,m=d.headerFilterElements.indexOf(f);m>=0&&d.headerFilterElements.splice(m,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),e.contentElement.removeChild(f)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},(n=document.createElement("div")).classList.add("tabulator-header-filter"),s(e.definition.headerFilter)){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=d.table.modules.edit.editors.input}if(o){if(i={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u="function"==typeof(u=e.definition.headerFilterParams||{})?u.call(d.table):u,!(r=o.call(this.table.modules.edit,i,function(){},p,function(){},u)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",r);h?d.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=c.table.columnManager.element.scrollLeft;t!==c.table.rowManager.element.scrollLeft&&(c.table.rowManager.scrollHorizontal(t),c.table.columnManager.scrollHorizontal(t))}),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout(function(){p(r.value)},300)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",l),r.addEventListener("search",l),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),d.headerFilterElements.push(r),d.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},C.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},C.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},C.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},C.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},C.prototype.setFilter=function(e,t,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:n}]),this.addFilter(e)},C.prototype.addFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){(e=o.findFilter(e))&&(o.filterList.push(e),o.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.findFilter=function(e){var t,n=this;if(Array.isArray(e))return this.findSubFilters(e);var o=!1;return"function"==typeof e.field?o=function(t){return e.field(t,e.type||{})}:n.filters[e.type]?o=(t=n.table.columnManager.getColumnByField(e.field))?function(o){return n.filters[e.type](e.value,t.getFieldValue(o))}:function(t){return n.filters[e.type](e.value,t[e.field])}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=o,!!e.func&&e},C.prototype.findSubFilters=function(e){var t=this,n=[];return e.forEach(function(e){(e=t.findFilter(e))&&n.push(e)}),!!n.length&&n},C.prototype.getFilters=function(e,t){var n=[];return e&&(n=this.getHeaderFilters()),t&&n.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),n=n.concat(this.filtersToArray(this.filterList,t))},C.prototype.filtersToArray=function(e,t){var n=this,o=[];return e.forEach(function(e){var r;Array.isArray(e)?o.push(n.filtersToArray(e,t)):(r={field:e.field,type:e.type,value:e.value},t&&"function"==typeof r.type&&(r.type="function"),o.push(r))}),o},C.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},C.prototype.removeFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){var t=-1;(t="object"==s(e.field)?o.filterList.findIndex(function(t){return e===t}):o.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}))>-1?(o.filterList.splice(t,1),o.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,e.reloadHeaderFilter(t)}),this.changed=!0},C.prototype.search=function(e,t,n,o){var r=this,i=[],a=[];return Array.isArray(t)||(t=[{field:t,type:n,value:o}]),t.forEach(function(e){(e=r.findFilter(e))&&a.push(e)}),this.table.rowManager.rows.forEach(function(t){var n=!0;a.forEach(function(e){r.filterRecurse(e,t.getData())||(n=!1)}),n&&i.push("data"===e?t.getData("data"):t.getComponent())}),i},C.prototype.filter=function(e,t){var n=this,o=[],r=[];return n.table.options.dataFiltering&&n.table.options.dataFiltering.call(n.table,n.getFilters()),n.table.options.ajaxFiltering||!n.filterList.length&&!Object.keys(n.headerFilters).length?o=e.slice(0):e.forEach(function(e){n.filterRow(e)&&o.push(e)}),n.table.options.dataFiltered&&(o.forEach(function(e){r.push(e.getComponent())}),n.table.options.dataFiltered.call(n.table,n.getFilters(),r)),o},C.prototype.filterRow=function(e,t){var n=this,o=!0,r=e.getData();for(var i in n.filterList.forEach(function(e){n.filterRecurse(e,r)||(o=!1)}),n.headerFilters)n.headerFilters[i].func(r)||(o=!1);return o},C.prototype.filterRecurse=function(e,t){var n=this,o=!1;return Array.isArray(e)?e.forEach(function(e){n.filterRecurse(e,t)&&(o=!0)}):o=e.func(t),o},C.prototype.filters={"=":function(e,t,n,o){return t==e},"<":function(e,t,n,o){return t<e},"<=":function(e,t,n,o){return t<=e},">":function(e,t,n,o){return t>e},">=":function(e,t,n,o){return t>=e},"!=":function(e,t,n,o){return t!=e},regex:function(e,t,n,o){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,n,o){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,n,o){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},d.prototype.registerModule("filter",C);var x=function(e){this.table=e};x.prototype.initializeColumn=function(e){var t={params:e.definition.formatterParams||{}};switch(s(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===t.params.crossElement&&(t.params.crossElement=!1),console.warn("DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[e.definition.formatter]?t.formatter=this.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),t.formatter=this.formatters.plaintext);break;case"function":t.formatter=e.definition.formatter;break;default:t.formatter=this.formatters.plaintext}e.modules.format=t},x.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},x.prototype.formatValue=function(e){var t=e.getComponent(),n="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,n,function(t){e.column.modules.format.renderedCallback=t})},x.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},x.prototype.emptyToSpace=function(e){return null==e?" ":e},x.prototype.getFormatter=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},x.prototype.formatters={plaintext:function(e,t,n){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,n){return e.getValue()},textarea:function(e,t,n){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,n){var o,r,i,a,s=parseFloat(e.getValue()),l=t.decimal||".",u=t.thousand||",",c=t.symbol||"",d=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(o=!1!==p?s.toFixed(p):s,r=(o=String(o).split("."))[0],i=o.length>1?l+o[1]:"",a=/(\d+)(\d{3})/;a.test(r);)r=r.replace(a,"$1"+u+"$2");return d?r+i+c:c+r+i},link:function(e,t,n){var o=e.getValue(),r=t.urlPrefix||"",i=this.emptyToSpace(o),a=document.createElement("a");if(t.labelField&&(i=e.getData()[t.labelField]),t.label)switch(s(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(t.urlField&&(o=e.getData()[t.urlField]),t.url)switch(s(t.url)){case"string":o=t.url;break;case"function":o=t.url(e)}return a.setAttribute("href",r+o),t.target&&a.setAttribute("target",t.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),a},image:function(e,t,n){var o=document.createElement("img");switch(o.setAttribute("src",e.getValue()),s(t.height)){case"number":o.style.height=t.height+"px";break;case"string":o.style.height=t.height}switch(s(t.width)){case"number":o.style.width=t.width+"px";break;case"string":o.style.width=t.width}return o.addEventListener("load",function(){e.getRow().normalizeHeight()}),o},tickCross:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t.allowEmpty,a=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return a&&o||!0===o||"true"===o||"True"===o||1===o||"1"===o?(r.setAttribute("aria-checked",!0),s||""):!i||"null"!==o&&""!==o&&null!=o?(r.setAttribute("aria-checked",!1),l||""):(r.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue(),s=moment(a,o);return s.isValid()?s.format(r):!0===i?a:"function"==typeof i?i(a):i},datetimediff:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:void 0,s=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),u=e.getValue(),c=moment(u,o);return c.isValid()?s?moment.duration(c.diff(l)).humanize(i):c.diff(l,a)+(i?" "+i:""):!0===r?u:"function"==typeof r?r(u):r},lookup:function(e,t,n){var o=e.getValue();return void 0===t[o]?(console.warn("Missing display value for "+o),o):t[o]},star:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t&&t.stars?t.stars:5,a=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");a.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",o=parseInt(o)<i?parseInt(o):i;for(var l=1;l<=i;l++){var u=s.cloneNode(!0);u.innerHTML=l<=o?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',a.appendChild(u)}return r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",r.setAttribute("aria-label",o),a},traffic:function(e,t,n){var o,r,i=this.sanitizeHTML(e.getValue())||0,a=document.createElement("span"),l=t&&t.max?t.max:100,u=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(a.classList.add("tabulator-traffic-light"),r=parseFloat(i)<=l?parseFloat(i):l,r=parseFloat(r)>=u?parseFloat(r):u,o=(l-u)/100,r=Math.round((r-u)/o),void 0===c?"undefined":s(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var p=100/c.length,h=Math.floor(r/p);h=Math.min(h,c.length-1),d=c[h=Math.max(h,0)];break}}return a.style.backgroundColor=d,a}},progress:function(e,t,n){var o,r,i,a,l,u=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,p=t&&t.min?t.min:0,h=t&&t.legendAlign?t.legendAlign:"center";switch(r=parseFloat(u)<=d?parseFloat(u):d,r=parseFloat(r)>=p?parseFloat(r):p,o=(d-p)/100,r=Math.round((r-p)/o),s(t.color)){case"string":i=t.color;break;case"function":i=t.color(u);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,m=Math.floor(r/f);m=Math.min(m,t.color.length-1),m=Math.max(m,0),i=t.color[m];break}default:i="#2DC214"}switch(s(t.legend)){case"string":a=t.legend;break;case"function":a=t.legend(u);break;case"boolean":a=u;break;default:a=!1}switch(s(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(u);break;case"object":if(Array.isArray(t.legendColor)){f=100/t.legendColor.length,m=Math.floor(r/f);m=Math.min(m,t.legendColor.length-1),m=Math.max(m,0),l=t.legendColor[m]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",r),"<div style='position:realtive; height:100%;' data-max='"+d+"' data-min='"+p+"'><div style='position:relative; height:100%; width:calc("+r+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(a?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+l+";'>"+a+"</div>":"")},color:function(e,t,n){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,n){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,n){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,n){var o=!1,r=document.createElement("div");function i(t){var n=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];(o=t)?(r.classList.add("open"),n&&(n.style.display="")):(r.classList.remove("open"),n&&(n.style.display="none"))}return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),this.table.options.responsiveLayoutCollapseStartOpen&&(o=!0),r.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!o)}),i(o),r}},d.prototype.registerModule("format",x);var T=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};T.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},T.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.definition.frozen?e.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):e.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right"},T.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},T.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},T.prototype.layoutColumnPosition=function(e){var t=this;this.leftColumns.forEach(function(n,o){n.modules.frozen.margin=t._calcSpace(t.leftColumns,o)+t.table.columnManager.scrollLeft+"px",o==t.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})}),this.rightColumns.forEach(function(n,o){n.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,o+1)+"px",o==t.rightColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})})},T.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)}),this.rightColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)})},T.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},T.prototype._calcSpace=function(e,t){for(var n=0,o=0;o<t;o++)e[o].visible&&(n+=e[o].getWidth());return n},d.prototype.registerModule("frozenColumns",T);var k=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};k.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},k.prototype.setDisplayIndex=function(e){this.displayIndex=e},k.prototype.getDisplayIndex=function(){return this.displayIndex},k.prototype.isFrozen=function(){return!!this.rows.length},k.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t},k.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},k.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var n=e.getElement();n.parentNode.removeChild(n),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},k.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,n){t.table.rowManager.styleRow(e,n)})},d.prototype.registerModule("frozenRows",k);var S=function(e){this._group=e,this.type="GroupComponent"};S.prototype.getKey=function(){return this._group.key},S.prototype.getElement=function(){return this._group.element},S.prototype.getRows=function(){return this._group.getRows(!0)},S.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},S.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},S.prototype.getVisibility=function(){return this._group.visible},S.prototype.show=function(){this._group.show()},S.prototype.hide=function(){this._group.hide()},S.prototype.toggle=function(){this._group.toggleVisibility()},S.prototype._getSelf=function(){return this._group},S.prototype.getTable=function(){return this._group.groupManager.table};var D=function(e,t,n,o,r,i,a){this.groupManager=e,this.parent=t,this.key=o,this.level=n,this.field=r,this.hasSubGroups=n<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=a,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=a?a.visible:void 0!==e.startOpen[n]?e.startOpen[n]:e.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};D.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},D.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},D.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(n){e._createGroup(n,t)})},D.prototype.addBindings=function(){var e,t,n,o=this;o.groupManager.table.options.groupClick&&o.element.addEventListener("click",function(e){o.groupManager.table.options.groupClick(e,o.getComponent())}),o.groupManager.table.options.groupDblClick&&o.element.addEventListener("dblclick",function(e){o.groupManager.table.options.groupDblClick(e,o.getComponent())}),o.groupManager.table.options.groupContext&&o.element.addEventListener("contextmenu",function(e){o.groupManager.table.options.groupContext(e,o.getComponent())}),o.groupManager.table.options.groupTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.groupManager.table.options.groupTap(e,o.getComponent()),n=!1})),o.groupManager.table.options.groupDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.groupManager.table.options.groupDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.groupManager.table.options.groupTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.groupManager.table.options.groupTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),o.groupManager.table.options.groupToggleElement&&("arrow"==o.groupManager.table.options.groupToggleElement?o.arrowElement:o.element).addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o.toggleVisibility()})},D.prototype._createGroup=function(e,t){var n=t+"_"+e,o=new D(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[n]);this.groups[n]=o,this.groupList.push(o)},D.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var n=this.groupManager.groupIDLookups[t].func(e.getData()),o=t+"_"+n;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[o]&&this.groups[o].addRow(e):(this.groups[o]||this._createGroup(n,t),this.groups[o].addRow(e))}},D.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},D.prototype.insertRow=function(e,t,n){var o=this.conformRowData({});e.updateData(o);var r=this.rows.indexOf(t);r>-1?n?this.rows.splice(r+1,0,e):this.rows.splice(r,0,e):n?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},D.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},D.prototype.getRowIndex=function(e){},D.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},D.prototype.removeRow=function(e){var t=this.rows.indexOf(e),n=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(n.parentNode&&n.parentNode.removeChild(n),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},D.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},D.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(n){t=t.concat(n.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},D.prototype.getData=function(e,t){var n=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){n.push(e.getData(t||"data"))}),n},D.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},D.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},D.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},D.prototype.show=function(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n})}):this.rows.forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},D.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},D.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}):this.rows.find(function(t){return t===e})&&(t=this),t},D.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},D.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},D.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},D.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},D.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},D.prototype.reinitialize=function(){this.initialized=!1,this.height=0,d.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},D.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},D.prototype.getHeight=function(){return this.outerHeight},D.prototype.getGroup=function(){return this},D.prototype.reinitializeHeight=function(){},D.prototype.calcHeight=function(){},D.prototype.setCellHeight=function(){},D.prototype.clearCellHeight=function(){},D.prototype.getComponent=function(){return new S(this)};var M=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};M.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,n=e.table.options.groupStartOpen,o=e.table.options.groupHeader;(this.allowedValues=e.table.options.groupValues,e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,n){e.headerGenerator[0]=function(e,o,r){return(void 0===e?"":e)+"<span>("+o+" "+(1===o?t:n.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)?this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs():this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs&&this.table.columnManager.getRealColumns().forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()});Array.isArray(t)||(t=[t]),t.forEach(function(t,n){var o,r;o="function"==typeof t?t:(r=e.table.columnManager.getColumnByField(t))?function(e){return r.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:o,values:!!e.allowedValues&&e.allowedValues[n]})}),n&&(Array.isArray(n)||(n=[n]),n.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=n),o&&(e.headerGenerator=Array.isArray(o)?o:[o]),this.initialized=!0},M.prototype.setDisplayIndex=function(e){this.displayIndex=e},M.prototype.getDisplayIndex=function(){return this.displayIndex},M.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},M.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},M.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},M.prototype.pullGroupListData=function(e){var t=this,n=[];return e.forEach(function(e){var o={level:0,rowCount:0,headerContent:""},r=[];e.hasSubGroups?(r=t.pullGroupListData(e.groupList),o.level=e.level,o.rowCount=r.length-e.groupList.length,o.headerContent=e.generator(e.key,o.rowCount,e.rows,e),n.push(o),n=n.concat(r)):(o.level=e.level,o.headerContent=e.generator(e.key,e.rows.length,e.rows,e),o.rowCount=e.getRows().length,n.push(o),e.getRows().forEach(function(e){n.push(e.getData("data"))}))}),n},M.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},M.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}),t},M.prototype.countGroups=function(){return this.groupList.length},M.prototype.generateGroups=function(e){var t=this,n=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,n)}),e.forEach(function(e){t.assignRowToExistingGroup(e,n)})):e.forEach(function(e){t.assignRowToGroup(e,n)})},M.prototype.createGroup=function(e,t,n){var o,r=t+"_"+e;n=n||[],o=new D(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],n[r]),this.groups[r]=o,this.groupList.push(o)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o="0_"+n;this.groups[o]||this.createGroup(n,0,t),this.groups[o].addRow(e)},M.prototype.assignRowToExistingGroup=function(e,t){var n="0_"+this.groupIDLookups[0].func(e.getData());this.groups[n]&&this.groups[n].addRow(e)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o=!this.groups["0_"+n];return o&&this.createGroup(n,0,t),this.groups["0_"+n].addRow(e),!o},M.prototype.updateGroupRows=function(e){var t=[];if(this.groupList.forEach(function(e){t=t.concat(e.getHeadersAndRows())}),e){var n=this.table.rowManager.setDisplayRows(t,this.getDisplayIndex());!0!==n&&this.setDisplayIndex(n),this.table.rowManager.refreshActiveData("group",!0,!0)}return t},M.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},M.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},d.prototype.registerModule("groupRows",M);var R=function(e){this.table=e,this.history=[],this.index=-1};R.prototype.clear=function(){this.history=[],this.index=-1},R.prototype.action=function(e,t,n){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:n}),this.index++},R.prototype.getHistoryUndoSize=function(){return this.index+1},R.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},R.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},R.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},R.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype._rebindRow=function(e,t){this.history.forEach(function(n){if(n.component instanceof a)n.component===e&&(n.component=t);else if(n.component instanceof u&&n.component.row===e){var o=n.component.column.getField();o&&(n.component=t.getCell(o))}})},d.prototype.registerModule("history",R);var P=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};P.prototype.parseTable=function(){var e=this.table.element,t=this.table.options,n=(t.columns,e.getElementsByTagName("th")),o=e.getElementsByTagName("tbody")[0],r=[];this.hasIndex=!1,this.table.options.htmlImporting.call(this.table),o=o?o.getElementsByTagName("tr"):[],this._extractOptions(e,t),n.length?this._extractHeaders(n,o):this._generateBlankHeaders(n,o);for(var i=0;i<o.length;i++){var a=o[i].getElementsByTagName("td"),l={};this.hasIndex||(l[t.index]=i);for(var u=0;u<a.length;u++){var c=a[u];void 0!==this.fieldIndex[u]&&(l[this.fieldIndex[u]]=c.innerHTML)}r.push(l)}var d=document.createElement("div"),p=e.attributes;for(var u in p)"object"==s(p[u])&&d.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(d,e),t.data=r,this.table.options.htmlImported.call(this.table),this.table.element=d},P.prototype._extractOptions=function(e,t,n){var o=e.attributes,r=n?Object.assign([],n):Object.keys(t),i={};for(var a in r.forEach(function(e){i[e.toLowerCase()]=e}),o){var l,u=o[a];u&&"object"==(void 0===u?"undefined":s(u))&&u.name&&0===u.name.indexOf("tabulator-")&&(l=u.name.replace("tabulator-",""),void 0!==i[l]&&(t[i[l]]=this._attribValue(u.value)))}},P.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},P.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},P.prototype._extractHeaders=function(e,t){for(var n=0;n<e.length;n++){var r,i,a=e[n],l=!1,u=this._findCol(a.textContent);for(var c in u?l=!0:u={title:a.textContent.trim()},u.field||(u.field=a.textContent.trim().toLowerCase().replace(" ","_")),(r=a.getAttribute("width"))&&!u.width&&(u.width=r),i=a.attributes,this._extractOptions(a,u,o.prototype.defaultOptionList),i){var d=i[c];d&&"object"==(void 0===d?"undefined":s(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u[d.name.replace("tabulator-","")]=this._attribValue(d.value))}this.fieldIndex[n]=u.field,u.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(u)}},P.prototype._generateBlankHeaders=function(e,t){for(var n=0;n<e.length;n++){var o=e[n],r={title:"",field:"col"+n};this.fieldIndex[n]=r.field;var i=o.getAttribute("width");i&&(r.width=i),this.table.options.columns.push(r)}},d.prototype.registerModule("htmlTableImport",P);var _=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};_.prototype.genereateTable=function(e,t,n,o){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=o;var r=this.generateHeaderElements(),i=this.generateBodyElements(n),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(i),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},_.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}),t},_.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r={title:e.definition.title,column:e,depth:1};if(n.length){if(r.subGroups=[],r.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(r.width+=n.width,r.subGroups.push(n),n.depth>o&&(o=n.depth))}),r.depth+=o,!r.width)return!1}else{if(!e.field||!this.columnVisCheck(e))return!1;r.width=1}return r},_.prototype.groupHeadersToRows=function(e){var t=[],n=0;return e.forEach(function(e){e.depth>n&&(n=e.depth)}),e.forEach(function(e){!function e(o,r){var i=n-r;void 0===t[r]&&(t[r]=[]),o.height=o.subGroups?1:i-o.depth+1,t[r].push(o),o.subGroups&&o.subGroups.forEach(function(t){e(t,r+1)})}(e,0)}),t},_.prototype.generateHeaderElements=function(){var e=this,t=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(n){var o=document.createElement("tr");e.mapElementStyles(e.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.forEach(function(t){var n=document.createElement("th");n.colSpan=t.width,n.rowSpan=t.height,n.innerHTML=t.column.definition.title,e.cloneTableStyle&&(n.style.boxSizing="border-box"),e.mapElementStyles(t.column.getElement(),n,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.mapElementStyles(t.column.contentElement,n,["padding-top","padding-left","padding-right","padding-bottom"]),t.column.visible?e.mapElementStyles(t.column.getElement(),n,["width"]):t.column.definition.width&&(n.style.width=t.column.definition.width+"px"),t.column.parent&&e.mapElementStyles(t.column.parent.groupElement,n,["border-top"]),o.appendChild(n)}),t.appendChild(o)}),t},_.prototype.generateBodyElements=function(e){var t,n,o,r,i,a,l,u,c=this;this.cloneTableStyle&&window.getComputedStyle&&(t=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(l=r.getElementsByClassName("tabulator-cell"),i=l[0],l[l.length-1]));var d=document.createElement("tbody"),p=e?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return this.table.columnManager.columnsByIndex.forEach(function(e){c.columnVisCheck(e)&&h.push(e)}),(p=p.filter(function(e){switch(e.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0})).length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),p.forEach(function(e,r){var l=e.getData(),p=document.createElement("tr");switch(p.classList.add("tabulator-print-table-row"),e.type){case"group":var f=document.createElement("td");f.colSpan=h.length,f.innerHTML=e.key,p.classList.add("tabulator-print-table-group"),c.mapElementStyles(a,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(a,f,["padding-top","padding-left","padding-right","padding-bottom"]),p.appendChild(f);break;case"calc":p.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var t=document.createElement("td"),n=e.getFieldValue(l),o={getValue:function(){return n},getField:function(){return e.definition.field},getElement:function(){return t},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}},getComponent:function(){return o},column:e};if(c.table.modExists("format"))n=c.table.modules.format.formatValue(o);else switch(void 0===n?"undefined":s(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?t.appendChild(n):t.innerHTML=n,i&&c.mapElementStyles(i,t,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),p.appendChild(t)}),u="calc"==e.type?o:r%2&&n?n:t,c.mapElementStyles(u,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}d.appendChild(p)}),d},_.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},_.prototype.getHtml=function(e,t,n){var o=document.createElement("div");return o.appendChild(this.genereateTable(n||this.table.options.htmlOutputConfig,t,e,"htmlOutput")),o.innerHTML},_.prototype.mapElementStyles=function(e,t,n){if(this.cloneTableStyle&&e&&t){var o={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}}},d.prototype.registerModule("htmlTableExport",_);var L=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};L.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var n in this.bindings)t[n]=this.bindings[n];if(Object.keys(e).length)for(var o in e)t[o]=e[o];this.mapBindings(t),this.bindEvents()}},L.prototype.mapBindings=function(e){var t=this,n=this,o=function(o){t.actions[o]?e[o]&&("object"!==s(e[o])&&(e[o]=[e[o]]),e[o].forEach(function(e){n.mapBinding(o,e)})):console.warn("Key Binding Error - no such action:",o)};for(var r in e)o(r)},L.prototype.mapBinding=function(e,t){var n=this,o={action:this.actions[e],keys:[],ctrl:!1,shift:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":o.ctrl=!0;break;case"shift":o.shift=!0;break;default:e=parseInt(e),o.keys.push(e),n.watchKeys[e]||(n.watchKeys[e]=[]),n.watchKeys[e].push(o)}})},L.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var n=t.keyCode,o=e.watchKeys[n];o&&(e.pressedKeys.push(n),o.forEach(function(n){e.checkBinding(t,n)}))},this.keydownBinding=function(t){var n=t.keyCode;if(e.watchKeys[n]){var o=e.pressedKeys.indexOf(n);o>-1&&e.pressedKeys.splice(o,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},L.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},L.prototype.checkBinding=function(e,t){var n=this,o=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&(t.keys.forEach(function(e){-1==n.pressedKeys.indexOf(e)&&(o=!1)}),o&&t.action.call(n,e),!0)},L.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},L.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,n=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n>=0?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,n=t.scrollTop+t.height,o=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n<=o?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().next())},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},d.prototype.registerModule("keybindings",L);var O=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};O.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},O.prototype.initializeColumn=function(e){var t,n=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===n.moving.parent&&((n.touchMove?o.touches[0].pageX:o.pageX)-d.prototype.helpers.elOffset(t).left+n.table.columnManager.element.scrollLeft>e.getWidth()/2?n.toCol===e&&n.toColAfter||(t.parentNode.insertBefore(n.placeholderElement,t.nextSibling),n.moveColumn(e,!0)):(n.toCol!==e||n.toColAfter)&&(t.parentNode.insertBefore(n.placeholderElement,t),n.moveColumn(e,!1)))}.bind(n),t.addEventListener("mousedown",function(t){n.touchMove=!1,1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),n.bindTouchEvents(e)),e.modules.moveColumn=o},O.prototype.bindTouchEvents=function(e){var t,n,o,r,i,a,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",function(l){s.checkTimeout=setTimeout(function(){s.touchMove=!0,e,t=e.nextColumn(),o=t?t.getWidth()/2:0,n=e.prevColumn(),r=n?n.getWidth()/2:0,i=0,a=0,u=!1,s.startMove(l,e)},s.checkPeriod)},{passive:!0}),l.addEventListener("touchmove",function(l){var c,d;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-i>o&&(d=t)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement().nextSibling),s.moveColumn(d,!0)):n&&-c-a>r&&(d=n)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement()),s.moveColumn(d,!1)),d&&(d,t=d.nextColumn(),i=o,o=t?t.getWidth()/2:0,n=d.prevColumn(),a=r,r=n?n.getWidth()/2:0))},{passive:!0}),l.addEventListener("touchend",function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)})},O.prototype.startMove=function(e,t){var n=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(n).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},O.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype.moveColumn=function(e,t){var n=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o.nextSibling)}):e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o)})},O.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumn(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},O.prototype.moveHover=function(e){var t,n=this,o=n.table.columnManager.getElement(),r=o.scrollLeft,i=(n.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(o).left+r;n.hoverElement.style.left=i-n.startX+"px",i-r<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.max(0,r-5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1))),r+o.clientWidth-i<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.min(o.clientWidth,r+5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1)))},d.prototype.registerModule("moveColumn",O);var N=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};N.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},N.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},N.prototype.setHandle=function(e){this.hasHandle=e},N.prototype.initializeGroupHeader=function(e){var t=this,n={};n.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),n.mousemove=function(n){var o;n.pageY-d.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=n},N.prototype.initializeRow=function(e){var t,n=this,o={};o.mouseup=function(t){n.tableRowDrop(t,e)}.bind(n),o.mousemove=function(t){var o;t.pageY-d.prototype.helpers.elOffset(e.element).top+n.table.rowManager.element.scrollTop>e.getHeight()/2?n.toRow===e&&n.toRowAfter||((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o.nextSibling),n.moveRow(e,!0)):(n.toRow!==e||n.toRowAfter)&&((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o),n.moveRow(e,!1))}.bind(n),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",function(t){1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o},N.prototype.initializeCell=function(e){var t=this,n=e.getElement();n.addEventListener("mousedown",function(n){1===n.which&&(t.checkTimeout=setTimeout(function(){t.startMove(n,e.row)},t.checkPeriod))}),n.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},N.prototype.bindTouchEvents=function(e,t){var n,o,r,i,a,s,l=this,u=!1;t.addEventListener("touchstart",function(t){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e,n=e.nextRow(),r=n?n.getHeight()/2:0,o=e.prevRow(),i=o?o.getHeight()/2:0,a=0,s=0,u=!1,l.startMove(t,e)},l.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var c,d;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?n&&c-a>r&&(d=n)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement().nextSibling),l.moveRow(d,!0)):o&&-c-s>i&&(d=o)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement()),l.moveRow(d,!1)),d&&(d,n=d.nextRow(),a=r,r=n?n.getHeight()/2:0,o=d.prevRow(),s=i,i=o?o.getHeight()/2:0))}),t.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)})},N.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype.startMove=function(e,t){var n=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n)),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},N.prototype.setStartPosition=function(e,t){var n,o,r=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;n=t.getElement(),this.connection?(o=n.getBoundingClientRect(),this.startX=o.left-r+window.pageXOffset,this.startY=o.top-i+window.pageYOffset):this.startY=i-n.getBoundingClientRect().top},N.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},N.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},N.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},N.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),n=t.scrollTop,o=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+n;this.hoverElement.style.top=o-this.startY+"px"},N.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},N.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},N.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},N.prototype.connect=function(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},N.prototype.disconnect=function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},N.prototype.dropComplete=function(e,t,n){var o=!1;if(n){switch(s(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},N.prototype.tableRowDrop=function(e,t){var n=!1,o=!1;switch(e.stopImmediatePropagation(),s(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:o})},N.prototype.receivers={insert:function(e,t,n){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,n){return this.table.addRow(e.getData()),!0},update:function(e,t,n){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,n){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},N.prototype.senders={delete:function(e,t,n){e.delete()}},N.prototype.commsReceived=function(e,t,n){switch(t){case"connect":return this.connect(e,n.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,n.row,n.success)}},d.prototype.registerModule("moveRow",N);var F=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};F.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupMutator(e.definition[a]))&&(n=!0,o[a]={mutator:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.mutate=o)},F.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},F.prototype.transformRow=function(e,t,n){var o,r="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse(function(i){var a,s,l;i.modules.mutate&&(a=i.modules.mutate[r]||i.modules.mutate.mutator||!1)&&(o=i.getFieldValue(e),(!n||n&&void 0!==o)&&(l=i.getComponent(),s="function"==typeof a.params?a.params(o,e,t,l):a.params,i.setFieldValue(e,a.mutator(o,e,t,s,l))))}),e},F.prototype.transformCell=function(e,t){var n=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1;return n?n.mutator(t,e.row.getData(),"edit",n.params,e.getComponent()):t},F.prototype.enable=function(){this.enabled=!0},F.prototype.disable=function(){this.enabled=!1},F.prototype.mutators={},d.prototype.registerModule("mutator",F);var A=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var n=1;n<5;n++)t.push(this.size*n);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var n=document.createElement("option");n.value=t,n.innerHTML=t,e.pageSizeSelect.appendChild(n)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(e){var t,n=this;for(var o in n.table.options.paginationDataSent)n.paginationDataSentNames[o]=n.table.options.paginationDataSent[o];for(var r in n.table.options.paginationDataReceived)n.paginationDataReceivedNames[r]=n.table.options.paginationDataReceived[r];n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize(n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.size=n.table.options.paginationSize||Math.floor(n.table.rowManager.getElement().clientHeight/24),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(e){this.displayIndex=e},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},A.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(e){var t=this;return new Promise(function(n,o){(e=parseInt(e))>0&&e<=t.max?(t.page=e,t.trigger().then(function(){n()}).catch(function(){o()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),o())})},A.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){var r=t.table.rowManager.getDisplayRows(t.displayIndex-1).indexOf(e);if(r>-1){var i=Math.ceil((r+1)/t.size);t.setPage(i).then(function(){n()}).catch(function(){o()})}else console.warn("Pagination Error - Requested row is not visible"),o()})},A.prototype.setPageSize=function(e){(e=parseInt(e))>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),n=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),o=this.page<=t?Math.min(this.count,this.max):Math.min(this.page+t,this.max);this.pagesElement.firstChild;)this.pagesElement.removeChild(this.pagesElement.firstChild);1==this.page?(this.firstBut.disabled=!0,this.prevBut.disabled=!0):(this.firstBut.disabled=!1,this.prevBut.disabled=!1),this.page==this.max?(this.lastBut.disabled=!0,this.nextBut.disabled=!0):(this.lastBut.disabled=!1,this.nextBut.disabled=!1);for(var r=n;r<=o;r++)r>0&&r<=this.max&&this.pagesElement.appendChild(this._generatePageButton(r));this.footerRedraw()},A.prototype._generatePageButton=function(e){var t=this,n=document.createElement("button");return n.classList.add("tabulator-page"),e==t.page&&n.classList.add("active"),n.setAttribute("type","button"),n.setAttribute("role","button"),n.setAttribute("aria-label","Show Page "+e),n.setAttribute("title","Show Page "+e),n.setAttribute("data-page",e),n.textContent=e,n.addEventListener("click",function(n){t.setPage(e)}),n},A.prototype.previousPage=function(){var e=this;return new Promise(function(t,n){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){n()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),n())})},A.prototype.nextPage=function(){var e=this;return new Promise(function(t,n){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){n()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),n())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(e){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(e){var t,n,o;if("local"==this.mode){t=[],o=(n=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(var r=n;r<o;r++)e[r]&&t.push(e[r]);return t}return this._setPageButtons(),e.slice(0)},A.prototype.trigger=function(){var e,t=this;return new Promise(function(n,o){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),n();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){n()}).catch(function(){o()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),o()}})},A.prototype._getRemotePage=function(){var e,t,n=this,o=this;return new Promise(function(r,i){if(o.table.modExists("ajax",!0)||i(),e=d.prototype.helpers.deepClone(o.table.modules.ajax.getParams()||{}),(t=o.table.modules.ajax.getParams())[n.paginationDataSentNames.page]=o.page,n.size&&(t[n.paginationDataSentNames.size]=n.size),n.table.options.ajaxSorting&&n.table.modExists("sort")){var a=o.table.modules.sort.getSort();a.forEach(function(e){delete e.column}),t[n.paginationDataSentNames.sorters]=a}if(n.table.options.ajaxFiltering&&n.table.modExists("filter")){var s=o.table.modules.filter.getFilters(!0,!0);t[n.paginationDataSentNames.filters]=s}o.table.modules.ajax.setParams(t),o.table.modules.ajax.sendRequest(n.progressiveLoad).then(function(e){o._parseRemoteData(e),r()}).catch(function(e){i()}),o.table.modules.ajax.setParams(e)})},A.prototype._parseRemoteData=function(e){var t,n,o=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){o.nextPage().then(function(){}).catch(function(){})},o.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),n=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,o.table.rowManager.element.scrollHeight<=o.table.rowManager.element.clientHeight+n&&o.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},d.prototype.registerModule("page",A);var I=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};I.prototype.initialize=function(e,t){this.mode=!0!==e?e:void 0!==window.localStorage?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},I.prototype.load=function(e,t){var n=this.retreiveData(e);return t&&(n=n?this.mergeDefinition(t,n):t),n},I.prototype.retreiveData=function(e){var t="",n=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(n);break;case"cookie":var o=document.cookie,r=o.indexOf(n+"="),i=void 0;r>-1&&((i=(o=o.substr(r)).indexOf(";"))>-1&&(o=o.substr(0,i)),t=o.replace(n+"=",""));break;default:console.warn("Persistance Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},I.prototype.mergeDefinition=function(e,t){var n=this,o=[];return(t=t||[]).forEach(function(t,r){var i=n._findColumn(e,t);i&&(i.width=t.width,i.visible=t.visible,i.columns&&(i.columns=n.mergeDefinition(i.columns,t.columns)),o.push(i))}),e.forEach(function(e,r){n._findColumn(t,e)||(o.length>r?o.splice(r,0,e):o.push(e))}),o},I.prototype._findColumn=function(e,t){var n=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(n){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},I.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort())}var n=this.id+("columns"===e?"":"-"+e);this.saveData(n,t)},I.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},I.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"="+t+"; expires="+n.toUTCString();break;default:console.warn("Persistance Save Error - invalid mode selected",this.mode)}},I.prototype.parseColumns=function(e){var t=this,n=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),n.push(o)}),n},d.prototype.registerModule("persistence",I);var H=function(e){this.table=e,this.element=!1,this.manualBlock=!1};H.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},H.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},H.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},H.prototype.printFullscreen=function(e,t,n){var o,r,i=window.scrollX,a=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.htmlTableExport.genereateTable(void 0!==n?n:this.table.options.printConfig,void 0!==t?t:this.table.options.printCopyStyle,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),"string"==typeof(o="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=o:s.appendChild(o),this.element.appendChild(s)),this.element.appendChild(u),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(r="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=r:l.appendChild(r),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,u),window.print(),this.cleanup(),window.scrollTo(i,a),this.manualBlock=!1},d.prototype.registerModule("print",H);var z=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};z.prototype.watchData=function(e){var t,n=this;this.currentVersion++,t=this.currentVersion,n.unwatchData(),n.data=e,n.origFuncs.push=e.push,Object.defineProperty(n.data,"push",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!1)}),n.origFuncs.push.apply(e,arguments)}}),n.origFuncs.unshift=e.unshift,Object.defineProperty(n.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!0)}),n.origFuncs.unshift.apply(e,arguments)}}),n.origFuncs.shift=e.shift,Object.defineProperty(n.data,"shift",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[0]))&&o.deleteActual(),n.origFuncs.shift.call(e)}}),n.origFuncs.pop=e.pop,Object.defineProperty(n.data,"pop",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[n.data.length-1]))&&o.deleteActual(),n.origFuncs.pop.call(e)}}),n.origFuncs.splice=e.splice,Object.defineProperty(n.data,"splice",{enumerable:!1,configurable:!0,value:function(){var o,r=Array.from(arguments),i=r[0]<0?e.length+r[0]:r[0],a=r[1],s=!!r[2]&&r.slice(2);if(!n.blocked&&t===n.currentVersion){if(s&&((o=!!e[i]&&n.table.rowManager.getRowFromDataObject(e[i]))?s.forEach(function(e){n.table.rowManager.addRowActual(e,!0,o,!0)}):(s=s.slice().reverse()).forEach(function(e){n.table.rowManager.addRowActual(e,!0,!1,!0)})),0!==a){var l=e.slice(i,void 0===r[1]?r[1]:i+a);l.forEach(function(e,t){var o=n.table.rowManager.getRowFromDataObject(e);o&&o.deleteActual(t!==l.length-1)})}(s||0!==a)&&n.table.rowManager.reRenderInPosition()}return n.origFuncs.splice.apply(e,arguments)}})},z.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},z.prototype.watchRow=function(e){var t=e.getData();for(var n in this.blocked=!0,t)this.watchKey(e,t,n);this.blocked=!1},z.prototype.watchKey=function(e,t,n){var o=this,r=Object.getOwnPropertyDescriptor(t,n),i=t[n],a=this.currentVersion;Object.defineProperty(t,n,{set:function(t){if(i=t,!o.blocked&&a===o.currentVersion){var s={};s[n]=t,e.updateData(s)}r.set&&r.set(t)},get:function(){return r.get&&r.get(),i}})},z.prototype.unwatchRow=function(e){var t=e.getData();for(var n in t)Object.defineProperty(t,n,{value:t[n]})},z.prototype.block=function(){this.blocked=!0},z.prototype.unblock=function(){this.blocked=!1},d.prototype.registerModule("reactiveData",z);var j=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};j.prototype.initializeColumn=function(e,t,n){var o=this,r=!1,i=this.table.options.resizableColumns;if("header"===e&&(r="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:r}),!0===i||i==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&n.reinitializeWidth(!0)}),s.addEventListener("click",function(e){e.stopPropagation()});var u=function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&(o.startColumn=t,o._mouseDown(e,i,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&i.reinitializeWidth(!0)}),n.appendChild(a),n.appendChild(s)}},j.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},j.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setWidth(o.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-o.startX)),!o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!1),o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.persistentLayout&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.save("columns"),o.table.options.columnResized.call(o.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!0),o.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,o.startWidth=t.getWidth(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeColumns",j);var B=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};B.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=document.createElement("div");o.className="tabulator-row-resize-handle";var r=document.createElement("div");r.className="tabulator-row-resize-handle prev",o.addEventListener("click",function(e){e.stopPropagation()});var i=function(n){t.startRow=e,t._mouseDown(n,e,o)};o.addEventListener("mousedown",i,{passive:!0}),o.addEventListener("touchstart",i),r.addEventListener("click",function(e){e.stopPropagation()});var a=function(n){var o=t.table.rowManager.prevDisplayRow(e);o&&(t.startRow=o,t._mouseDown(n,o,r))};r.addEventListener("mousedown",a),r.addEventListener("touchstart",a,{passive:!0}),n.appendChild(o),n.appendChild(r)},B.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setHeight(o.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-o.startY))}function i(e){document.body.removeEventListener("mouseup",r),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.rowResized.call(this.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,o.startHeight=t.getHeight(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeRows",B);var U=function(e){this.table=e,this.binding=!1,this.observer=!1};U.prototype.initialize=function(e){var t=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){t.redraw()}),this.observer.observe(t.element)):(this.binding=function(){t.redraw()},window.addEventListener("resize",this.binding))},U.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},d.prototype.registerModule("resizeTable",U);var W=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};W.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(n,o){n.modules.responsive&&n.modules.responsive.order&&n.modules.responsive.visible&&(n.modules.responsive.index=o,t.push(n),n.visible||"collapse"!==e.mode||e.hiddenColumns.push(n))}),t=(t=t.reverse()).sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},W.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},W.prototype.layoutRow=function(e){var t=e.getElement(),n=document.createElement("div");n.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:n},this.collapseStartOpen||(n.style.display="none"),t.appendChild(n),this.generateCollapsedRowContent(e))},W.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},W.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},W.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},W.prototype.update=function(){for(var e=!0;e;){var t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),n=this.table.columnManager.element.clientWidth-t;if(n<0){var o=this.columns[this.index];o?(this.hideColumn(o),this.index++):e=!1}else{var r=this.columns[this.index-1];r&&n>0&&n>=r.getWidth()?(this.showColumn(r),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}},W.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},W.prototype.generateCollapsedRowContent=function(e){var t,n;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(n=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(n)}},W.prototype.generateCollapsedRowData=function(e){var t,n=this,o=e.getData(),r=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(o);i.definition.title&&i.field&&(i.modules.format&&n.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return o},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},r.push({title:i.definition.title,value:i.modules.format.formatter.call(n.table.modules.format,t,i.modules.format.params)})):r.push({title:i.definition.title,value:a}))}),r},W.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),n="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),n+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=n,Object.keys(e).length?t:""},d.prototype.registerModule("responsiveLayout",W);var q=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[]};q.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},q.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(n.classList.add("tabulator-selectable"),n.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?n.addEventListener("click",function(n){if(t.table._clearSelection(),n.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var o=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),r=t.table.rowManager.getDisplayRowIndex(e),i=o<=r?o:r,a=o>=r?o:r,s=t.table.rowManager.getDisplayRows().slice(0).splice(i,a-i+1);n.ctrlKey||n.metaKey?(s.forEach(function(n){n!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(n):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(n))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&s.length>t.table.options.selectable&&(s=s.slice(0,t.table.options.selectable)),t.selectRows(s))}else n.ctrlKey||n.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(n.addEventListener("click",function(n){t.table._clearSelection(),t.selecting||t.toggleRow(e)}),n.addEventListener("mousedown",function(n){if(n.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",o),document.body.addEventListener("keyup",o),t.toggleRow(e),!1}),n.addEventListener("mouseenter",function(n){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),n.addEventListener("mouseout",function(n){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(n.classList.add("tabulator-unselectable"),n.classList.remove("tabulator-selectable"))},q.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},q.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":s(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},q.prototype._selectRow=function(e,t,n){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!n&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var o=this.table.rowManager.findRow(e);o?-1==this.selectedRows.indexOf(o)&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!0,o.getElement().classList.add("tabulator-selected"),this.selectedRows.push(o),t||(this.table.options.rowSelected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},q.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},q.prototype.deselectRows=function(e){var t,n=this;if(void 0===e){t=n.selectedRows.length;for(var o=0;o<t;o++)n._deselectRow(n.selectedRows[0],!0);n._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){n._deselectRow(e,!0)}),n._rowSelectionChanged()):n._deselectRow(e)},q.prototype._deselectRow=function(e,t){var n,o=this.table.rowManager.findRow(e);o?(n=this.selectedRows.findIndex(function(e){return e==o}))>-1&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.getElement().classList.remove("tabulator-selected"),this.selectedRows.splice(n,1),t||(this.table.options.rowDeselected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},q.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},q.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},q.prototype._rowSelectionChanged=function(){this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},d.prototype.registerModule("selectRow",q);var V=function(e){this.table=e,this.sortList=[],this.changed=!1};V.prototype.initializeColumn=function(e,t){var n,o,r=this,i=!1;switch(s(e.definition.sorter)){case"string":r.sorters[e.definition.sorter]?i=r.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":i=e.definition.sorter}e.modules.sort={sorter:i,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((n=e.getElement()).classList.add("tabulator-sortable"),(o=document.createElement("div")).classList.add("tabulator-arrow"),t.appendChild(o),n.addEventListener("click",function(t){var n="",o=[],i=!1;if(e.modules.sort){if(e.modules.sort.tristate)n="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":n="desc";break;case"desc":n="asc";break;default:n=e.modules.sort.startingDir}r.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?((i=(o=r.getSort()).findIndex(function(t){return t.field===e.getField()}))>-1?(o[i].dir=n,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=n&&o.push(i))):"none"!=n&&o.push({column:e,dir:n}),r.setSort(o)):"none"==n?r.clear():r.setSort(e,n),r.table.rowManager.sorterRefresh(!r.sortList.length)}}))},V.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},V.prototype.getSort=function(){var e=[];return this.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},V.prototype.setSort=function(e,t){var n=this,o=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;(t=n.table.columnManager.findColumn(e.column))?(e.column=t,o.push(e),n.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),n.sortList=o,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},V.prototype.clear=function(){this.setSort([])},V.prototype.findSorter=function(e){var t,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),e.getField()))switch(void 0===(t=e.getFieldValue(n))?"undefined":s(t)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},V.prototype.sort=function(e){var t,n=this;t=this.table.options.sortOrderReverse?n.sortList.slice().reverse():n.sortList,n.table.options.dataSorting&&n.table.options.dataSorting.call(n.table,n.getSort()),n.clearColumnHeaders(),n.table.options.ajaxSorting?t.forEach(function(e,t){n.setColumnHeader(e.column,e.dir)}):t.forEach(function(o,r){o.column&&o.column.modules.sort&&(o.column.modules.sort.sorter||(o.column.modules.sort.sorter=n.findSorter(o.column)),n._sortItem(e,o.column,o.dir,t,r)),n.setColumnHeader(o.column,o.dir)}),n.table.options.dataSorted&&n.table.options.dataSorted.call(n.table,n.getSort(),n.table.rowManager.getComponents(!0))},V.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},V.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},V.prototype._sortItem=function(e,t,n,o,r){var i=this,a="function"==typeof t.modules.sort.params?t.modules.sort.params(t.getComponent(),n):t.modules.sort.params;e.sort(function(e,s){var l=i._sortRow(e,s,t,n,a);if(0===l&&r)for(var u=r-1;u>=0&&0===(l=i._sortRow(e,s,o[u].column,o[u].dir,a));u--);return l})},V.prototype._sortRow=function(e,t,n,o,r){var i,a,s="asc"==o?e:t,l="asc"==o?t:e;return e=void 0!==(e=n.getFieldValue(s.getData()))?e:"",t=void 0!==(t=n.getFieldValue(l.getData()))?t:"",i=s.getComponent(),a=l.getComponent(),n.modules.sort.sorter.call(this,e,t,i,a,n.getComponent(),o,r)},V.prototype.sorters={number:function(e,t,n,o,r,i,a){var s=a.alignEmptyValues,l=a.decimalSeparator||".",u=a.thousandSeparator||",",c=0;if(e=parseFloat(String(e).split(u).join("").split(l).join(".")),t=parseFloat(String(t).split(u).join("").split(l).join(".")),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===i||"bottom"===s&&"asc"===i)&&(c*=-1),c},string:function(e,t,n,o,r,i,a){var l,u=a.alignEmptyValues,c=0;if(e){if(t){switch(s(a.locale)){case"boolean":a.locale&&(l=this.table.modules.localize.getLocale());break;case"string":l=a.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),l)}c=1}else c=t?-1:0;return("top"===u&&"desc"===i||"bottom"===u&&"asc"===i)&&(c*=-1),c},date:function(e,t,n,o,r,i,a){return a.format||(a.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},time:function(e,t,n,o,r,i,a){return a.format||(a.format="hh:mm"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},datetime:function(e,t,n,o,r,i,a){var s=a.format||"DD/MM/YYYY hh:mm:ss",l=a.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(e=moment(e,s),t=moment(t,s),e.isValid()){if(t.isValid())return e-t;u=1}else u=t.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,n,o,r,i,a){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,n,o,r,i,a){var s=a.type||"length",l=a.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},exists:function(e,t,n,o,r,i,a){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,n,o,r,i,a){var s,l,u,c,d,p=0,h=/(\d+)|(\D+)/g,f=/\d/,m=a.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!f.test(s)||!f.test(l))return s>l?1:-1;for(s=s.match(h),l=l.match(h),d=s.length>l.length?l.length:s.length;p<d;)if((u=s[p])!==(c=l[p++]))return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===m&&"desc"===i||"bottom"===m&&"asc"===i)&&(g*=-1),g}},d.prototype.registerModule("sort",V);var G=function(e){this.table=e};return G.prototype.initializeColumn=function(e){var t,n=this,o=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=n._extractValidator(e))&&o.push(t)}):(t=this._extractValidator(e.definition.validator))&&o.push(t),e.modules.validate=!!o.length&&o)},G.prototype._extractValidator=function(e){var t,n,o;switch(void 0===e?"undefined":s(e)){case"string":return n=(t=e.split(":",2)).shift(),o=t[0],this._buildValidator(n,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},G.prototype._buildValidator=function(e,t){var n="function"==typeof e?e:this.validators[e];return n?{type:"function"==typeof e?"function":e,func:n,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},G.prototype.validate=function(e,t,n){var o=this,r=[];return e&&e.forEach(function(e){e.func.call(o,t,n,e.params)||r.push({type:e.type,parameters:e.params})}),!r.length||r},G.prototype.validators={integer:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,n){return""===t||null==t||!isNaN(t)},string:function(e,t,n){return""===t||null==t||isNaN(t)},max:function(e,t,n){return""===t||null==t||parseFloat(t)<=n},min:function(e,t,n){return""===t||null==t||parseFloat(t)>=n},minLength:function(e,t,n){return""===t||null==t||String(t).length>=n},maxLength:function(e,t,n){return""===t||null==t||String(t).length<=n},in:function(e,t,n){return""===t||null==t||("string"==typeof n&&(n=n.split("|")),""===t||n.indexOf(t)>-1)},regex:function(e,t,n){return""===t||null==t||new RegExp(n).test(t)},unique:function(e,t,n){if(""===t||null==t)return!0;var o=!0,r=e.getData(),i=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var n=e.getData();n!==r&&t==i.getFieldValue(n)&&(o=!1)}),o},required:function(e,t,n){return""!==t&&null!=t}},d.prototype.registerModule("validate",G),d},"object"===s(n)&&void 0!==t?t.exports=a():void 0===(i="function"==typeof(r=a)?r.call(n,o,n,t):r)||(t.exports=i)},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(11)).default&&(r=document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){(t=t||window.event).target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(11)).default&&(r=document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(11)).default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):i(e,t)}:i;function i(e,t){if(t)do{if(t===e)return!0}while(t=t.parentNode);return!1}t.default=r,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(11)),i=o(n(32)),a=o(n(33)),s=function(){};r.default&&(s=function(e,t,n,o){return(0,i.default)(e,t,n,o),function(){(0,a.default)(e,t,n,o)}});var l=s;t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")},e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){return(0,r.default)(e.replace(i,"ms-"))};var r=o(n(26)),i=/^-ms-/;e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=t.animationEnd=t.animationDelay=t.animationTiming=t.animationDuration=t.animationName=t.transitionEnd=t.transitionDuration=t.transitionDelay=t.transitionTiming=t.transitionProperty=t.transform=void 0;var r,i,a,s,l,u,c,d,p,h,f,m=o(n(11)),g="transform";if(t.transform=g,t.animationEnd=a,t.transitionEnd=i,t.transitionDelay=c,t.transitionTiming=u,t.transitionDuration=l,t.transitionProperty=s,t.animationDelay=f,t.animationTiming=h,t.animationDuration=p,t.animationName=d,m.default){var v=function(){for(var e,t,n=document.createElement("div").style,o={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},r=Object.keys(o),i="",a=0;a<r.length;a++){var s=r[a];if(s+"TransitionProperty"in n){i="-"+s.toLowerCase(),e=o[s]("TransitionEnd"),t=o[s]("AnimationEnd");break}}!e&&"transitionProperty"in n&&(e="transitionend");!t&&"animationName"in n&&(t="animationend");return n=null,{animationEnd:t,transitionEnd:e,prefix:i}}();r=v.prefix,t.transitionEnd=i=v.transitionEnd,t.animationEnd=a=v.animationEnd,t.transform=g=r+"-"+g,t.transitionProperty=s=r+"-transition-property",t.transitionDuration=l=r+"-transition-duration",t.transitionDelay=c=r+"-transition-delay",t.transitionTiming=u=r+"-transition-timing-function",t.animationName=d=r+"-animation-name",t.animationDuration=p=r+"-animation-duration",t.animationTiming=h=r+"-animation-delay",t.animationDelay=f=r+"-animation-timing-function"}var y={transform:g,end:i,property:s,timing:u,delay:c,duration:l};t.default=y},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return null==e?t:(e="function"==typeof e?e():e,r.default.findDOMNode(e)||null)};var o,r=(o=n(8))&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=g(n(66)),r=g(n(34)),i=g(n(11)),a=g(n(35)),s=g(n(2)),l=g(n(23)),u=g(n(67)),c=g(n(0)),d=g(n(8)),p=g(n(27)),h=g(n(81)),f=g(n(39)),m=g(n(83));function g(e){return e&&e.__esModule?e:{default:e}}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var b=new p.default;var w=function(e){var t,n;function s(){for(var t,n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return(t=e.call.apply(e,[this].concat(i))||this).state={exited:!t.props.show},t.onPortalRendered=function(){t.props.onShow&&t.props.onShow(),t.autoFocus()},t.onShow=function(){var e=(0,m.default)(y(y(t))),n=(0,f.default)(t.props.container,e.body);t.props.manager.add(y(y(t)),n,t.props.containerClassName),t.removeKeydownListener=(0,a.default)(e,"keydown",t.handleDocumentKeyDown),t.removeFocusListener=(0,a.default)(e,"focus",function(){return setTimeout(t.enforceFocus)},!0)},t.onHide=function(){t.props.manager.remove(y(y(t))),t.removeKeydownListener(),t.removeFocusListener(),t.props.restoreFocus&&t.restoreLastFocus()},t.setDialogRef=function(e){t.dialog=e},t.setBackdropRef=function(e){t.backdrop=e&&d.default.findDOMNode(e)},t.handleHidden=function(){var e;(t.setState({exited:!0}),t.onHide(),t.props.onExited)&&(e=t.props).onExited.apply(e,arguments)},t.handleBackdropClick=function(e){e.target===e.currentTarget&&(t.props.onBackdropClick&&t.props.onBackdropClick(e),!0===t.props.backdrop&&t.props.onHide())},t.handleDocumentKeyDown=function(e){t.props.keyboard&&27===e.keyCode&&t.isTopModal()&&(t.props.onEscapeKeyDown&&t.props.onEscapeKeyDown(e),t.props.onHide())},t.enforceFocus=function(){if(t.props.enforceFocus&&t._isMounted&&t.isTopModal()){var e=(0,o.default)((0,m.default)(y(y(t))));t.dialog&&!(0,r.default)(t.dialog,e)&&t.dialog.focus()}},t.renderBackdrop=function(){var e=t.props,n=e.renderBackdrop,o=e.backdropTransition,r=n({ref:t.setBackdropRef,onClick:t.handleBackdropClick});return o&&(r=c.default.createElement(o,{appear:!0,in:t.props.show},r)),r},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s.getDerivedStateFromProps=function(e){return e.show?{exited:!1}:e.transition?null:{exited:!0}};var l=s.prototype;return l.getSnapshotBeforeUpdate=function(e){return i.default&&!e.show&&this.props.show&&(this.lastFocus=(0,o.default)()),null},l.componentDidMount=function(){this._isMounted=!0,this.props.show&&this.onShow()},l.componentDidUpdate=function(e){var t=this.props.transition;!e.show||this.props.show||t?!e.show&&this.props.show&&this.onShow():this.onHide()},l.componentWillUnmount=function(){var e=this.props,t=e.show,n=e.transition;this._isMounted=!1,(t||n&&!this.state.exited)&&this.onHide()},l.autoFocus=function(){if(this.props.autoFocus){var e=(0,o.default)((0,m.default)(this));this.dialog&&!(0,r.default)(this.dialog,e)&&(this.lastFocus=e,this.dialog.focus())}},l.restoreLastFocus=function(){this.lastFocus&&this.lastFocus.focus&&(this.lastFocus.focus(),this.lastFocus=null)},l.isTopModal=function(){return this.props.manager.isTopModal(this)},l.render=function(){var e=this.props,t=e.show,n=e.container,o=e.children,r=e.renderDialog,i=e.role,a=void 0===i?"dialog":i,l=e.transition,u=e.backdrop,d=e.className,p=e.style,f=e.onExit,m=e.onExiting,g=e.onEnter,y=e.onEntering,b=e.onEntered,w=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,["show","container","children","renderDialog","role","transition","backdrop","className","style","onExit","onExiting","onEnter","onEntering","onEntered"]);if(!(t||l&&!this.state.exited))return null;var E=v({role:a,ref:this.setDialogRef,"aria-modal":"dialog"===a||void 0},function(e,t){var n=Object.keys(e),o={};return n.map(function(n){Object.prototype.hasOwnProperty.call(t,n)||(o[n]=e[n])}),o}(w,s.propTypes),{style:p,className:d,tabIndex:"-1"}),C=r?r(E):c.default.createElement("div",E,c.default.cloneElement(o,{role:"document"}));return l&&(C=c.default.createElement(l,{appear:!0,unmountOnExit:!0,in:t,onExit:f,onExiting:m,onExited:this.handleHidden,onEnter:g,onEntering:y,onEntered:b},C)),c.default.createElement(h.default,{container:n,onRendered:this.onPortalRendered},c.default.createElement(c.default.Fragment,null,u&&this.renderBackdrop(),C))},s}(c.default.Component);w.propTypes={show:s.default.bool,container:s.default.oneOfType([l.default,s.default.func]),onShow:s.default.func,onHide:s.default.func,backdrop:s.default.oneOfType([s.default.bool,s.default.oneOf(["static"])]),renderDialog:s.default.func,renderBackdrop:s.default.func,onEscapeKeyDown:s.default.func,onBackdropClick:s.default.func,containerClassName:s.default.string,keyboard:s.default.bool,transition:u.default,backdropTransition:u.default,autoFocus:s.default.bool,enforceFocus:s.default.bool,restoreFocus:s.default.bool,onEnter:s.default.func,onEntering:s.default.func,onEntered:s.default.func,onExit:s.default.func,onExiting:s.default.func,onExited:s.default.func,manager:s.default.object.isRequired},w.defaultProps={show:!1,role:"dialog",backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,onHide:function(){},manager:b,renderBackdrop:function(e){return c.default.createElement("div",e)}},w.Manager=p.default;var E=w;t.default=E,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(38)),i=o(n(15));function a(e,t,n){var o,i={target:e,currentTarget:e};function a(e){e.target===e.currentTarget&&(clearTimeout(o),e.target.removeEventListener(r.default.end,a),t.call(this))}r.default.end?null==n&&(n=l(e)||0):n=0,r.default.end?(e.addEventListener(r.default.end,a,!1),o=setTimeout(function(){return a(i)},1.5*(n||100))):setTimeout(a.bind(null,i),0)}a._parseDuration=l;var s=a;function l(e){var t=(0,i.default)(e,r.default.duration),n=-1===t.indexOf("ms")?1e3:1;return parseFloat(t)*n}t.default=s,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){return 2===arguments.length?u(e,t):u({consumers:e,mapToProps:t},n)};var o=i(n(0)),r=i(n(25));function i(e){return e&&e.__esModule?e:{default:e}}function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}var s=function(e){var t="string"==typeof e?e:e.name||e.displayName;return t?"ContextTransform("+t+")":"ContextTransform"},l=function(e){return e.Consumer||e};function u(e,t){var n=e.consumers,i=e.mapToProps,u=e.displayName,c=e.forwardRefAs,d=void 0===c?"ref":c,p=n;Array.isArray(n)||(p=[n]);var h=l(p[0]);var f=1===p.length?function(e,n){var r,s=a(((r={})[d]=n,r),e);return o.default.createElement(h,null,function(n){return o.default.createElement(t,a({},s,i(n,e)))})}:function(e,n){var r,s=a(((r={})[d]=n,r),e);return p.reduceRight(function(e,t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=l(t);return o.default.createElement(a,null,function(t){return e.apply(void 0,r.concat([t]))})}},function(){for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return o.default.createElement(t,a({},s,i.apply(void 0,r.concat([e]))))})()};return(0,r.default)(f,{displayName:u||s(t)})}},function(e,t,n){var o=n(85);e.exports=h,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t))},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var r=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,o=[],i=0,a=0,s="",c=t&&t.delimiter||"/";null!=(n=r.exec(e));){var d=n[0],p=n[1],h=n.index;if(s+=e.slice(a,h),a=h+d.length,p)s+=p[1];else{var f=e[a],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],w=n[7];s&&(o.push(s),s="");var E=null!=m&&null!=f&&f!==m,C="+"===b||"*"===b,x="?"===b||"*"===b,T=n[2]||c,k=v||y;o.push({name:g||i++,prefix:m||"",delimiter:T,optional:x,repeat:C,partial:E,asterisk:!!w,pattern:k?u(k):w?".*":"[^"+l(T)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&o.push(s),o}function a(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,r){for(var i="",s=n||{},l=(r||{}).pretty?a:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(i+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(o(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(d=l(p[h]),!t[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===h?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):l(p),!t[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');i+=c.prefix+d}}else i+=c}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e.sensitive?"":"i"}function p(e,t,n){o(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,i=!1!==n.end,a="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)a+=l(u);else{var p=l(u.prefix),h="(?:"+u.pattern+")";t.push(u),u.repeat&&(h+="(?:"+p+h+")*"),a+=h=u.optional?u.partial?p+"("+h+")?":"(?:"+p+"("+h+"))?":p+"("+h+")"}}var f=l(n.delimiter||"/"),m=a.slice(-f.length)===f;return r||(a=(m?a.slice(0,-f.length):a)+"(?:"+f+"(?=$))?"),a+=i?"$":r&&m?"":"(?="+f+"|$)",c(new RegExp("^"+a,d(n)),t)}function h(e,t,n){return o(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var o=0;o<n.length;o++)t.push({name:o,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):o(e)?function(e,t,n){for(var o=[],r=0;r<e.length;r++)o.push(h(e[r],t,n).source);return c(new RegExp("(?:"+o.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";
+"use strict";e.exports={accentHeight:"accent-height",accumulate:"accumulate",additive:"additive",alphabetic:"alphabetic",amplitude:"amplitude",arabicForm:"arabic-form",ascent:"ascent",attributeName:"attributeName",attributeType:"attributeType",azimuth:"azimuth",baseFrequency:"baseFrequency",baseProfile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcMode:"calcMode",capHeight:"cap-height",class:"class",clipPathUnits:"clipPathUnits",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cx:"cx",cy:"cy",d:"d",descent:"descent",diffuseConstant:"diffuseConstant",divisor:"divisor",dur:"dur",dx:"dx",dy:"dy",edgeMode:"edgeMode",elevation:"elevation",end:"end",exponent:"exponent",externalResourcesRequired:"externalResourcesRequired",fill:"fill",filterRes:"filterRes",filterUnits:"filterUnits",fontFamily:"font-family",fontSize:"font-size",fontStretch:"font-stretch",fontStyle:"font-style",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphame:"glyph-name",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:"hanging",height:"height",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",id:"id",ideographic:"ideographic",in:"in",in2:"in2",intercept:"intercept",k:"k",k1:"k1",k2:"k2",k3:"k3",k4:"k4",kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lang:"lang",lengthAdjust:"lengthAdjust",limitingConeAngle:"limitingConeAngle",local:"local",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:"mathematical",max:"max",media:"media",method:"method",min:"min",mode:"mode",name:"name",numOctaves:"numOctaves",offset:"offset",onAbort:"onabort",onActivate:"onactivate",onBegin:"onbegin",onClick:"onclick",onEnd:"onend",onError:"onerror",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onLoad:"onload",onMouseDown:"onmousedown",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onRepeat:"onrepeat",onResize:"onresize",onScroll:"onscroll",onUnload:"onunload",onZoom:"onzoom",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overlinePosition:"overline-position",overlineThickness:"overline-thickness",panose1:"panose-1",path:"path",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",points:"points",pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:"r",radius:"radius",refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:"restart",result:"result",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",seed:"seed",slope:"slope",spacing:"spacing",specularConstant:"specularConstant",specularExponent:"specularExponent",spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchTiles:"stitchTiles",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:"string",style:"style",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",target:"target",targetX:"targetX",targetY:"targetY",textLength:"textLength",title:"title",to:"to",transform:"transform",type:"type",u1:"u1",u2:"u2",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:"unicode",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:"values",version:"version",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",width:"width",widths:"widths",x:"x",xHeight:"x-height",x1:"x1",x2:"x2",xChannelSelector:"xChannelSelector",xlink:"xlink",xml:"xml",y:"y",y1:"y1",y2:"y2",yChannelSelector:"yChannelSelector",z:"z",zoomAndPan:"zoomAndPan",alignmentBaseline:"alignment-baseline",baselineShift:"baseline-shift",clipPath:"clip-path",clipRule:"clip-rule",clip:"clip",colorInterpolationFilters:"color-interpolation-filters",colorInterpolation:"color-interpolation",colorProfile:"color-profile",colorRendering:"color-rendering",color:"color",cursor:"cursor",direction:"direction",display:"display",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:"filter",floodColor:"flood-color",floodOpacity:"flood-opacity",fontSizeAdjust:"font-size-adjust",fontVariant:"font-variant",fontWeight:"font-weight",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",imageRendering:"image-rendering",kerning:"kerning",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",mask:"mask",opacity:"opacity",overflow:"overflow",pointerEvents:"pointer-events",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",stroke:"stroke",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",unicodeBidi:"unicode-bidi",visibility:"visibility",wordSpacing:"word-spacing",writingMode:"writing-mode"}}])},function(e,t,n){"use strict";t.__esModule=!0;var o=n(73),r=function(){};t.propsToOptions=function(e){for(var t={},n=0,i=["height","layout","layoutColumnsOnNewData","columnMinWidth","columnVertAlign","resizableColumns","resizableRows","autoResize","tooltips","tooltipsHeader","tooltipGenerationMode","initialSort","initialFilter","footerElement","index","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardCopyHeader","clipboardPasteParser","clipboardPasteAction","rowFormatter","placeholder"];n<i.length;n++){var a=i[n];void 0!==e[a]&&(t[a]=e[a])}for(var s=0,l=["tableBuilt","rowClick","rowDblClick","rowContext","rowTap","rowDblTap","rowTapHold","rowAdded","rowDeleted","rowMoved","rowUpdated","rowSelectionChanged","rowSelected","rowDeselected","rowResized","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellEditing","cellEdited","cellEditCancelled","columnMoved","columnResized","columnTitleChanged","columnVisibilityChanged","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","htmlImporting","htmlImported","dataLoading","dataLoaded","dataEdited","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","renderStarted","renderComplete","pageLoaded","localized","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","validationFailed","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","downloadComplete"];s<l.length;s++){var u=l[s];t[u]=e[u]||r}return"object"==typeof e.footerElement&&(t.footerElement=o.renderToString(e.footerElement)),t}},function(t,n,o){var r,i,a,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};a=function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return r;r++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return i;r++}}});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,n=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>n?(t=e-n,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,n,o=[];if(e&&e.length){for(var r in t=e[0]){var i={field:r,title:r},a=t[r];switch(void 0===a?"undefined":s(a)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(a)?"array":"string";break;default:n=isNaN(a)||""===a?a.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}i.sorter=n,o.push(i)}this.table.options.columns=o,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var n=this;n.headersElement.firstChild;)n.headersElement.removeChild(n.headersElement.firstChild);n.columns=[],n.columnsByIndex=[],n.columnsByField={},n.table.modExists("frozenColumns")&&n.table.modules.frozenColumns.reset(),e.forEach(function(e,t){n._addColumn(e)}),n._reIndexColumns(),n.table.options.responsiveLayout&&n.table.modExists("responsiveLayout",!0)&&n.table.modules.responsiveLayout.initialize(),n.redraw(!0)},t.prototype._addColumn=function(e,t,n){var r=new o(e,this),i=r.getElement(),a=n?this.findColumnIndex(n):n;if(n&&a>-1){var s=this.columns.indexOf(n.getTopColumn()),l=n.getElement();t?(this.columns.splice(s,0,r),l.parentNode.insertBefore(i,l)):(this.columns.splice(s+1,0,r),l.parentNode.insertBefore(i,l.nextSibling))}else t?(this.columns.unshift(r),this.headersElement.insertBefore(r.getElement(),this.headersElement.firstChild)):(this.columns.push(r),this.headersElement.appendChild(r.getElement()));return r},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var n;e.clearVerticalAlign(),(n=e.getHeight())>t&&(t=n)}),e.columns.forEach(function(n){n.verticalAlign(e.table.options.columnVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){return"object"!=(void 0===e?"undefined":s(e))?this.columnsByField[e]||!1:e instanceof o?e:e instanceof n?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&this.columns.find(function(t){return t.element===e})||!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){return(e=this.columnsByIndex.findIndex(function(e){return e.visible}))>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,n){e(t,n)})},t.prototype.getDefinitions=function(e){var t=[];return this.columnsByIndex.forEach(function(n){(!e||e&&n.visible)&&t.push(n.getDefinition())}),t},t.prototype.getDefinitionTree=function(){var e=[];return this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach(function(e){t.push(e.getComponent())}),t},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,n){this._moveColumnInArray(this.columns,e,t,n),this._moveColumnInArray(this.columnsByIndex,e,t,n,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,n,o,r){var i,a=e.indexOf(t);a>-1&&(e.splice(a,1),(i=e.indexOf(n))>-1?o&&(i+=1):i=a,e.splice(i,0,t),r&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(a,1)[0];e.cells.splice(i,0,t)}}))},t.prototype.scrollToColumn=function(e,t,n){var o=this,r=0,i=0,a=0,s=e.getElement();return new Promise(function(l,u){if(void 0===t&&(t=o.table.options.scrollToColumnPosition),void 0===n&&(n=o.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":a=-o.element.clientWidth/2;break;case"right":a=s.clientWidth-o.headersElement.clientWidth}if(!n&&(i=s.offsetLeft)>0&&i+s.offsetWidth<o.element.clientWidth)return!1;r=s.offsetLeft+o.element.scrollLeft+a,r=Math.max(Math.min(r,o.table.rowManager.element.scrollWidth-o.table.rowManager.element.clientWidth),0),o.table.rowManager.scrollHorizontal(r),o.scrollHorizontal(r),l()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=[];return this.columnsByIndex.forEach(function(n){t.push(n.generateCell(e))}),t},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,n=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(o){var r,i,a;o.visible&&(r=o.definition.width||0,i=void 0===o.minWidth?e.table.options.columnMinWidth:parseInt(o.minWidth),a="string"==typeof r?r.indexOf("%")>-1?t/100*parseInt(r):parseInt(r):r,n+=a>i?a:i)}),n},t.prototype.addColumn=function(e,t,n){var o=this._addColumn(e,t,n);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&o.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(e){var t,n=e.getField();n&&delete this.columnsByField[n],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(d.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var n=function(e){this._column=e,this.type="ColumnComponent"};n.prototype.getElement=function(){return this._column.getElement()},n.prototype.getDefinition=function(){return this._column.getDefinition()},n.prototype.getField=function(){return this._column.getField()},n.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getVisibility=function(){return this._column.visible},n.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},n.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},n.prototype.toggle=function(){this._column.visible?this.hide():this.show()},n.prototype.delete=function(){this._column.delete()},n.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getParentColumn=function(){return this._column.parent instanceof o&&this._column.parent.getComponent()},n.prototype._getSelf=function(){return this._column},n.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},n.prototype.getTable=function(){return this._column.table},n.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},n.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},n.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},n.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},n.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()};var o=function e(t,n){var o=this;this.table=n.table,this.definition=t,this.parent=n,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,n){var r=new e(t,o);o.attachColumn(r)}),o.checkColumnVisibility()):n.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};o.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},o.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},o.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},o.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},o.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},o.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},o.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},o.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is depricated, you should now use htmlOutput"))},o.prototype.setTooltip=function(){var e=this,t=e.definition,n=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;n?!0===n?t.field?e.table.modules.localize.bind("columns|"+t.field,function(n){e.element.setAttribute("title",n||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof n&&!1===(n=n(e.getComponent()))&&(n=""),e.element.setAttribute("title",n)):e.element.setAttribute("title","")},o.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},o.prototype._bindEvents=function(){var e,t,n,o=this,r=o.definition;"function"==typeof r.headerClick&&o.element.addEventListener("click",function(e){r.headerClick(e,o.getComponent())}),"function"==typeof r.headerDblClick&&o.element.addEventListener("dblclick",function(e){r.headerDblClick(e,o.getComponent())}),"function"==typeof r.headerContext&&o.element.addEventListener("contextmenu",function(e){r.headerContext(e,o.getComponent())}),"function"==typeof r.headerTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&r.headerTap(e,o.getComponent()),n=!1})),"function"==typeof r.headerDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,r.headerDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof r.headerTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,r.headerTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof r.cellClick&&(o.cellEvents.cellClick=r.cellClick),"function"==typeof r.cellDblClick&&(o.cellEvents.cellDblClick=r.cellDblClick),"function"==typeof r.cellContext&&(o.cellEvents.cellContext=r.cellContext),"function"==typeof r.cellMouseEnter&&(o.cellEvents.cellMouseEnter=r.cellMouseEnter),"function"==typeof r.cellMouseLeave&&(o.cellEvents.cellMouseLeave=r.cellMouseLeave),"function"==typeof r.cellMouseOver&&(o.cellEvents.cellMouseOver=r.cellMouseOver),"function"==typeof r.cellMouseOut&&(o.cellEvents.cellMouseOut=r.cellMouseOut),"function"==typeof r.cellMouseMove&&(o.cellEvents.cellMouseMove=r.cellMouseMove),"function"==typeof r.cellTap&&(o.cellEvents.cellTap=r.cellTap),"function"==typeof r.cellDblTap&&(o.cellEvents.cellDblTap=r.cellDblTap),"function"==typeof r.cellTapHold&&(o.cellEvents.cellTapHold=r.cellTapHold),"function"==typeof r.cellEdited&&(o.cellEvents.cellEdited=r.cellEdited),"function"==typeof r.cellEditing&&(o.cellEvents.cellEditing=r.cellEditing),"function"==typeof r.cellEditCancelled&&(o.cellEvents.cellEditCancelled=r.cellEditCancelled)},o.prototype._buildColumnHeader=function(){var e=this,t=e.definition,n=e.table;(n.modExists("sort")&&n.modules.sort.initializeColumn(e,e.contentElement),n.modExists("format")&&n.modules.format.initializeColumn(e),void 0!==t.editor&&n.modExists("edit")&&n.modules.edit.initializeColumn(e),void 0!==t.validator&&n.modExists("validate")&&n.modules.validate.initializeColumn(e),n.modExists("mutator")&&n.modules.mutator.initializeColumn(e),n.modExists("accessor")&&n.modules.accessor.initializeColumn(e),s(n.options.responsiveLayout)&&n.modExists("responsiveLayout")&&n.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)});t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.align?"":e.definition.align},o.prototype._buildColumnHeaderContent=function(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),e.appendChild(this._buildColumnHeaderTitle()),e},o.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,n=e.table,o=document.createElement("div");if(o.classList.add("tabulator-col-title"),t.editableTitle){var r=document.createElement("input");r.classList.add("tabulator-title-editor"),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("change",function(){t.title=r.value,n.options.columnTitleChanged.call(e.table,e.getComponent())}),o.appendChild(r),t.field?n.modules.localize.bind("columns|"+t.field,function(e){r.value=e||t.title||" "}):r.value=t.title||" "}else t.field?n.modules.localize.bind("columns|"+t.field,function(n){e._formatColumnHeaderTitle(o,n||t.title||" ")}):e._formatColumnHeaderTitle(o,t.title||" ");return o},o.prototype._formatColumnHeaderTitle=function(e,t){var n,o,r,i;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(n=this.table.modules.format.getFormatter(this.definition.titleFormatter),i={getValue:function(){return t},getElement:function(){return e}},r="function"==typeof(r=this.definition.titleFormatterParams||{})?r():r,void 0===(o=n.call(this.table.modules.format,i,r))?"undefined":s(o)){case"object":o instanceof Node?e.appendChild(o):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",o));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=o}else e.innerHTML=t},o.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},o.prototype._getFlatData=function(e){return e[this.field]},o.prototype._getNestedData=function(e){for(var t,n=e,o=this.fieldStructure,r=o.length,i=0;i<r&&(t=n=n[o[i]],n);i++);return t},o.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},o.prototype._setNesteData=function(e,t){for(var n=e,o=this.fieldStructure,r=o.length,i=0;i<r;i++)i==r-1?n[o[i]]=t:(n[o[i]]||(n[o[i]]={}),n=n[o[i]])},o.prototype.attachColumn=function(e){this.groupElement?(this.columns.push(e),this.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},o.prototype.verticalAlign=function(e,t){var n=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=n+"px",this.isGroup&&(this.groupElement.style.minHeight=n-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},o.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},o.prototype.getElement=function(){return this.element},o.prototype.getGroupElement=function(){return this.groupElement},o.prototype.getField=function(){return this.field},o.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},o.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},o.prototype.getColumns=function(){return this.columns},o.prototype.getCells=function(){return this.cells},o.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},o.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},o.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},o.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px")},o.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},o.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},o.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},o.prototype.getWidth=function(){return this.width},o.prototype.getHeight=function(){return this.element.offsetHeight},o.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},o.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(e){e.delete()});for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},o.prototype.generateCell=function(e){var t=new u(this,e);return this.cells.push(t),t},o.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e+1)},o.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e-1)},o.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},o.prototype.fitToData=function(){this.widthFixed||(this.element.style.width="",this.cells.forEach(function(e){e.clearWidth()}));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach(function(t){var n=t.getWidth();n>e&&(e=n)}),e&&this.setWidthActual(e+1))},o.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},o.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],o.prototype.getComponent=function(){return new n(this)};var r=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]};r.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},r.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},r.prototype.getElement=function(){return this.element},r.prototype.getTableElement=function(){return this.tableElement},r.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},r.prototype.setColumnManager=function(e){this.columnManager=e},r.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,n=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(n),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t)):e.scrollTop=t})},r.prototype.findRow=function(e){var t=this;return"object"!=(void 0===e?"undefined":s(e))?null!=e&&(t.rows.find(function(n){return n.data[t.table.options.index]==e})||!1):e instanceof a?e:e instanceof i?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.rows.find(function(t){return t.element===e})||!1},r.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},r.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},r.prototype.scrollToRow=function(e,t,n){var o,r=this,i=this.getDisplayRows().indexOf(e),a=e.getElement(),s=0;return new Promise(function(e,l){if(i>-1){if(void 0===t&&(t=r.table.options.scrollToRowPosition),void 0===n&&(n=r.table.options.scrollToRowIfVisible),"nearest"===t)switch(r.renderMode){case"classic":o=d.prototype.helpers.elOffset(a).top,t=Math.abs(r.element.scrollTop-o)>Math.abs(r.element.scrollTop+r.element.clientHeight-o)?"bottom":"top";break;case"virtual":t=Math.abs(r.vDomTop-i)>Math.abs(r.vDomBottom-i)?"bottom":"top"}if(!n&&d.prototype.helpers.elVisible(a)&&(s=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top)>0&&s<r.element.clientHeight-a.offsetHeight)return!1;switch(r.renderMode){case"classic":r.element.scrollTop=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top+r.element.scrollTop;break;case"virtual":r._virtualRenderFill(i,!0)}switch(t){case"middle":case"center":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight/2;break;case"bottom":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight+a.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},r.prototype.setData=function(e,t){var n=this,o=this;return new Promise(function(r,i){t&&n.getDisplayRows().length?o.table.options.pagination?o._setDataActual(e,!0):n.reRenderInPosition(function(){o._setDataActual(e)}):(n.table.options.autoColumns&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),r()})},r.prototype._setDataActual=function(e,t){var n=this;n.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":s(e))){var o=new a(e,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),n.table.options.dataLoaded.call(this.table,e),n.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":s(e),"\nData: ",e)},r.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},r.prototype.deleteRow=function(e,t){var n=this.rows.indexOf(e),o=this.activeRows.indexOf(e);o>-1&&this.activeRows.splice(o,1),n>-1&&this.rows.splice(n,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},r.prototype.addRow=function(e,t,n,o){var r=this.addRowActual(e,t,n,o);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",r,{data:e,pos:t,index:n}),r},r.prototype.addRows=function(e,t,n){var o=this,r=this,i=[];return new Promise(function(a,s){t=o.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length-1,(void 0===n&&t||void 0!==n&&!t)&&e.reverse(),e.forEach(function(e,o){var a=r.addRow(e,t,n,!0);i.push(a)}),o.table.options.groupBy&&o.table.modExists("groupRows")?o.table.modules.groupRows.updateGroupRows(!0):o.table.options.pagination&&o.table.modExists("page")?o.refreshActiveData(!1,!1,!0):o.reRenderInPosition(),o.table.modExists("columnCalcs")&&o.table.modules.columnCalcs.recalc(o.table.rowManager.activeRows),a(i)})},r.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},r.prototype.addRowActual=function(e,t,n,o){var r,i=e instanceof a?e:new a(e||{},this),s=this.findAddRowPos(t);if(!n&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(r=this.getDisplayRows(),s?r.length?n=r[0]:this.activeRows.length&&(n=this.activeRows[this.activeRows.length-1],s=!1):r.length&&(n=r[r.length-1],s=!(r.length<this.table.modules.page.getPageSize()))),n&&(n=this.findRow(n)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(i);var l=i.getGroup().rows;l.length>1&&(!n||n&&-1==l.indexOf(n)?s?l[0]!==i&&(n=l[0],this._moveRowInArray(i.getGroup().rows,i,n,s)):l[l.length-1]!==i&&(n=l[l.length-1],this._moveRowInArray(i.getGroup().rows,i,n,s)):this._moveRowInArray(i.getGroup().rows,i,n,s))}if(n){var u=this.rows.indexOf(n),c=this.activeRows.indexOf(n);this.displayRowIterator(function(e){var t=e.indexOf(n);t>-1&&e.splice(s?t:t+1,0,i)}),c>-1&&this.activeRows.splice(s?c:c+1,0,i),u>-1&&this.rows.splice(s?u:u+1,0,i)}else s?(this.displayRowIterator(function(e){e.unshift(i)}),this.activeRows.unshift(i),this.rows.unshift(i)):(this.displayRowIterator(function(e){e.push(i)}),this.activeRows.push(i),this.rows.push(i));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,i.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),o||this.reRenderInPosition(),i},r.prototype.moveRow=function(e,t,n){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{pos:this.getRowPosition(e),to:t,after:n}),this.moveRowActual(e,t,n),this.table.options.rowMoved.call(this.table,e.getComponent())},r.prototype.moveRowActual=function(e,t,n){var o=this;if(this._moveRowInArray(this.rows,e,t,n),this._moveRowInArray(this.activeRows,e,t,n),this.displayRowIterator(function(r){o._moveRowInArray(r,e,t,n)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var r=t.getGroup(),i=e.getGroup();r===i?this._moveRowInArray(r.rows,e,t,n):(i&&i.removeRow(e),r.insertRow(e,t,n))}},r.prototype._moveRowInArray=function(e,t,n,o){var r,i,a;if(t!==n&&((r=e.indexOf(t))>-1&&(e.splice(r,1),(i=e.indexOf(n))>-1?o?e.splice(i+1,0,t):e.splice(i,0,t):e.splice(r,0,t)),e===this.getDisplayRows())){a=i>r?i:r+1;for(var s=r<i?r:i;s<=a;s++)e[s]&&this.styleRow(e[s],s)}},r.prototype.clearData=function(){this.setData([])},r.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},r.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},r.prototype.nextDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return!1!==n&&n<this.displayRowsCount-1&&(o=this.getDisplayRows()[n+1]),!o||o instanceof a&&"row"==o.type?o:this.nextDisplayRow(o,t)},r.prototype.prevDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return n&&(o=this.getDisplayRows()[n-1]),!o||o instanceof a&&"row"==o.type?o:this.prevDisplayRow(o,t)},r.prototype.findRowIndex=function(e,t){var n;return!!((e=this.findRow(e))&&(n=t.indexOf(e))>-1)&&n},r.prototype.getData=function(e,t){var n=[];return(e?this.activeRows:this.rows).forEach(function(e){n.push(e.getData(t||"data"))}),n},r.prototype.getComponents=function(e){var t=[];return(e?this.activeRows:this.rows).forEach(function(e){t.push(e.getComponent())}),t},r.prototype.getDataCount=function(e){return e?this.activeRows.length:this.rows.length},r.prototype._genRemoteRequest=function(){var e=this,t=e.table,n=t.options,o={};if(t.modExists("page")){if(n.ajaxSorting){var r=e.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),o[e.table.modules.page.paginationDataSentNames.sorters]=r}if(n.ajaxFiltering){var i=e.table.modules.filter.getFilters(!0,!0);o[e.table.modules.page.paginationDataSentNames.filters]=i}e.table.modules.ajax.setParams(o,!0)}t.modules.ajax.sendRequest().then(function(t){e.setData(t)}).catch(function(e){})},r.prototype.filterRefresh=function(){var e=this.table,t=e.options,n=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(n)},r.prototype.sorterRefresh=function(e){var t=this.table,n=this.table.options,o=this.scrollLeft;n.ajaxSorting?("remote"==n.pagination||n.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):n.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(o)},r.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},r.prototype.refreshActiveData=function(e,t,n){var o,r=this.table;switch(this.table.modExists("edit")&&this.table.modules.edit.cancelEdit(),e||(e="all"),r.options.selectable&&!r.options.selectablePersistence&&r.modExists("selectRow")&&r.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:r.modExists("filter")?this.setActiveRows(r.modules.filter.filter(this.rows)):this.setActiveRows(this.rows.slice(0));case"sort":t?t=!1:r.modExists("sort")&&r.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&r.modules.frozenRows.isFrozen()&&(r.modules.frozenRows.getDisplayIndex()||r.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.frozenRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.frozenRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.frozenRows.setDisplayIndex(o));case"group":t?t=!1:r.options.groupBy&&r.modExists("groupRows")&&(r.modules.groupRows.getDisplayIndex()||r.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.groupRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.groupRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.groupRows.setDisplayIndex(o));case"tree":t?t=!1:r.options.dataTree&&r.modExists("dataTree")&&(r.modules.dataTree.getDisplayIndex()||r.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.dataTree.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.dataTree.getRows(this.getDisplayRows(o-1)),o))&&r.modules.dataTree.setDisplayIndex(o)),r.options.pagination&&r.modExists("page")&&!n&&"local"==r.modules.page.getMode()&&r.modules.page.reset();case"page":t?t=!1:r.options.pagination&&r.modExists("page")&&(r.modules.page.getDisplayIndex()||r.modules.page.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.page.getDisplayIndex(),"local"==r.modules.page.getMode()&&r.modules.page.setMaxRows(this.getDisplayRows(o-1).length),!0!==(o=this.setDisplayRows(r.modules.page.getRows(this.getDisplayRows(o-1)),o))&&r.modules.page.setDisplayIndex(o))}d.prototype.helpers.elVisible(this.element)&&(n?this.reRenderInPosition():(this.renderTable(),r.options.layoutColumnsOnNewData&&this.table.columnManager.redraw(!0))),r.modExists("columnCalcs")&&r.modules.columnCalcs.recalc(this.activeRows)},r.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},r.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},r.prototype.getNextDisplayIndex=function(){return this.displayRows.length},r.prototype.setDisplayRows=function(e,t){var n=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,n=!0):(this.displayRows.push(e),n=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),n},r.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},r.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,n=this.element.clientHeight+t,o=!1,r=0,i=0,a=this.getDisplayRows();if(e){this.getDisplayRows();for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(a[s])if(o){if(!(n-a[s].getElement().offsetTop>=0))break;i=s}else t-a[s].getElement().offsetTop>=0?r=s:o=!0}else r=this.vDomTop,i=this.vDomBottom;return a.slice(r,i+1)},r.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},r.prototype.getRows=function(){return this.rows},r.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode()){for(var t=this.element.scrollTop,n=!1,o=!1,r=this.scrollLeft,i=this.getDisplayRows(),a=this.vDomTop;a<=this.vDomBottom;a++)if(i[a]){var s=t-i[a].getElement().offsetTop;if(!(!1===o||Math.abs(s)<o))break;o=s,n=a}e&&e(),this._virtualRenderFill(!1===n?this.displayRowsCount-1:n,!0,o||0),this.scrollHorizontal(r)}else this.renderTable(),e&&e()},r.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},r.prototype.getRenderMode=function(){return this.renderMode},r.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.renderMode&&this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder)),this.table.options.renderComplete.call(this.table)},r.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},r.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,n=!0;e.getDisplayRows().forEach(function(o,r){e.styleRow(o,r),t.appendChild(o.getElement()),o.initialize(!0),"group"!==o.type&&(n=!1)}),t.style.minWidth=n?e.table.columnManager.getWidth()+"px":""},r.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},r.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},r.prototype.styleRow=function(e,t){var n=e.getElement();t%2?(n.classList.add("tabulator-row-even"),n.classList.remove("tabulator-row-odd")):(n.classList.add("tabulator-row-odd"),n.classList.remove("tabulator-row-even"))},r.prototype._virtualRenderFill=function(e,t,n){var o=this.tableElement,r=this.element,i=0,a=0,s=0,l=0,u=!0,c=this.getDisplayRows();if(n=n||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);var p=(this.displayRowsCount-e+1)*this.vDomRowHeight;p<this.height&&(e-=Math.ceil((this.height-p)/this.vDomRowHeight))<0&&(e=0),e-=i=Math.min(Math.max(Math.floor(this.vDomWindowBuffer/this.vDomRowHeight),this.vDomWindowMinMarginRows),e)}else this._clearVirtualDom();if(this.displayRowsCount&&d.prototype.helpers.elVisible(this.element)){for(this.vDomTop=e,this.vDomBottom=e-1;(a<=this.height+this.vDomWindowBuffer||l<this.vDomWindowMinTotalRows)&&this.vDomBottom<this.displayRowsCount-1;){var h,f=this.vDomBottom+1,m=c[f];this.styleRow(m,f),o.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),h=m.getHeight(),l<i?s+=h:a+=h,h>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*h),"group"!==m.type&&(u=!1),this.vDomBottom++,l++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+n:this.scrollTop-s,this.vDomBottomPad=this.vDomBottom==this.displayRowsCount-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-s,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+s)/l),this.vDomBottomPad=this.vDomRowHeight*(this.displayRowsCount-this.vDomBottom-1),this.vDomScrollHeight=s+a+this.vDomBottomPad-this.height),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+s+n-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,r.scrollTop=this.scrollTop,o.style.minWidth=u?this.table.columnManager.getWidth()+"px":"",this.table.options.groupBy&&"fitDataFill"!=this.table.modules.layout.getMode()&&this.displayRowsCount==this.table.modules.groupRows.countGroups()&&(this.tableElement.style.minWidth=this.table.columnManager.getWidth())}else this.renderEmptyScroll()},r.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,n=this.scrollTop-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer;if(-t>o||n>o){var r=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(r)}else e?(t<0&&this._addTopRow(-t),n<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-n)):(t>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(t),n>=0&&this._addBottomRow(n))},r.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomTop){var r=this.vDomTop-1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.insertBefore(i.getElement(),n.firstChild),i.initialized&&i.heightInitialized||(this.vDomTopNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomTopPad-=a,this.vDomTopPad<0&&(this.vDomTopPad=r*this.vDomRowHeight),r||(this.vDomTopPad=0),n.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=a,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(o[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},r.prototype._removeTopRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomTop],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode.removeChild(r),this.vDomTopPad+=o,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?o:o+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},r.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var r=this.vDomBottom+1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.appendChild(i.getElement()),i.initialized&&i.heightInitialized||(this.vDomBottomNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomBottomPad-=a,(this.vDomBottomPad<0||r==this.displayRowsCount-1)&&(this.vDomBottomPad=0),n.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=a,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(o[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},r.prototype._removeBottomRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomBottom],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode&&r.parentNode.removeChild(r),this.vDomBottomPad+=o,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=o,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},r.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},r.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},r.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var e=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+e+"px)",this.element.style.height="calc(100% - "+e+"px)",this.element.style.maxHeight="calc(100% - "+e+"px)"}},r.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},r.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==self.renderMode?self.table.options.groupBy?self.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},r.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var i=function(e){this._row=e};i.prototype.getData=function(e){return this._row.getData(e)},i.prototype.getElement=function(){return this._row.getElement()},i.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},i.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},i.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},i.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},i.prototype.delete=function(){return this._row.delete()},i.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},i.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},i.prototype.move=function(e,t){this._row.moveToRow(e,t)},i.prototype.update=function(e){return this._row.updateData(e)},i.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},i.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},i.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},i.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},i.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},i.prototype._getSelf=function(){return this._row},i.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},i.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},i.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},i.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},i.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},i.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},i.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},i.prototype.reformat=function(){return this._row.reinitialize()},i.prototype.getGroup=function(){return this._row.getGroup().getComponent()},i.prototype.getTable=function(){return this._row.table},i.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},i.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var a=function(e,t){this.table=t.table,this.parent=t,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(e),this.generateElement()};a.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},a.prototype.getElement=function(){return this.element},a.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.generateElement=function(){var e,t,n,o=this;!1!==o.table.options.selectable&&o.table.modExists("selectRow")&&o.table.modules.selectRow.initializeRow(this),!1!==o.table.options.movableRows&&o.table.modExists("moveRow")&&o.table.modules.moveRow.initializeRow(this),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.initializeRow(this),o.table.options.rowClick&&o.element.addEventListener("click",function(e){o.table.options.rowClick(e,o.getComponent())}),o.table.options.rowDblClick&&o.element.addEventListener("dblclick",function(e){o.table.options.rowDblClick(e,o.getComponent())}),o.table.options.rowContext&&o.element.addEventListener("contextmenu",function(e){o.table.options.rowContext(e,o.getComponent())}),o.table.options.rowMouseEnter&&o.element.addEventListener("mouseenter",function(e){o.table.options.rowMouseEnter(e,o.getComponent())}),o.table.options.rowMouseLeave&&o.element.addEventListener("mouseleave",function(e){o.table.options.rowMouseLeave(e,o.getComponent())}),o.table.options.rowMouseOver&&o.element.addEventListener("mouseover",function(e){o.table.options.rowMouseOver(e,o.getComponent())}),o.table.options.rowMouseOut&&o.element.addEventListener("mouseout",function(e){o.table.options.rowMouseOut(e,o.getComponent())}),o.table.options.rowMouseMove&&o.element.addEventListener("mousemove",function(e){o.table.options.rowMouseMove(e,o.getComponent())}),o.table.options.rowTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.table.options.rowTap(e,o.getComponent()),n=!1})),o.table.options.rowDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.table.options.rowDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.table.options.rowTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.table.options.rowTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},a.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},a.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},a.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},a.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},a.prototype.calcHeight=function(e){var t=0,n=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var n=e.getHeight();n>t&&(t=n)}),this.height=e?Math.max(t,n):this.manualHeight?this.height:Math.max(t,n),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},a.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},a.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},a.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},a.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},a.prototype.getHeight=function(){return this.outerHeight},a.prototype.getWidth=function(){return this.element.offsetWidth},a.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},a.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},a.prototype.updateData=function(e){var t=this,n=this,o=d.prototype.helpers.elVisible(this.element);return new Promise(function(r,i){for(var a in"string"==typeof e&&(e=JSON.parse(e)),t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.block(),n.table.modExists("mutator")&&(e=n.table.modules.mutator.transformRow(e,"data",!0)),e)n.data[a]=e[a];for(var a in t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.unblock(),e){var s=t.getCell(a);s&&s.getValue()!=e[a]&&(s.setValueProcessData(e[a]),o&&s.cellRendered())}o?(n.normalizeHeight(),n.table.options.rowFormatter&&n.table.options.rowFormatter(n.getComponent())):(t.initialized=!1,t.height=0,t.heightStyled=""),!1!==n.table.options.dataTree&&n.table.modExists("dataTree")&&void 0!==e[t.table.modules.dataTree.getChildField()]&&(t.table.modules.dataTree.initializeRow(t),t.table.rowManager.refreshActiveData("tree",!1,!0)),n.table.options.rowUpdated.call(t.table,n.getComponent()),r()})},a.prototype.getData=function(e){return e?this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this.data,e):void 0:this.data},a.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},a.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},a.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var n=e+1;n<this.cells.length;n++){var o=this.cells[n];if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())){var r=!0;if("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r){t=o;break}}}return t},a.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var n=e-1;n>=0;n--){var o=this.cells[n],r=!0;if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r)){t=o;break}}return t},a.prototype.getCells=function(){return this.cells},a.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},a.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},a.prototype.moveToRow=function(e,t){var n=this.table.rowManager.findRow(e);n?(this.table.rowManager.moveRowActual(this,n,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},a.prototype.delete=function(){var e=this;return new Promise(function(t,n){var o=e.table.rowManager.getRowIndex(e);e.deleteActual(),e.table.options.history&&e.table.modExists("history")&&(o&&(o=e.table.rowManager.rows[o-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!o,index:o})),t()})},a.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},a.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},a.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.getGroup=function(){return this.modules.group||!1},a.prototype.getComponent=function(){return new i(this)};var l=function(e){this._cell=e};l.prototype.getValue=function(){return this._cell.getValue()},l.prototype.getOldValue=function(){return this._cell.getOldValue()},l.prototype.getElement=function(){return this._cell.getElement()},l.prototype.getRow=function(){return this._cell.row.getComponent()},l.prototype.getData=function(){return this._cell.row.getData()},l.prototype.getField=function(){return this._cell.column.getField()},l.prototype.getColumn=function(){return this._cell.column.getComponent()},l.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},l.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},l.prototype.edit=function(e){return this._cell.edit(e)},l.prototype.cancelEdit=function(){this._cell.cancelEdit()},l.prototype.nav=function(){return this._cell.nav()},l.prototype.checkHeight=function(){this._cell.checkHeight()},l.prototype.getTable=function(){return this._cell.table},l.prototype._getSelf=function(){return this._cell};var u=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};u.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},u.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},u.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,n=e.element,o=this.column.getField();(n.style.textAlign=e.column.hozAlign,o&&n.setAttribute("tabulator-field",o),e.column.definition.cssClass)&&e.column.definition.cssClass.split(" ").forEach(function(e){n.classList.add(e)});"hover"===this.table.options.tooltipGenerationMode&&n.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},u.prototype._bindClickEvents=function(e){var t=this,n=t.element;(e.cellClick||t.table.options.cellClick)&&n.addEventListener("click",function(n){var o=t.getComponent();e.cellClick&&e.cellClick.call(t.table,n,o),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,n,o)}),e.cellDblClick||this.table.options.cellDblClick?n.addEventListener("dblclick",function(n){var o=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,n,o),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,n,o)}):n.addEventListener("dblclick",function(e){if(e.preventDefault(),document.selection)(n=document.body.createTextRange()).moveToElementText(t.element),n.select();else if(window.getSelection){var n;(n=document.createRange()).selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(n)}}),(e.cellContext||this.table.options.cellContext)&&n.addEventListener("contextmenu",function(n){var o=t.getComponent();e.cellContext&&e.cellContext.call(t.table,n,o),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,n,o)})},u.prototype._bindMouseEvents=function(e){var t=this,n=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&n.addEventListener("mouseenter",function(n){var o=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,n,o),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,n,o)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&n.addEventListener("mouseleave",function(n){var o=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,n,o),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,n,o)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&n.addEventListener("mouseover",function(n){var o=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,n,o),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,n,o)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&n.addEventListener("mouseout",function(n){var o=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,n,o),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,n,o)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&n.addEventListener("mousemove",function(n){var o=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,n,o),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,n,o)})},u.prototype._bindTouchEvents=function(e){var t,n,o,r=this,i=r.element;(e.cellTap||this.table.options.cellTap)&&(o=!1,i.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.addEventListener("touchend",function(t){if(o){var n=r.getComponent();e.cellTap&&e.cellTap.call(r.table,t,n),r.table.options.cellTap&&r.table.options.cellTap.call(r.table,t,n)}o=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,i.addEventListener("touchend",function(n){if(t){clearTimeout(t),t=null;var o=r.getComponent();e.cellDblTap&&e.cellDblTap.call(r.table,n,o),r.table.options.cellDblTap&&r.table.options.cellDblTap.call(r.table,n,o)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(n=null,i.addEventListener("touchstart",function(t){clearTimeout(n),n=setTimeout(function(){clearTimeout(n),n=null,o=!1;var i=r.getComponent();e.cellTapHold&&e.cellTapHold.call(r.table,t,i),r.table.options.cellTapHold&&r.table.options.cellTapHold.call(r.table,t,i)},1e3)},{passive:!0}),i.addEventListener("touchend",function(e){clearTimeout(n),n=null}))},u.prototype._generateContents=function(){var e;switch(void 0===(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value)?"undefined":s(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},u.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},u.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},u.prototype.getElement=function(){return this.element},u.prototype.getValue=function(){return this.value},u.prototype.getOldValue=function(){return this.oldValue},u.prototype.setValue=function(e,t){var n;this.setValueProcessData(e,t)&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),n=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,n),this.table.options.cellEdited.call(this.table,n),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},u.prototype.setValueProcessData=function(e,t){var n=!1;return this.value!=e&&(n=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),n&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),n},u.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},u.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},u.prototype.clearWidth=function(){this.width="",this.element.style.width=""},u.prototype.getWidth=function(){return this.width||this.element.offsetWidth},u.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},u.prototype.checkHeight=function(){this.row.reinitializeHeight()},u.prototype.clearHeight=function(){this.element.style.height="",this.height=null},u.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},u.prototype.getHeight=function(){return this.height||this.element.offsetHeight},u.prototype.show=function(){this.element.style.display=""},u.prototype.hide=function(){this.element.style.display="none"},u.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},u.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},u.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},u.prototype.nav=function(){var e=this,t=!1,n=this.row.getCellIndex(this);return{next:function(){var t,n=this.right();return!!n||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(n=t.findNextEditableCell(-1)))&&(n.edit(),!0)},prev:function(){var t,n=this.left();return!!n||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(n=t.findPrevEditableCell(t.cells.length)))&&(n.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(n))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(n))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[n].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[n].edit()}}},u.prototype.getIndex=function(){this.row.getCellIndex(this)},u.prototype.getComponent=function(){return new l(this)};var c=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},c.prototype._initialize=function(e){if(this.table.options.footerElement)switch(s(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},c.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},c.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var d=function e(t,n){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(t),this.initializeOptions(n||{}),this._create(),e.prototype.comms.register(this)};d.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,footerElement:!1,index:"id",keybindings:[],clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},d.prototype.initializeOptions=function(e){for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t);for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===s(this.defaultOptions[t])?this.options[t]={}:this.options[t]=this.defaultOptions[t]},d.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},d.prototype._mapDepricatedFunctionality=function(){},d.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},d.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new r(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},d.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},d.prototype._buildElement=function(){var e=this,t=this.element,n=this.modules,o=this.options;for(o.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);for(var r in o.height&&(o.height=isNaN(o.height)?o.height:o.height+"px",t.style.height=o.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&n.layout.initialize(o.layout),!1!==o.headerFilterPlaceholder&&n.localize.setHeaderFilterPlaceholder(o.headerFilterPlaceholder),o.langs)n.localize.installLang(r,o.langs[r]);if(n.localize.setLocale(o.locale),"string"==typeof o.placeholder){var i=document.createElement("div");i.classList.add("tabulator-placeholder");var a=document.createElement("span");a.innerHTML=o.placeholder,i.appendChild(a),o.placeholder=i}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),o.footerElement&&this.footerManager.activate(),(o.persistentLayout||o.persistentSort||o.persistentFilter)&&this.modExists("persistence",!0)&&n.persistence.initialize(o.persistenceMode,o.persistenceID),o.persistentLayout&&this.modExists("persistence",!0)&&(o.columns=n.persistence.load("columns",o.columns)),o.movableRows&&this.modExists("moveRow")&&n.moveRow.initialize(),o.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&n.columnCalcs.initialize(),this.columnManager.setColumns(o.columns),o.dataTree&&this.modExists("dataTree",!0)&&n.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(o.persistentSort||o.initialSort)&&this.modExists("sort",!0)){var s=[];o.persistentSort&&this.modExists("persistence",!0)?!1===(s=n.persistence.load("sort"))&&o.initialSort&&(s=o.initialSort):o.initialSort&&(s=o.initialSort),n.sort.setSort(s)}if((o.persistentFilter||o.initialFilter)&&this.modExists("filter",!0)){var l=[];o.persistentFilter&&this.modExists("persistence",!0)?!1===(l=n.persistence.load("filter"))&&o.initialFilter&&(l=o.initialFilter):o.initialFilter&&(l=o.initialFilter),n.filter.setFilter(l)}o.initialHeaderFilter&&this.modExists("filter",!0)&&o.initialHeaderFilter.forEach(function(t){var o=e.columnManager.findColumn(t.field);if(!o)return console.warn("Column Filter Error - No matching column found:",t.field),!1;n.filter.setHeaderFilterValue(o,t.value)}),this.modExists("ajax")&&n.ajax.initialize(),o.pagination&&this.modExists("page",!0)&&n.page.initialize(),o.groupBy&&this.modExists("groupRows",!0)&&n.groupRows.initialize(),this.modExists("keybindings")&&n.keybindings.initialize(),this.modExists("selectRow")&&n.selectRow.clearSelectionData(!0),o.autoResize&&this.modExists("resizeTable")&&n.resizeTable.initialize(),this.modExists("clipboard")&&n.clipboard.initialize(),o.printAsHtml&&this.modExists("print")&&n.print.initialize(),o.tableBuilt.call(this)},d.prototype._loadInitialData=function(){this.options.pagination&&this.modExists("page")?(this.modules.page.reset(!0),"local"==this.options.pagination?this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data):this.options.ajaxURL?this.modules.page.setPage(1).then(function(){}).catch(function(){}):this.rowManager.setData([])):this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data)},d.prototype.destroy=function(){var e=this.element;for(d.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},d.prototype._detectBrowser=function(){var e=navigator.userAgent;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},d.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(n,o){var r=document.createElement("input");r.type="file",r.accept=e||".json,application/json",r.addEventListener("change",function(e){var i,a=r.files[0],s=new FileReader;s.readAsText(a),s.onload=function(e){try{i=JSON.parse(s.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void o(e)}t._setData(i).then(function(e){n(e)}).catch(function(e){n(e)})},s.onerror=function(e){console.warn("File Load Error - Unable to read file"),o()}}),r.click()})},d.prototype.setData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n)},d.prototype._setData=function(e,t,n,o){return"string"!=typeof e?e?this.rowManager.setData(e,o):this.modExists("ajax")&&(this.modules.ajax.getUrl||this.options.ajaxURLGenerator)?"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o):this.rowManager.setData([],o):0==e.indexOf("{")||0==e.indexOf("[")?this.rowManager.setData(JSON.parse(e),o):this.modExists("ajax",!0)?(t&&this.modules.ajax.setParams(t),n&&this.modules.ajax.setConfig(n),this.modules.ajax.setUrl(e),"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o)):void 0},d.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},d.prototype.getData=function(e){return this.rowManager.getData(e)},d.prototype.getDataCount=function(e){return this.rowManager.getDataCount(e)},d.prototype.searchRows=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,n)},d.prototype.searchData=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,n)},d.prototype.getHtml=function(e,t,n){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(e,t,n)},d.prototype.print=function(e,t,n){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,n)},d.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},d.prototype.replaceData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n,!0)},d.prototype.updateData=function(e){var t=this,n=this,o=0;return new Promise(function(r,i){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);t&&(o++,t.updateData(e).then(function(){--o||r()}))}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.addData=function(e,t,n){var o=this;return new Promise(function(r,i){o.modExists("ajax")&&o.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?o.rowManager.addRows(e,t,n).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),r(t)}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.updateOrAddData=function(e){var t=this,n=this,o=[],r=0;return new Promise(function(i,a){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);r++,t?t.updateData(e).then(function(){r--,o.push(t.getComponent()),r||i(o)}):n.rowManager.addRows(e).then(function(e){r--,o.push(e[0].getComponent()),r||i(o)})}):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))})},d.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.getRowFromPosition=function(e,t){var n=this.rowManager.getRowFromPosition(e,t);return n?n.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.deleteRow=function(e){var t=this;return new Promise(function(n,o){var r=t.rowManager.findRow(e);r?r.delete().then(function(){n()}).catch(function(e){o(e)}):(console.warn("Delete Error - No matching row found:",e),o("Delete Error - No matching row found"))})},d.prototype.addRow=function(e,t,n){var o=this;return new Promise(function(r,i){"string"==typeof e&&(e=JSON.parse(e)),o.rowManager.addRows(e,t,n).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),r(e[0].getComponent())})})},d.prototype.updateOrAddRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(i.getComponent())}).catch(function(e){r(e)}):i=n.rowManager.addRows(t).then(function(e){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(e[0].getComponent())}).catch(function(e){r(e)})})},d.prototype.updateRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){o(i.getComponent())}).catch(function(e){r(e)}):(console.warn("Update Error - No matching row found:",e),r("Update Error - No matching row found"))})},d.prototype.scrollToRow=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.rowManager.findRow(e);a?o.rowManager.scrollToRow(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching row found:",e),i("Scroll Error - No matching row found"))})},d.prototype.moveRow=function(e,t,n){var o=this.rowManager.findRow(e);o?o.moveToRow(t,n):console.warn("Move Error - No matching row found:",e)},d.prototype.getRows=function(e){return this.rowManager.getComponents(e)},d.prototype.getRowPosition=function(e,t){var n=this.rowManager.findRow(e);return n?this.rowManager.getRowPosition(n,t):(console.warn("Position Error - No matching row found:",e),!1)},d.prototype.copyToClipboard=function(e,t,n,o){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e,t,n,o)},d.prototype.setColumns=function(e){this.columnManager.setColumns(e)},d.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},d.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},d.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},d.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},d.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},d.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},d.prototype.addColumn=function(e,t,n){var o=this.columnManager.findColumn(n);this.columnManager.addColumn(e,t,o)},d.prototype.deleteColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Delete Error - No matching column found:",e),!1;t.delete()},d.prototype.scrollToColumn=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.columnManager.findColumn(e);a?o.columnManager.scrollToColumn(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching column found:",e),i("Scroll Error - No matching column found"))})},d.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},d.prototype.getLocale=function(){return this.modules.localize.getLocale()},d.prototype.getLang=function(e){return this.modules.localize.getLang(e)},d.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},d.prototype.setHeight=function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.redraw()},d.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},d.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},d.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},d.prototype.setFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.addFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},d.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},d.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var n=this.columnManager.findColumn(e);if(!n)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(n,t)}},d.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},d.prototype.removeFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},d.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},d.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(e)},d.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},d.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},d.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},d.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},d.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},d.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},d.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){t.options.pagination&&t.modExists("page")&&(e=t.rowManager.findRow(e))?t.modules.page.setPageToRow(e).then(function(){n()}).catch(function(){o()}):o()})},d.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},d.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},d.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},d.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},d.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},d.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},d.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},d.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},d.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},d.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},d.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},d.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},d.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},d.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},d.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},d.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},d.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},d.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},d.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},d.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},d.prototype.download=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n)},d.prototype.downloadToTab=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n,!0)},d.prototype.tableComms=function(e,t,n,o){this.modules.comms.receive(e,t,n,o)},d.prototype.moduleBindings={},d.prototype.extendModule=function(e,t,n){if(d.prototype.moduleBindings[e]){var o=d.prototype.moduleBindings[e].prototype[t];if(o)if("object"==(void 0===n?"undefined":s(n)))for(var r in n)o[r]=n[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},d.prototype.registerModule=function(e,t){d.prototype.moduleBindings[e]=t},d.prototype.bindModules=function(){for(var e in this.modules={},d.prototype.moduleBindings)this.modules[e]=new d.prototype.moduleBindings[e](this)},d.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},d.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var n in e)null!=e[n]&&"object"===s(e[n])?e[n]instanceof Date?t[n]=new Date(e[n]):t[n]=this.deepClone(e[n]):t[n]=e[n];return t}},d.prototype.comms={tables:[],register:function(e){d.prototype.comms.tables.push(e)},deregister:function(e){var t=d.prototype.comms.tables.indexOf(e);t>-1&&d.prototype.comms.tables.splice(t,1)},lookupTable:function(e){var t,n,o=[];if("string"==typeof e){if((t=document.querySelectorAll(e)).length)for(var r=0;r<t.length;r++)(n=d.prototype.comms.matchElement(t[r]))&&o.push(n)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof d?(n=d.prototype.comms.matchElement(e))&&o.push(n):Array.isArray(e)?e.forEach(function(e){o=o.concat(d.prototype.comms.lookupTable(e))}):console.warn("Table Connection Error - Invalid Selector",e);return o},matchElement:function(e){return d.prototype.comms.tables.find(function(t){return e instanceof d?t===e:t.element===e})}};var p=function(e){this.table=e,this.mode=null};p.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},p.prototype.getMode=function(){return this.mode},p.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},p.prototype.modes={fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,n,o=this.table.element.clientWidth,r=0,i=0,a=0,s=[],l=[],u=0,c=0;function d(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function p(e,t,n,o){var r=[],i=0,a=0,s=0,l=0,u=0,c=[];function h(e){return n*(e.column.definition.widthGrow||1)}function f(e){return d(e.width)-n*(e.column.definition.widthShrink||0)}return e.forEach(function(e,t){var n=o?f(e):h(e);e.column.minWidth>=n?r.push(e):(c.push(e),u+=o?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),r.length?(r.forEach(function(e){i+=o?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),l=(a=t-i)-(s=u?Math.floor(a/u):a)*u,l+=p(c,a,s,o)):(l=u?t-Math.floor(t/u)*u:t,c.forEach(function(e){e.width=o?f(e):h(e)})),l}this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var t,n,o;e.visible&&(t=e.definition.width,n=parseInt(e.minWidth),t?(o=d(t),r+=o>n?o:n,e.definition.widthShrink&&(l.push({column:e,width:o>n?o:n}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),i=o-r,t=Math.floor(i/a);c=p(s,i,t,!1);s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach(function(e){i-=e.width}),(n=Math.abs(c)+i)>0&&u&&(c=p(l,n,Math.floor(n/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach(function(e){e.column.setWidth(e.width)}),l.forEach(function(e){e.column.setWidth(e.width)})}},d.prototype.registerModule("layout",p);var h=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},h.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},h.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},h.prototype._setLangProp=function(e,t){for(var n in t)e[n]&&"object"==s(e[n])?this._setLangProp(e[n],t[n]):e[n]=t[n]},h.prototype.setLocale=function(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langs[e]){var t=e.split("-")[0];this.langs[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=d.prototype.helpers.deepClone(this.langs.default||{}),"default"!=e&&function e(t,n){for(var o in t)"object"==s(t[o])?(n[o]||(n[o]={}),e(t[o],n[o])):n[o]=t[o]}(this.langs[e],this.lang),this.table.options.localized.call(this.table,this.locale,this.lang),this._executeBindings()},h.prototype.getLocale=function(e){return self.locale},h.prototype.getLang=function(e){return e?this.langs[e]:this.lang},h.prototype.getText=function(e,t){var n=(e=t?e+"|"+t:e).split("|");return this._getLangElement(n,this.locale)||""},h.prototype._getLangElement=function(e,t){var n=this.lang;return e.forEach(function(e){var t;n&&(t=n[e],n=void 0!==t&&t)}),n},h.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},h.prototype._executeBindings=function(){var e=this,t=function(t){e.bindings[t].forEach(function(n){n(e.getText(t),e.lang)})};for(var n in e.bindings)t(n)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},d.prototype.registerModule("localize",h);var f=function(e){this.table=e};f.prototype.getConnections=function(e){var t=this,n=[];return d.prototype.comms.lookupTable(e).forEach(function(e){t.table!==e&&n.push(e)}),n},f.prototype.send=function(e,t,n,o){var r=this,i=this.getConnections(e);i.forEach(function(e){e.tableComms(r.table.element,t,n,o)}),!i.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},f.prototype.receive=function(e,t,n,o){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,n,o);console.warn("Inter-table Comms Error - no such module:",t)},d.prototype.registerModule("comms",f);var m=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="accessor"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupAccessor(e.definition[a]))&&(n=!0,o[a]={accessor:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.accessor=o)},m.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},m.prototype.transformRow=function(e,t){var n="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),o=d.prototype.helpers.deepClone(e||{});return this.table.columnManager.traverse(function(e){var r,i,a,s;e.modules.accessor&&(i=e.modules.accessor[n]||e.modules.accessor.accessor||!1)&&"undefined"!=(r=e.getFieldValue(o))&&(s=e.getComponent(),a="function"==typeof i.params?i.params(r,o,t,s):i.params,e.setFieldValue(o,i.accessor(r,o,t,a,s)))}),o},m.prototype.accessors={},d.prototype.registerModule("accessor",m);var g=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};g.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},g.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},g.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},g.prototype.setParams=function(e,t){if(t)for(var n in this.params=this.params||{},e)this.params[n]=e[n];else this.params=e},g.prototype.getParams=function(){return this.params||{}},g.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},g.prototype._loadDefaultConfig=function(e){if(!this.config||e)for(var t in this.config={},this.defaultConfig)this.config[t]=this.defaultConfig[t]},g.prototype.setUrl=function(e){this.url=e},g.prototype.getUrl=function(){return this.url},g.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},g.prototype.nextPage=function(e){this.loading||e<(this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight)&&this.table.modules.page.nextPage().then(function(){}).catch(function(){})},g.prototype.blockActiveRequest=function(){this.requestOrder++},g.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},g.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(n,o){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){n()}).catch(function(e){o(e)})}).catch(function(e){o(e)})})},g.prototype.generateParamsList=function(e,t){var n=this,o=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){o=o.concat(n.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":s(e)))for(var r in e)o=o.concat(n.generateParamsList(e[r],t?t+"["+r+"]":r));else o.push({key:t,value:e});return o},g.prototype.serializeParams=function(e){var t=this.generateParamsList(e),n=[];return t.forEach(function(e){n.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),n.join("&")},g.prototype.sendRequest=function(e){var t,n=this,o=this,r=o.url;return o.requestOrder++,t=o.requestOrder,o._loadDefaultConfig(),new Promise(function(i,a){!1!==o.table.options.ajaxRequesting.call(n.table,o.url,o.params)?(o.loading=!0,e||o.showLoader(),n.loaderPromise(r,o.config,o.params).then(function(e){t===o.requestOrder?(o.table.options.ajaxResponse&&(e=o.table.options.ajaxResponse.call(o.table,o.url,o.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),o.hideLoader(),o.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),o.table.options.ajaxError.call(o.table,e),o.showError(),setTimeout(function(){o.hideLoader()},3e3),o.loading=!1,a()})):a()})},g.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},g.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},g.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},g.prototype.defaultConfig={method:"GET"},g.prototype.defaultURLGenerator=function(e,t,n){return e&&n&&Object.keys(n).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(n))),e},g.prototype.defaultLoaderPromise=function(e,t,n){var o,r=this;return new Promise(function(i,a){if(e=r.urlGenerator(e,t,n),"GET"!=t.method.toUpperCase())if(o="object"===s(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var l in o.headers)t.headers||(t.headers={}),void 0===t.headers[l]&&(t.headers[l]=o.headers[l]);t.body=o.body.call(r,e,t,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){a(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),a(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),a(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},g.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,n){return JSON.stringify(n)}},form:{headers:{},body:function(e,t,n){var o=this.generateParamsList(n),r=new FormData;return o.forEach(function(e){r.append(e.key,e.value)}),r}}},d.prototype.registerModule("ajax",g);var v=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};v.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},v.prototype.initialize=function(){this.genColumn=new o({field:"value"},this)},v.prototype.registerColumnField=function(){},v.prototype.initializeColumn=function(e){var t=e.definition,n={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(s(t.topCalc)){case"string":this.calculations[t.topCalc]?n.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":n.topCalc=t.topCalc}n.topCalc&&(e.modules.columnCalcs=n,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(s(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?n.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":n.botCalc=t.bottomCalc}n.botCalc&&(e.modules.columnCalcs=n,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},v.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},v.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},v.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},v.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},v.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},v.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},v.prototype.recalcGroup=function(e){var t,n;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),n=this.generateRowData("bottom",t),e.calcs.bottom.updateData(n),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),n=this.generateRowData("top",t),e.calcs.top.updateData(n),e.calcs.top.reinitialize()))},v.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},v.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},v.prototype.rowsToData=function(e){var t=[];return e.forEach(function(e){t.push(e.getData())}),t},v.prototype.generateRow=function(e,t){var n,o=this,r=this.generateRowData(e,t);return o.table.modExists("mutator")&&o.table.modules.mutator.disable(),n=new a(r,this),o.table.modExists("mutator")&&o.table.modules.mutator.enable(),n.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),n.type="calc",n.generateCells=function(){var t=[];o.table.columnManager.columnsByIndex.forEach(function(r){o.genColumn.setField(r.getField()),o.genColumn.hozAlign=r.hozAlign,r.definition[e+"CalcFormatter"]&&o.table.modExists("format")?o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter(r.definition[e+"CalcFormatter"]),params:r.definition[e+"CalcFormatterParams"]}:o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter("plaintext"),params:{}},o.genColumn.definition.cssClass=r.definition.cssClass;var i=new u(o.genColumn,n);i.column=r,i.setWidth(),r.cells.push(i),t.push(i),r.visible||i.hide()}),this.cells=t},n},v.prototype.generateRowData=function(e,t){var n,o,r={},i="top"==e?this.topCalcs:this.botCalcs,a="top"==e?"topCalc":"botCalc";return i.forEach(function(e){var i=[];e.modules.columnCalcs&&e.modules.columnCalcs[a]&&(t.forEach(function(t){i.push(e.getFieldValue(t))}),o=a+"Params",n="function"==typeof e.modules.columnCalcs[o]?e.modules.columnCalcs[o](i,t):e.modules.columnCalcs[o],e.setFieldValue(r,e.modules.columnCalcs[a](i,t,n)))}),r},v.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},v.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},v.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},v.prototype.getResults=function(){var e=this,t={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach(function(n){t[n.getKey()]=e.getGroupResults(n)}):t={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},t},v.prototype.getGroupResults=function(e){var t=this,n=e._getSelf(),o=e.getSubGroups(),r={};return o.forEach(function(e){r[e.getKey()]=t.getGroupResults(e)}),{top:n.calcs.top?n.calcs.top.getData():{},bottom:n.calcs.bottom?n.calcs.bottom.getData():{},groups:r}},v.prototype.calculations={avg:function(e,t,n){var o=0,r=void 0!==n.precision?n.precision:2;return e.length&&(o=e.reduce(function(e,t){return e+(t=Number(t))}),o/=e.length,o=!1!==r?o.toFixed(r):o),parseFloat(o).toString()},max:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))>o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},min:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))<o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},sum:function(e,t,n){var o=0,r=void 0!==n.precision&&n.precision;return e.length&&e.forEach(function(e){e=Number(e),o+=isNaN(e)?0:Number(e)}),!1!==r?o.toFixed(r):o},concat:function(e,t,n){var o=0;return e.length&&(o=e.reduce(function(e,t){return String(e)+String(t)})),o},count:function(e,t,n){var o=0;return e.length&&e.forEach(function(e){e&&o++}),o}},d.prototype.registerModule("columnCalcs",v);var y=function(e){this.table=e,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};y.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var n;e.processConfig(),e.blocked||(t.preventDefault(),n=e.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",n):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",n),e.htmlElement&&t.clipboardData.setData("text/html",e.htmlElement.outerHTML)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",n),e.htmlElement&&t.originalEvent.clipboardData.setData("text/html",e.htmlElement.outerHTML)),e.table.options.clipboardCopied.call(this.table,n),e.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},y.prototype.processConfig=function(){var e={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(e.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var t in this.table.options.clipboardCopyConfig)e[t]=this.table.options.clipboardCopyConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnHeaders?"groups"!==e.columnHeaders&&!0!==e||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},y.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},y.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},y.prototype.paste=function(e){var t,n,o;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(n=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(n=this.mutateData(n)),o=this.pasteAction.call(this,n),this.table.options.clipboardPasted.call(this.table,t,n,o)):this.table.options.clipboardPasteError.call(this.table,t))},y.prototype.mutateData=function(e){var t=this,n=[];return Array.isArray(e)?e.forEach(function(e){n.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):n=e,n},y.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},y.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},y.prototype.copy=function(e,t,n,o,r){var i,a,s;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?((i=document.createRange()).selectNodeContents(this.table.element),(a=window.getSelection()).toString()&&r&&(e="userSelection",n="raw",t=a.toString()),a.removeAllRanges(),a.addRange(i)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),this.setSelector(e),this.copySelectorParams=void 0!==t&&null!=t?t:this.config.columnHeaders,this.setFormatter(n),this.copyFormatterParams=void 0!==o&&null!=o?o:{},document.execCommand("copy"),a&&a.removeAllRanges())},y.prototype.setSelector=function(e){switch(void 0===(e=e||this.table.options.clipboardCopySelector)?"undefined":s(e)){case"string":this.copySelectors[e]?this.copySelector=this.copySelectors[e]:console.warn("Clipboard Error - No such selector found:",e);break;case"function":this.copySelector=e}},y.prototype.setFormatter=function(e){switch(void 0===(e=e||this.table.options.clipboardCopyFormatter)?"undefined":s(e)){case"string":this.copyFormatters[e]?this.copyFormatter=this.copyFormatters[e]:console.warn("Clipboard Error - No such formatter found:",e);break;case"function":this.copyFormatter=e}},y.prototype.generateContent=function(){var e;return this.htmlElement=!1,e=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,e,this.config,this.copyFormatterParams)},y.prototype.generateSimpleHeaders=function(e){var t=[];return e.forEach(function(e){t.push(e.definition.title)}),t},y.prototype.generateColumnGroupHeaders=function(e){var t=this,n=[];return this.table.columnManager.columns.forEach(function(e){var o=t.processColumnGroup(e);o&&n.push(o)}),n},y.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o={type:"group",title:e.definition.title,column:e};if(n.length){if(o.subGroups=[],o.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(o.width+=n.width,o.subGroups.push(n))}),!o.width)return!1}else{if(!e.field||!e.visible)return!1;o.width=1}return o},y.prototype.groupHeadersToRows=function(e){var t=[];function n(e,o){var r;void 0===t[o]&&(t[o]=[]),t[o].push(e.title),e.subGroups?e.subGroups.forEach(function(e){n(e,o+1)}):(r=0,t.forEach(function(e){var t=e.length;t>r&&(r=t)}),t.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}))}return e.forEach(function(e){n(e,0)}),t},y.prototype.rowsToData=function(e,t,n){var o=this.table.columnManager.columnsByIndex,r=[];return e.forEach(function(e){var t=[],n=e instanceof i?e.getData("clipboard"):e;o.forEach(function(e){var o=e.getFieldValue(n);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push(o)}),r.push(t)}),r},y.prototype.buildComplexRows=function(e){var t=this,n=[];return this.table.modules.groupRows.getGroups().forEach(function(e){n.push(t.processGroupData(e))}),n},y.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getRows(!0),o},y.prototype.getCalcRow=function(e,t,n){var o=e[t];return o&&(n&&(o=o[n]),Object.keys(o).length)?this.rowsToData([o]):[]},y.prototype.buildOutput=function(e,t,n){var o,r=this,i=[],a=this.table.columnManager.columnsByIndex;return t.columnHeaders&&("groups"==t.columnHeaders?(a=this.generateColumnGroupHeaders(this.table.columnManager.columns),i=i.concat(this.groupHeadersToRows(a))):i.push(this.generateSimpleHeaders(a))),this.config.columnCalcs&&(o=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(e,a,o,t,n),t.rowGroups?e.forEach(function(e){i=i.concat(r.parseRowGroupData(e,t,n,o||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"top"))),i=i.concat(this.rowsToData(e,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"bottom")))),i},y.prototype.parseRowGroupData=function(e,t,n,o){var r=this,i=[];return i.push([e.key]),e.subGroups?e.subGroups.forEach(function(a){i=i.concat(r.parseRowGroupData(a,t,n,o[e.key]&&o[e.key].groups||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"top"))),i=i.concat(this.rowsToData(e.rows,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"bottom")))),i},y.prototype.generateHTML=function(e,t,n,o,r){var a,l,u,c,d,p,h,f,m,g=this,v=[];function y(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&b([o]))}function b(e){e.forEach(function(e,n){var o,r=document.createElement("tr"),h=d,f=!1;e instanceof i?o=e.getData("clipboard"):(o=e,f=!0),t.forEach(function(e,n){var i=document.createElement("td"),a=e.getFieldValue(o);switch(void 0===a?"undefined":s(a)){case"object":a=JSON.stringify(a);break;case"undefined":case"null":a="";break;default:a=a}i.innerHTML=a,e.definition.align&&(i.style.textAlign=e.definition.align),t.length,p&&g.mapElementStyles(p,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),r.appendChild(i)}),f?h=c:(n%2||!l||(h=l),n%2&&u&&(h=u)),h&&g.mapElementStyles(h,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),a.appendChild(r)})}this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),o.columnHeaders&&("groups"==o.columnHeaders?(t.forEach(function(e){!function e(t,n){void 0===v[n]&&(v[n]=[]),v[n].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}(e,0)}),v.forEach(function(e,t){e.forEach(function(e){e.children||(e.height=v.length-t)})}),function(e){var t=document.createElement("thead");e.forEach(function(e){var n=document.createElement("tr");e.forEach(function(e){var t=document.createElement("th");e.width>1&&(t.colSpan=e.width),e.height>1&&(t.rowSpan=e.height),t.innerHTML=e.title,g.mapElementStyles(e.element,t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(n)}),g.htmlElement.appendChild(t)}(v)):(m=document.createElement("tr"),t.forEach(function(e){var t=document.createElement("th");t.innerHTML=e.definition.title,g.mapElementStyles(e.getElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),m.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),m,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(m)))),t=this.table.columnManager.columnsByIndex,a=document.createElement("tbody"),window.getComputedStyle&&(l=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),c=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),d=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.getElementsByClassName("tabulator-group")[0],d&&(f=d.getElementsByClassName("tabulator-cell"),p=f[0],f[f.length-1])),o.rowGroups?e.forEach(function(e){!function e(n,r){var i=document.createElement("tr"),s=document.createElement("td");s.colSpan=t.length,s.innerHTML=n.key,i.appendChild(s),a.appendChild(i),g.mapElementStyles(h,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.subGroups?n.subGroups.forEach(function(t){e(t,r[n.key]&&r[n.key].groups||{})}):(o.columnCalcs&&y(r,n.key,"top"),b(n.rows),o.columnCalcs&&y(r,n.key,"bottom"))}(e,n||{})}):(o.columnCalcs&&y(n,"top"),b(e),o.columnCalcs&&y(n,"bottom")),this.htmlElement.appendChild(a)},y.prototype.mapElementStyles=function(e,t,n){var o={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}},y.prototype.copySelectors={userSelection:function(e,t){return t},selected:function(e,t){var n=[];return this.table.modExists("selectRow",!0)&&(n=this.table.modules.selectRow.getSelectedRows()),e.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(n,e,t)},table:function(e,t){return e.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),e,t)},active:function(e,t){var n;return n=e.rowGroups?this.buildComplexRows(e):this.table.rowManager.getComponents(!0),this.buildOutput(n,e,t)}},y.prototype.copyFormatters={raw:function(e,t){return e},table:function(e,t){var n=[];return e.forEach(function(e){e.forEach(function(e){void 0===e&&(e=""),(e=null==e?"":e.toString()).match(/\r|\n/)&&(e='"'+(e=e.split('"').join('""'))+'"')}),n.push(e.join("\t"))}),n.join("\n")}},y.prototype.pasteParsers={table:function(e){var t=[],n=!0,o=this.table.columnManager.columns,r=[],i=[];return(e=e.split("\n")).forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=o.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?r.push(t):n=!1}),n||(n=!0,r=[],t[0].forEach(function(e){var t=o.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?r.push(t):n=!1}),n||(r=this.table.columnManager.columnsByIndex)),n&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,n){r[n]&&(t[r[n].field]=e)}),i.push(t)}),i)}},y.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},d.prototype.registerModule("clipboard",y);var b=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};b.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),n=this.table.options;switch(this.field=n.dataTreeChildField,this.indent=n.dataTreeChildIndent,this.elementField=n.dataTreeElementColumn||!!t&&t.field,n.dataTreeBranchElement&&(!0===n.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof n.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=n.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=n.dataTreeBranchElement),n.dataTreeCollapseElement?"string"==typeof n.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=n.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=n.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),n.dataTreeExpandElement?"string"==typeof n.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=n.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=n.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),s(n.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return n.dataTreeStartExpanded};break;case"function":this.startOpen=n.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return n.dataTreeStartExpanded[t]}}},b.prototype.initializeRow=function(e){var t=e.getData()[this.field],n=Array.isArray(t),o=n||!n&&"object"===(void 0===t?"undefined":s(t))&&null!==t;e.modules.dataTree={index:0,open:!!o&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:o}},b.prototype.layoutRow=function(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,t),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(n.branchEl,t.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},b.prototype.generateControlElement=function(e,t){var n=this,o=e.modules.dataTree,r=(t=t||e.getCells()[0].getElement(),o.controlEl);!1!==o.children&&(o.open?(o.controlEl=this.collapseEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.collapseRow(e)})):(o.controlEl=this.expandEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.expandRow(e)})),o.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(o.controlEl,r):t.insertBefore(o.controlEl,t.firstChild))},b.prototype.setDisplayIndex=function(e){this.displayIndex=e},b.prototype.getDisplayIndex=function(){return this.displayIndex},b.prototype.getRows=function(e){var t=this,n=[];return e.forEach(function(e,o){var r;n.push(e),e instanceof a&&((r=e.modules.dataTree.children).index||!1===r.children||t.getChildren(e).forEach(function(e){n.push(e)}))}),n},b.prototype.getChildren=function(e){var t=this,n=e.modules.dataTree,o=[],r=[];return!1!==n.children&&n.open&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.modules.sort.sort(o),o.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},b.prototype.generateChildren=function(e){var t=this,n=[],o=e.getData()[this.field];return Array.isArray(o)||(o=[o]),o.forEach(function(o){var r=new a(o||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),n.push(r)}),n},b.prototype.expandRow=function(e,t){var n=e.modules.dataTree;!1!==n.children&&(n.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},b.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},b.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},b.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},b.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,n=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof a&&n.push(e.getComponent())})),n},b.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},b.prototype.getChildField=function(){return this.field},d.prototype.registerModule("dataTree",b);var w=function(e){this.table=e,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};w.prototype.download=function(e,t,n,o){var r=this,i=!1;this.processConfig(),"function"==typeof e?i=e:r.downloaders[e]?i=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),this.processColumns(),i&&i.call(this,r.processDefinitions(),r.processData(),n||{},function(n,i){o?!0===o?r.triggerDownload(n,i,e,t,!0):o(n):r.triggerDownload(n,i,e,t)},this.config)},w.prototype.processConfig=function(){var e={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)e[t]=this.table.options.downloadConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},w.prototype.processColumns=function(){var e=this;e.columnsByIndex=[],e.columnsByField={},e.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(e.columnsByIndex.push(t),e.columnsByField[t.field]=t)})},w.prototype.processDefinitions=function(){var e=this,t=[];return this.config.columnGroups?e.table.columnManager.columns.forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}):e.columnsByIndex.forEach(function(n){!1!==n.download&&t.push(e.processDefinition(n))}),t},w.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r=this.processDefinition(e),i={type:"group",title:r.title,depth:1};if(n.length){if(i.subGroups=[],i.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n.depth>o&&(o=n.depth),n&&(i.width+=n.width,i.subGroups.push(n))}),i.depth+=o,!i.width)return!1}else{if(!e.field||!1===e.definition.download||!(e.visible||!e.visible&&e.definition.download))return!1;i.width=1,i.definition=r}return i},w.prototype.processDefinition=function(e){var t={};for(var n in e.definition)t[n]=e.definition[n];return void 0!==e.definition.downloadTitle&&(t.title=e.definition.downloadTitle),t},w.prototype.processData=function(){var e=this,t=[],n={};return this.config.rowGroups?this.table.modules.groupRows.getGroups().forEach(function(n){t.push(e.processGroupData(n))}):t=this.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),t={calcs:n,data:t}),"function"==typeof this.table.options.downloadDataFormatter&&(t=this.table.options.downloadDataFormatter(t)),t},w.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getData(!0,"download"),o},w.prototype.triggerDownload=function(e,t,n,o,r){var i=document.createElement("a"),a=new Blob([e],{type:t});o=o||"Tabulator."+("function"==typeof n?"txt":n);(a=this.table.options.downloadReady.call(this.table,e,a))&&(r?window.open(window.URL.createObjectURL(a)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(a,o):(i.setAttribute("href",window.URL.createObjectURL(a)),i.setAttribute("download",o),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},w.prototype.getFieldValue=function(e,t){var n=this.columnsByField[e];return!!n&&n.getFieldValue(t)},w.prototype.commsReceived=function(e,t,n){switch(t){case"intercept":this.download(n.type,"",n.options,n.intercept)}},w.prototype.downloaders={csv:function(e,t,n,o,r){var i,a,l=this,u=[],c=[],d=n&&n.delimiter?n.delimiter:",";function p(e){e.forEach(function(e){var t=[];c.forEach(function(n){var o=l.getFieldValue(n,e);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push('"'+String(o).split('"').join('""')+'"')}),i.push(t.join(d))})}r.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),e.forEach(function(e){!function e(t,n){t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):(u.push('"'+String(t.title).split('"').join('""')+'"'),c.push(t.definition.field))}(e,0)})):e.forEach(function(e){u.push('"'+String(e.title).split('"').join('""')+'"'),c.push(e.field)}),i=[u.join(d)],r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),r.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(e){!function e(t){t.subGroups?t.subGroups.forEach(function(t){e(t)}):p(t.rows)}(e)})):p(t),a=i.join("\n"),n.bom&&(a="\ufeff"+a),o(a,"text/csv")},json:function(e,t,n,o,r){r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),o(JSON.stringify(t,null,"\t"),"application/json")},pdf:function(e,t,n,o,r){var i=this,a=[],l=[],u=[],c={},d=1,p={},h=n.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},f=n.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},m=n.jsPDF||{},g=n&&n.title?n.title:"";if(r.columnCalcs&&(c=t.calcs,t=t.data),m.orientation||(m.orientation=n.orientation||"landscape"),m.unit||(m.unit="pt"),r.columnGroups){e.forEach(function(e){e.depth>d&&(d=e.depth)});for(var v=0;v<d;v++)l.push([]);e.forEach(function(e){!function e(t,n){var o=t.width,r=1,i={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){e(t,n+1)}),r=1):(a.push(t.definition.field),r=d-n),i.rowSpan=r,l[n].push(i),o--,r>1)for(var s=n+1;s<d;s++)l[s].push("");for(s=0;s<o;s++)l[n].push("")}(e,0)})}else e.forEach(function(e){e.field&&(l.push(e.title||""),a.push(e.field))}),l=[l];function y(e){switch(void 0===e?"undefined":s(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}return e}function b(e){e.forEach(function(e){u.push(w(e))})}function w(e,t){var n=[];return a.forEach(function(o){var r=i.getFieldValue(o,e);r=y(r),t?n.push({content:r,styles:t}):n.push(r)}),n}function E(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&u.push(w(o,f)))}r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push({content:y(t.key),colSpan:a.length,styles:h}),u.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&E(n,t.key,"top"),b(t.rows),r.columnCalcs&&E(n,t.key,"bottom"))}(e,c)}):(r.columnCalcs&&E(c,"top"),b(t),r.columnCalcs&&E(c,"bottom"));var C=new jsPDF(m);n&&n.autoTable&&(p="function"==typeof n.autoTable?n.autoTable(C)||{}:n.autoTable),g&&(p.addPageContent=function(e){C.text(g,40,30)}),p.head=l,p.body=u,C.autoTable(p),n&&n.documentProcessing&&n.documentProcessing(C),o(C.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,n,o,r){var i=this,a=n.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},u={},c=[],d=[],p=[];function h(){var n=[],o=[],a=[];function l(e,t){var r;void 0===n[t]&&(n[t]=[]),void 0===d[t]&&(d[t]=[]),e.width>1&&d[t].push({type:"hoz",start:n[t].length,end:n[t].length+e.width-1}),n[t].push(e.title),e.subGroups?e.subGroups.forEach(function(e){l(e,t+1)}):(o.push(e.definition.field),o.length,r=0,n.forEach(function(e){var t=e.length;t>r&&(r=t)}),n.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}),d[t].push({type:"vert",start:o.length-1}))}function h(e){e.forEach(function(e){a.push(f(e))})}function f(e){var t=[];return o.forEach(function(n){var o=i.getFieldValue(n,e);t.push(o instanceof Date||"object"!==(void 0===o?"undefined":s(o))?o:JSON.stringify(o))}),t}function m(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&(p.push(a.length),a.push(f(o))))}return r.columnGroups?(e.forEach(function(e){l(e,0)}),n.forEach(function(e){a.push(e)})):(e.forEach(function(e){n.push(e.title),o.push(e.field)}),a.push(n)),r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push(t.key),c.push(a.length),a.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&m(n,t.key,"top"),h(t.rows),r.columnCalcs&&m(n,t.key,"bottom"))}(e,u)}):(r.columnCalcs&&m(u,"top"),h(t),r.columnCalcs&&m(u,"bottom")),function(){var e={},t={s:{c:0,r:0},e:{c:o.length,r:a.length}};XLSX.utils.sheet_add_aoa(e,a),e["!ref"]=XLSX.utils.encode_range(t);var r=function(){var e=[];return c.forEach(function(t){e.push({s:{r:t,c:0},e:{r:t,c:o.length-1}})}),d.forEach(function(t,o){t.forEach(function(t){"hoz"===t.type?e.push({s:{r:o,c:t.start},e:{r:o,c:t.end}}):o!=n.length-1&&e.push({s:{r:o,c:t.start},e:{r:n.length-1,c:t.start}})})}),e}();return r.length&&(e["!merges"]=r),e}()}if(r.columnCalcs&&(u=t.calcs,t=t.data),n.sheetOnly)o(h());else{if(n.sheets)for(var f in n.sheets)!0===n.sheets[f]?(l.SheetNames.push(f),l.Sheets[f]=h()):(l.SheetNames.push(f),this.table.modules.comms.send(n.sheets[f],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(e){l.Sheets[f]=e}}));else l.SheetNames.push(a),l.Sheets[a]=h();o(function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!=e.length;++o)n[o]=255&e.charCodeAt(o);return t}(XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}}},d.prototype.registerModule("download",w);var E=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};E.prototype.initializeColumn=function(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(s(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)},E.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},E.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,(e=t.getElement()).classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},E.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},E.prototype.bindEditor=function(e){var t=this,n=e.getElement();n.setAttribute("tabindex",0),n.addEventListener("click",function(e){n.classList.contains("tabulator-editing")||n.focus()}),n.addEventListener("mousedown",function(e){t.mouseClick=!0}),n.addEventListener("focus",function(n){t.recursionBlock||t.edit(e,n,!1)})},E.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},E.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},E.prototype.edit=function(e,t,n){var o,r,i,a=this,l=!0,u=function(){},c=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(t&&t.stopPropagation(),s(e.column.modules.edit.check)){case"function":l=e.column.modules.edit.check(e.getComponent());break;case"boolean":l=e.column.modules.edit.check}if(l||n){if(a.cancelEdit(),a.currentCell=e,r=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,r)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,r),a.table.options.cellEditing.call(this.table,r),i="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(r):e.column.modules.edit.params,!1===(o=e.column.modules.edit.editor.call(a,r,function(e){u=e},function(t){if(a.currentCell===e){var n=!0;e.column.modules.validate&&a.table.modExists("validate")&&(n=a.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===n?(a.clearEditor(),e.setValue(t,!0),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e)):(a.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),a.focusCellNoEvent(e),u(),a.table.options.validationFailed.call(a.table,e.getComponent(),t,n))}},function(){a.currentCell===e&&(a.cancelEdit(),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e))},i)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var d=c.children,p=0;p<d.length;p++)d[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,c.blur(),!1}this.invalidEdit||this.cancelEdit()},E.prototype.editors={input:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(e){null==i&&""!==a.value||a.value!=i?n(a.value):o()}return a.setAttribute("type",r.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=void 0!==i?i:"",t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:n(a.value);break;case 27:o()}}),a},textarea:function(e,t,n,o,r){var i=e.getValue(),a=String(null!=i?i:""),s=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),l=0;function u(t){null==i&&""!==s.value||s.value!=i?(n(s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):o()}return s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",s.value=a,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=l&&(l=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&o()}),s},number:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");a.setAttribute("type","number"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i;var s=function(e){l()};function l(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return t(function(){a.removeEventListener("blur",s),a.focus(),a.style.height="100%",a.addEventListener("blur",s)}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:l();break;case 27:o()}}),a},range:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return a.setAttribute("type","range"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i,t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:s();break;case 27:o()}}),a},select:function(e,t,n,o,r){var i=this,a=e.getElement(),l=e.getValue(),u=document.createElement("input"),c=document.createElement("div"),p=[],h=[],f={},m=!0;function g(){var t={},n=e.getColumn()._getSelf();return i.table.getData().forEach(function(e){var o=n.getFieldValue(e);null!=o&&""!==o&&(t[o]=!0)}),t=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(t).sort():Object.keys(t).sort().reverse():Object.keys(t)}function v(t,n){var o=[],i=[];function a(e){return(e={label:r.listItemFormatter?r.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1}).value!==n&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(n))||y(e),o.push(e),i.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":s(e))?e.options?(t={label:e.label,group:!0,element:!1},i.push(t),e.options.forEach(function(e){a(e)})):a(e):((t={label:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1}).value!==n&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(n))||y(t),o.push(t),i.push(t))});else for(var l in t){var u={label:r.listItemFormatter?r.listItemFormatter(l,t[l]):t[l],value:l,element:!1};u.value!==n&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(n))||y(u),o.push(u),i.push(u)}p=o,h=i,function(){for(;c.firstChild;)c.removeChild(c.firstChild);h.forEach(function(e){var t=e.element;t||(e.group?((t=document.createElement("div")).classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label):((t=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label,t.addEventListener("click",function(){y(e),b()}),e===f&&t.classList.add("active")),t.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),e.element=t),c.appendChild(t)})}()}function y(e){f&&f.element&&f.element.classList.remove("active"),f=e,u.value=" "===e.label?"":e.label,e.element&&e.element.classList.add("active")}function b(){E(),l!==f.value?(l=f.value,n(f.value)):o()}function w(){E(),o()}function E(){c.parentNode&&c.parentNode.removeChild(c),i.table.rowManager.element.removeEventListener("scroll",w)}return this.table.rowManager.element.addEventListener("scroll",w),(Array.isArray(r)||!Array.isArray(r)&&"object"===(void 0===r?"undefined":s(r))&&!r.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),r={values:r}),u.setAttribute("type","text"),u.style.padding="4px",u.style.width="100%",u.style.boxSizing="border-box",u.style.cursor="default",u.readOnly=0!=this.currentCell,u.value=void 0!==l||null===l?l:"",!0===r.values?v(g(),l):v(r.values||[],l),u.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))>0&&y(p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&y(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:b();break;case 27:w()}}),u.addEventListener("blur",function(e){m&&w()}),u.addEventListener("focus",function(e){!function(){if(!c.parentNode){!0===r.values?v(g(),l):v(r.values||[],l);var e=d.prototype.helpers.elOffset(a);c.style.minWidth=a.offsetWidth+"px",c.style.top=e.top+a.offsetHeight+"px",c.style.left=e.left+"px",document.body.appendChild(c)}}()}),(c=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){u.style.height="100%",u.focus()}),u},autocomplete:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=document.createElement("input"),u=document.createElement("div"),c=[],p=[],h=[],f={},m=!0;function g(e,t){var n=[],o=[];r.searchFunc?(c.forEach(function(e){o.push(e.search)}),r.searchFunc(e,o).forEach(function(e){var t=c.find(function(t){return t.search===e});t&&n.push(t)})):""===e?r.showListOnEmpty&&c.forEach(function(e){n.push(e)}):c.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&n.push(t)}),p=n,function(e){var t=!1;for(;u.firstChild;)u.removeChild(u.firstChild);p.forEach(function(n){var o=n.element;o||((o=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=n.title,o.addEventListener("click",function(){v(n),y()}),o.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),n.element=o,e&&n.value==s&&(l.value=n.title,n.element.classList.add("active"),t=!0),n===f&&(n.element.classList.add("active"),t=!0)),u.appendChild(o)}),t||v(!1)}(t)}function v(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active")}function y(){E(),f?s!==f.value?(s=f.value,l.value=f.title,n(f.value)):o():r.freetext?(s=l.value,n(l.value)):r.allowEmpty&&""===l.value?(s=l.value,n(l.value)):o()}function b(){E(),o()}function w(){if(!u.parentNode){for(;u.firstChild;)u.removeChild(u.firstChild);!0===r.values?(n={},o=e.getColumn()._getSelf(),i.table.getData().forEach(function(e){var t=o.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)}),h=n=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):h=r.values||[],function(e,t){var n=[];if(Array.isArray(e))e.forEach(function(e){var o={title:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||v(o),n.push(o)});else for(var o in e){var i={title:r.listItemFormatter?r.listItemFormatter(o,e[o]):e[o],value:o,element:!1};i.value!==t&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(t))||v(i),n.push(i)}r.searchFunc&&n.forEach(function(e){e.search={title:e.title,value:e.value}}),c=n}(h,s);var t=d.prototype.helpers.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=t.top+a.offsetHeight+"px",u.style.left=t.left+"px",document.body.appendChild(u)}var n,o}function E(){u.parentNode&&u.parentNode.removeChild(u),i.table.rowManager.element.removeEventListener("scroll",b)}return this.table.rowManager.element.addEventListener("scroll",b),l.setAttribute("type","search"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",l.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),v((t=p.indexOf(f))>0&&p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&v(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:y();break;case 27:b();break;case 36:case 35:e.stopImmediatePropagation()}}),l.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:g(l.value)}}),l.addEventListener("search",function(e){g(l.value)}),l.addEventListener("blur",function(e){m&&y()}),l.addEventListener("focus",function(e){var t=void 0!==s||null===s?s:"";w(),l.value=t,g(t,!0)}),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){l.style.height="100%",l.focus()}),l},star:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=a.getElementsByTagName("svg").length||5,u=a.getElementsByTagName("svg")[0]?a.getElementsByTagName("svg")[0].getAttribute("width"):14,c=[],d=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");function h(e){c.forEach(function(t,n){n<e?("ie"==i.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==i.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function f(e){var t=document.createElement("span"),o=p.cloneNode(!0);c.push(o),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),h(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e)}),t.appendChild(o),d.appendChild(t)}function m(e){s=e,h(e)}a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",p.setAttribute("width",u),p.setAttribute("height",u),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px";for(var g=1;g<=l;g++)f(g);return h(s=Math.min(parseInt(s),l)),d.addEventListener("mousemove",function(e){h(0)}),d.addEventListener("click",function(e){n(0)}),a.addEventListener("blur",function(e){o()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 39:m(s+1);break;case 37:m(s-1);break;case 13:n(s);break;case 27:o()}}),d},progress:function(e,t,n,o,r){var i,a,s=e.getElement(),l=void 0===r.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:r.max,u=void 0===r.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:r.min,c=(l-u)/100,d=e.getValue()||0,p=document.createElement("div"),h=document.createElement("div");function f(){var e=c*Math.round(h.offsetWidth/(s.clientWidth/100))+u;n(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",d)}return p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),h.style.display="inline-block",h.style.position="relative",h.style.height="100%",h.style.backgroundColor="#488CE9",h.style.maxWidth="100%",h.style.minWidth="0%",s.style.padding="4px 4px",d=Math.min(parseFloat(d),l),d=Math.max(parseFloat(d),u),d=Math.round((d-u)/c),h.style.width=d+"%",s.setAttribute("aria-valuemin",u),s.setAttribute("aria-valuemax",l),h.appendChild(p),p.addEventListener("mousedown",function(e){i=e.screenX,a=h.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){i&&(h.style.width=a+e.screenX-i+"px")}),s.addEventListener("mouseup",function(e){i&&(e.stopPropagation(),e.stopImmediatePropagation(),i=!1,a=!1,f())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:h.style.width=h.clientWidth+s.clientWidth/100+"px";break;case 37:h.style.width=h.clientWidth-s.clientWidth/100+"px";break;case 13:f();break;case 27:o()}}),s.addEventListener("blur",function(){o()}),h},tickCross:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input"),s=r.tristate,l=void 0===r.indeterminateValue?null:r.indeterminateValue,u=!1;function c(e){return s?e?u?l:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,l):(u=!1,a.checked):a.checked}return a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",a.value=i,!s||void 0!==i&&i!==l&&""!==i||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus()}),a.checked=!0===i||"true"===i||"True"===i||1===i,a.addEventListener("change",function(e){n(c())}),a.addEventListener("blur",function(e){n(c(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&n(c()),27==e.keyCode&&o()}),a}},d.prototype.registerModule("edit",E);var C=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};C.prototype.initializeColumn=function(e,t){var n,o=this,r=e.getField();e.modules.filter={success:function(t){var i,a="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",l="";if(void 0===n||n!==t){if(n=t,e.modules.filter.emptyFunc(t))delete o.headerFilters[r];else{switch(e.modules.filter.value=t,s(e.definition.headerFilterFunc)){case"string":o.filters[e.definition.headerFilterFunc]?(l=e.definition.headerFilterFunc,i=function(n){var r=e.definition.headerFilterFuncParams||{},i=e.getFieldValue(n);return r="function"==typeof r?r(t,i,n):r,o.filters[e.definition.headerFilterFunc](t,i,n,r)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":l=i=function(n){var o=e.definition.headerFilterFuncParams||{},r=e.getFieldValue(n);return o="function"==typeof o?o(t,r,n):o,e.definition.headerFilterFunc(t,r,n,o)}}if(!i)switch(a){case"partial":i=function(n){var o=e.getFieldValue(n);return null!=o&&String(o).toLowerCase().indexOf(String(t).toLowerCase())>-1},l="like";break;default:i=function(n){return e.getFieldValue(n)==t},l="="}o.headerFilters[r]={value:t,func:i,type:l}}o.changed=!0,o.table.rowManager.filterRefresh()}},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},C.prototype.generateHeaderFilterElement=function(e,t){var n,o,r,i,a,l,u,c=this,d=this,p=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var f=e.modules.filter.headerElement.parentNode,m=d.headerFilterElements.indexOf(f);m>=0&&d.headerFilterElements.splice(m,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),e.contentElement.removeChild(f)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},(n=document.createElement("div")).classList.add("tabulator-header-filter"),s(e.definition.headerFilter)){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=d.table.modules.edit.editors.input}if(o){if(i={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u="function"==typeof(u=e.definition.headerFilterParams||{})?u.call(d.table):u,!(r=o.call(this.table.modules.edit,i,function(){},p,function(){},u)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",r);h?d.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=c.table.columnManager.element.scrollLeft;t!==c.table.rowManager.element.scrollLeft&&(c.table.rowManager.scrollHorizontal(t),c.table.columnManager.scrollHorizontal(t))}),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout(function(){p(r.value)},300)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",l),r.addEventListener("search",l),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),d.headerFilterElements.push(r),d.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},C.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},C.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},C.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},C.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},C.prototype.setFilter=function(e,t,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:n}]),this.addFilter(e)},C.prototype.addFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){(e=o.findFilter(e))&&(o.filterList.push(e),o.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.findFilter=function(e){var t,n=this;if(Array.isArray(e))return this.findSubFilters(e);var o=!1;return"function"==typeof e.field?o=function(t){return e.field(t,e.type||{})}:n.filters[e.type]?o=(t=n.table.columnManager.getColumnByField(e.field))?function(o){return n.filters[e.type](e.value,t.getFieldValue(o))}:function(t){return n.filters[e.type](e.value,t[e.field])}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=o,!!e.func&&e},C.prototype.findSubFilters=function(e){var t=this,n=[];return e.forEach(function(e){(e=t.findFilter(e))&&n.push(e)}),!!n.length&&n},C.prototype.getFilters=function(e,t){var n=[];return e&&(n=this.getHeaderFilters()),t&&n.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),n=n.concat(this.filtersToArray(this.filterList,t))},C.prototype.filtersToArray=function(e,t){var n=this,o=[];return e.forEach(function(e){var r;Array.isArray(e)?o.push(n.filtersToArray(e,t)):(r={field:e.field,type:e.type,value:e.value},t&&"function"==typeof r.type&&(r.type="function"),o.push(r))}),o},C.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},C.prototype.removeFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){var t=-1;(t="object"==s(e.field)?o.filterList.findIndex(function(t){return e===t}):o.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}))>-1?(o.filterList.splice(t,1),o.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,e.reloadHeaderFilter(t)}),this.changed=!0},C.prototype.search=function(e,t,n,o){var r=this,i=[],a=[];return Array.isArray(t)||(t=[{field:t,type:n,value:o}]),t.forEach(function(e){(e=r.findFilter(e))&&a.push(e)}),this.table.rowManager.rows.forEach(function(t){var n=!0;a.forEach(function(e){r.filterRecurse(e,t.getData())||(n=!1)}),n&&i.push("data"===e?t.getData("data"):t.getComponent())}),i},C.prototype.filter=function(e,t){var n=this,o=[],r=[];return n.table.options.dataFiltering&&n.table.options.dataFiltering.call(n.table,n.getFilters()),n.table.options.ajaxFiltering||!n.filterList.length&&!Object.keys(n.headerFilters).length?o=e.slice(0):e.forEach(function(e){n.filterRow(e)&&o.push(e)}),n.table.options.dataFiltered&&(o.forEach(function(e){r.push(e.getComponent())}),n.table.options.dataFiltered.call(n.table,n.getFilters(),r)),o},C.prototype.filterRow=function(e,t){var n=this,o=!0,r=e.getData();for(var i in n.filterList.forEach(function(e){n.filterRecurse(e,r)||(o=!1)}),n.headerFilters)n.headerFilters[i].func(r)||(o=!1);return o},C.prototype.filterRecurse=function(e,t){var n=this,o=!1;return Array.isArray(e)?e.forEach(function(e){n.filterRecurse(e,t)&&(o=!0)}):o=e.func(t),o},C.prototype.filters={"=":function(e,t,n,o){return t==e},"<":function(e,t,n,o){return t<e},"<=":function(e,t,n,o){return t<=e},">":function(e,t,n,o){return t>e},">=":function(e,t,n,o){return t>=e},"!=":function(e,t,n,o){return t!=e},regex:function(e,t,n,o){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,n,o){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,n,o){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},d.prototype.registerModule("filter",C);var x=function(e){this.table=e};x.prototype.initializeColumn=function(e){var t={params:e.definition.formatterParams||{}};switch(s(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===t.params.crossElement&&(t.params.crossElement=!1),console.warn("DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[e.definition.formatter]?t.formatter=this.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),t.formatter=this.formatters.plaintext);break;case"function":t.formatter=e.definition.formatter;break;default:t.formatter=this.formatters.plaintext}e.modules.format=t},x.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},x.prototype.formatValue=function(e){var t=e.getComponent(),n="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,n,function(t){e.column.modules.format.renderedCallback=t})},x.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},x.prototype.emptyToSpace=function(e){return null==e?" ":e},x.prototype.getFormatter=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},x.prototype.formatters={plaintext:function(e,t,n){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,n){return e.getValue()},textarea:function(e,t,n){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,n){var o,r,i,a,s=parseFloat(e.getValue()),l=t.decimal||".",u=t.thousand||",",c=t.symbol||"",d=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(o=!1!==p?s.toFixed(p):s,r=(o=String(o).split("."))[0],i=o.length>1?l+o[1]:"",a=/(\d+)(\d{3})/;a.test(r);)r=r.replace(a,"$1"+u+"$2");return d?r+i+c:c+r+i},link:function(e,t,n){var o=e.getValue(),r=t.urlPrefix||"",i=this.emptyToSpace(o),a=document.createElement("a");if(t.labelField&&(i=e.getData()[t.labelField]),t.label)switch(s(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(t.urlField&&(o=e.getData()[t.urlField]),t.url)switch(s(t.url)){case"string":o=t.url;break;case"function":o=t.url(e)}return a.setAttribute("href",r+o),t.target&&a.setAttribute("target",t.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),a},image:function(e,t,n){var o=document.createElement("img");switch(o.setAttribute("src",e.getValue()),s(t.height)){case"number":o.style.height=t.height+"px";break;case"string":o.style.height=t.height}switch(s(t.width)){case"number":o.style.width=t.width+"px";break;case"string":o.style.width=t.width}return o.addEventListener("load",function(){e.getRow().normalizeHeight()}),o},tickCross:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t.allowEmpty,a=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return a&&o||!0===o||"true"===o||"True"===o||1===o||"1"===o?(r.setAttribute("aria-checked",!0),s||""):!i||"null"!==o&&""!==o&&null!=o?(r.setAttribute("aria-checked",!1),l||""):(r.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue(),s=moment(a,o);return s.isValid()?s.format(r):!0===i?a:"function"==typeof i?i(a):i},datetimediff:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:void 0,s=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),u=e.getValue(),c=moment(u,o);return c.isValid()?s?moment.duration(c.diff(l)).humanize(i):c.diff(l,a)+(i?" "+i:""):!0===r?u:"function"==typeof r?r(u):r},lookup:function(e,t,n){var o=e.getValue();return void 0===t[o]?(console.warn("Missing display value for "+o),o):t[o]},star:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t&&t.stars?t.stars:5,a=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");a.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",o=parseInt(o)<i?parseInt(o):i;for(var l=1;l<=i;l++){var u=s.cloneNode(!0);u.innerHTML=l<=o?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',a.appendChild(u)}return r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",r.setAttribute("aria-label",o),a},traffic:function(e,t,n){var o,r,i=this.sanitizeHTML(e.getValue())||0,a=document.createElement("span"),l=t&&t.max?t.max:100,u=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(a.classList.add("tabulator-traffic-light"),r=parseFloat(i)<=l?parseFloat(i):l,r=parseFloat(r)>=u?parseFloat(r):u,o=(l-u)/100,r=Math.round((r-u)/o),void 0===c?"undefined":s(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var p=100/c.length,h=Math.floor(r/p);h=Math.min(h,c.length-1),d=c[h=Math.max(h,0)];break}}return a.style.backgroundColor=d,a}},progress:function(e,t,n){var o,r,i,a,l,u=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,p=t&&t.min?t.min:0,h=t&&t.legendAlign?t.legendAlign:"center";switch(r=parseFloat(u)<=d?parseFloat(u):d,r=parseFloat(r)>=p?parseFloat(r):p,o=(d-p)/100,r=Math.round((r-p)/o),s(t.color)){case"string":i=t.color;break;case"function":i=t.color(u);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,m=Math.floor(r/f);m=Math.min(m,t.color.length-1),m=Math.max(m,0),i=t.color[m];break}default:i="#2DC214"}switch(s(t.legend)){case"string":a=t.legend;break;case"function":a=t.legend(u);break;case"boolean":a=u;break;default:a=!1}switch(s(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(u);break;case"object":if(Array.isArray(t.legendColor)){f=100/t.legendColor.length,m=Math.floor(r/f);m=Math.min(m,t.legendColor.length-1),m=Math.max(m,0),l=t.legendColor[m]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",r),"<div style='position:realtive; height:100%;' data-max='"+d+"' data-min='"+p+"'><div style='position:relative; height:100%; width:calc("+r+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(a?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+l+";'>"+a+"</div>":"")},color:function(e,t,n){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,n){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,n){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,n){var o=!1,r=document.createElement("div");function i(t){var n=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];(o=t)?(r.classList.add("open"),n&&(n.style.display="")):(r.classList.remove("open"),n&&(n.style.display="none"))}return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),this.table.options.responsiveLayoutCollapseStartOpen&&(o=!0),r.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!o)}),i(o),r}},d.prototype.registerModule("format",x);var T=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};T.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},T.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.definition.frozen?e.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):e.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right"},T.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},T.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},T.prototype.layoutColumnPosition=function(e){var t=this;this.leftColumns.forEach(function(n,o){n.modules.frozen.margin=t._calcSpace(t.leftColumns,o)+t.table.columnManager.scrollLeft+"px",o==t.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})}),this.rightColumns.forEach(function(n,o){n.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,o+1)+"px",o==t.rightColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})})},T.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)}),this.rightColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)})},T.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},T.prototype._calcSpace=function(e,t){for(var n=0,o=0;o<t;o++)e[o].visible&&(n+=e[o].getWidth());return n},d.prototype.registerModule("frozenColumns",T);var k=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};k.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},k.prototype.setDisplayIndex=function(e){this.displayIndex=e},k.prototype.getDisplayIndex=function(){return this.displayIndex},k.prototype.isFrozen=function(){return!!this.rows.length},k.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t},k.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},k.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var n=e.getElement();n.parentNode.removeChild(n),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},k.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,n){t.table.rowManager.styleRow(e,n)})},d.prototype.registerModule("frozenRows",k);var S=function(e){this._group=e,this.type="GroupComponent"};S.prototype.getKey=function(){return this._group.key},S.prototype.getElement=function(){return this._group.element},S.prototype.getRows=function(){return this._group.getRows(!0)},S.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},S.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},S.prototype.getVisibility=function(){return this._group.visible},S.prototype.show=function(){this._group.show()},S.prototype.hide=function(){this._group.hide()},S.prototype.toggle=function(){this._group.toggleVisibility()},S.prototype._getSelf=function(){return this._group},S.prototype.getTable=function(){return this._group.groupManager.table};var D=function(e,t,n,o,r,i,a){this.groupManager=e,this.parent=t,this.key=o,this.level=n,this.field=r,this.hasSubGroups=n<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=a,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=a?a.visible:void 0!==e.startOpen[n]?e.startOpen[n]:e.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};D.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},D.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},D.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(n){e._createGroup(n,t)})},D.prototype.addBindings=function(){var e,t,n,o=this;o.groupManager.table.options.groupClick&&o.element.addEventListener("click",function(e){o.groupManager.table.options.groupClick(e,o.getComponent())}),o.groupManager.table.options.groupDblClick&&o.element.addEventListener("dblclick",function(e){o.groupManager.table.options.groupDblClick(e,o.getComponent())}),o.groupManager.table.options.groupContext&&o.element.addEventListener("contextmenu",function(e){o.groupManager.table.options.groupContext(e,o.getComponent())}),o.groupManager.table.options.groupTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.groupManager.table.options.groupTap(e,o.getComponent()),n=!1})),o.groupManager.table.options.groupDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.groupManager.table.options.groupDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.groupManager.table.options.groupTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.groupManager.table.options.groupTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),o.groupManager.table.options.groupToggleElement&&("arrow"==o.groupManager.table.options.groupToggleElement?o.arrowElement:o.element).addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o.toggleVisibility()})},D.prototype._createGroup=function(e,t){var n=t+"_"+e,o=new D(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[n]);this.groups[n]=o,this.groupList.push(o)},D.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var n=this.groupManager.groupIDLookups[t].func(e.getData()),o=t+"_"+n;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[o]&&this.groups[o].addRow(e):(this.groups[o]||this._createGroup(n,t),this.groups[o].addRow(e))}},D.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},D.prototype.insertRow=function(e,t,n){var o=this.conformRowData({});e.updateData(o);var r=this.rows.indexOf(t);r>-1?n?this.rows.splice(r+1,0,e):this.rows.splice(r,0,e):n?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},D.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},D.prototype.getRowIndex=function(e){},D.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},D.prototype.removeRow=function(e){var t=this.rows.indexOf(e),n=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(n.parentNode&&n.parentNode.removeChild(n),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},D.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},D.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(n){t=t.concat(n.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},D.prototype.getData=function(e,t){var n=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){n.push(e.getData(t||"data"))}),n},D.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},D.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},D.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},D.prototype.show=function(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n})}):this.rows.forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},D.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},D.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}):this.rows.find(function(t){return t===e})&&(t=this),t},D.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},D.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},D.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},D.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},D.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},D.prototype.reinitialize=function(){this.initialized=!1,this.height=0,d.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},D.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},D.prototype.getHeight=function(){return this.outerHeight},D.prototype.getGroup=function(){return this},D.prototype.reinitializeHeight=function(){},D.prototype.calcHeight=function(){},D.prototype.setCellHeight=function(){},D.prototype.clearCellHeight=function(){},D.prototype.getComponent=function(){return new S(this)};var M=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};M.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,n=e.table.options.groupStartOpen,o=e.table.options.groupHeader;(this.allowedValues=e.table.options.groupValues,e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,n){e.headerGenerator[0]=function(e,o,r){return(void 0===e?"":e)+"<span>("+o+" "+(1===o?t:n.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)?this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs():this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs&&this.table.columnManager.getRealColumns().forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()});Array.isArray(t)||(t=[t]),t.forEach(function(t,n){var o,r;o="function"==typeof t?t:(r=e.table.columnManager.getColumnByField(t))?function(e){return r.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:o,values:!!e.allowedValues&&e.allowedValues[n]})}),n&&(Array.isArray(n)||(n=[n]),n.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=n),o&&(e.headerGenerator=Array.isArray(o)?o:[o]),this.initialized=!0},M.prototype.setDisplayIndex=function(e){this.displayIndex=e},M.prototype.getDisplayIndex=function(){return this.displayIndex},M.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},M.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},M.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},M.prototype.pullGroupListData=function(e){var t=this,n=[];return e.forEach(function(e){var o={level:0,rowCount:0,headerContent:""},r=[];e.hasSubGroups?(r=t.pullGroupListData(e.groupList),o.level=e.level,o.rowCount=r.length-e.groupList.length,o.headerContent=e.generator(e.key,o.rowCount,e.rows,e),n.push(o),n=n.concat(r)):(o.level=e.level,o.headerContent=e.generator(e.key,e.rows.length,e.rows,e),o.rowCount=e.getRows().length,n.push(o),e.getRows().forEach(function(e){n.push(e.getData("data"))}))}),n},M.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},M.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}),t},M.prototype.countGroups=function(){return this.groupList.length},M.prototype.generateGroups=function(e){var t=this,n=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,n)}),e.forEach(function(e){t.assignRowToExistingGroup(e,n)})):e.forEach(function(e){t.assignRowToGroup(e,n)})},M.prototype.createGroup=function(e,t,n){var o,r=t+"_"+e;n=n||[],o=new D(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],n[r]),this.groups[r]=o,this.groupList.push(o)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o="0_"+n;this.groups[o]||this.createGroup(n,0,t),this.groups[o].addRow(e)},M.prototype.assignRowToExistingGroup=function(e,t){var n="0_"+this.groupIDLookups[0].func(e.getData());this.groups[n]&&this.groups[n].addRow(e)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o=!this.groups["0_"+n];return o&&this.createGroup(n,0,t),this.groups["0_"+n].addRow(e),!o},M.prototype.updateGroupRows=function(e){var t=[];if(this.groupList.forEach(function(e){t=t.concat(e.getHeadersAndRows())}),e){var n=this.table.rowManager.setDisplayRows(t,this.getDisplayIndex());!0!==n&&this.setDisplayIndex(n),this.table.rowManager.refreshActiveData("group",!0,!0)}return t},M.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},M.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},d.prototype.registerModule("groupRows",M);var R=function(e){this.table=e,this.history=[],this.index=-1};R.prototype.clear=function(){this.history=[],this.index=-1},R.prototype.action=function(e,t,n){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:n}),this.index++},R.prototype.getHistoryUndoSize=function(){return this.index+1},R.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},R.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},R.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},R.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype._rebindRow=function(e,t){this.history.forEach(function(n){if(n.component instanceof a)n.component===e&&(n.component=t);else if(n.component instanceof u&&n.component.row===e){var o=n.component.column.getField();o&&(n.component=t.getCell(o))}})},d.prototype.registerModule("history",R);var _=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};_.prototype.parseTable=function(){var e=this.table.element,t=this.table.options,n=(t.columns,e.getElementsByTagName("th")),o=e.getElementsByTagName("tbody")[0],r=[];this.hasIndex=!1,this.table.options.htmlImporting.call(this.table),o=o?o.getElementsByTagName("tr"):[],this._extractOptions(e,t),n.length?this._extractHeaders(n,o):this._generateBlankHeaders(n,o);for(var i=0;i<o.length;i++){var a=o[i].getElementsByTagName("td"),l={};this.hasIndex||(l[t.index]=i);for(var u=0;u<a.length;u++){var c=a[u];void 0!==this.fieldIndex[u]&&(l[this.fieldIndex[u]]=c.innerHTML)}r.push(l)}var d=document.createElement("div"),p=e.attributes;for(var u in p)"object"==s(p[u])&&d.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(d,e),t.data=r,this.table.options.htmlImported.call(this.table),this.table.element=d},_.prototype._extractOptions=function(e,t,n){var o=e.attributes,r=n?Object.assign([],n):Object.keys(t),i={};for(var a in r.forEach(function(e){i[e.toLowerCase()]=e}),o){var l,u=o[a];u&&"object"==(void 0===u?"undefined":s(u))&&u.name&&0===u.name.indexOf("tabulator-")&&(l=u.name.replace("tabulator-",""),void 0!==i[l]&&(t[i[l]]=this._attribValue(u.value)))}},_.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},_.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},_.prototype._extractHeaders=function(e,t){for(var n=0;n<e.length;n++){var r,i,a=e[n],l=!1,u=this._findCol(a.textContent);for(var c in u?l=!0:u={title:a.textContent.trim()},u.field||(u.field=a.textContent.trim().toLowerCase().replace(" ","_")),(r=a.getAttribute("width"))&&!u.width&&(u.width=r),i=a.attributes,this._extractOptions(a,u,o.prototype.defaultOptionList),i){var d=i[c];d&&"object"==(void 0===d?"undefined":s(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u[d.name.replace("tabulator-","")]=this._attribValue(d.value))}this.fieldIndex[n]=u.field,u.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(u)}},_.prototype._generateBlankHeaders=function(e,t){for(var n=0;n<e.length;n++){var o=e[n],r={title:"",field:"col"+n};this.fieldIndex[n]=r.field;var i=o.getAttribute("width");i&&(r.width=i),this.table.options.columns.push(r)}},d.prototype.registerModule("htmlTableImport",_);var L=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};L.prototype.genereateTable=function(e,t,n,o){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=o;var r=this.generateHeaderElements(),i=this.generateBodyElements(n),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(i),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},L.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}),t},L.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r={title:e.definition.title,column:e,depth:1};if(n.length){if(r.subGroups=[],r.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(r.width+=n.width,r.subGroups.push(n),n.depth>o&&(o=n.depth))}),r.depth+=o,!r.width)return!1}else{if(!e.field||!this.columnVisCheck(e))return!1;r.width=1}return r},L.prototype.groupHeadersToRows=function(e){var t=[],n=0;return e.forEach(function(e){e.depth>n&&(n=e.depth)}),e.forEach(function(e){!function e(o,r){var i=n-r;void 0===t[r]&&(t[r]=[]),o.height=o.subGroups?1:i-o.depth+1,t[r].push(o),o.subGroups&&o.subGroups.forEach(function(t){e(t,r+1)})}(e,0)}),t},L.prototype.generateHeaderElements=function(){var e=this,t=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(n){var o=document.createElement("tr");e.mapElementStyles(e.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.forEach(function(t){var n=document.createElement("th");n.colSpan=t.width,n.rowSpan=t.height,n.innerHTML=t.column.definition.title,e.cloneTableStyle&&(n.style.boxSizing="border-box"),e.mapElementStyles(t.column.getElement(),n,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.mapElementStyles(t.column.contentElement,n,["padding-top","padding-left","padding-right","padding-bottom"]),t.column.visible?e.mapElementStyles(t.column.getElement(),n,["width"]):t.column.definition.width&&(n.style.width=t.column.definition.width+"px"),t.column.parent&&e.mapElementStyles(t.column.parent.groupElement,n,["border-top"]),o.appendChild(n)}),t.appendChild(o)}),t},L.prototype.generateBodyElements=function(e){var t,n,o,r,i,a,l,u,c=this;this.cloneTableStyle&&window.getComputedStyle&&(t=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(l=r.getElementsByClassName("tabulator-cell"),i=l[0],l[l.length-1]));var d=document.createElement("tbody"),p=e?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return this.table.columnManager.columnsByIndex.forEach(function(e){c.columnVisCheck(e)&&h.push(e)}),(p=p.filter(function(e){switch(e.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0})).length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),p.forEach(function(e,r){var l=e.getData(),p=document.createElement("tr");switch(p.classList.add("tabulator-print-table-row"),e.type){case"group":var f=document.createElement("td");f.colSpan=h.length,f.innerHTML=e.key,p.classList.add("tabulator-print-table-group"),c.mapElementStyles(a,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(a,f,["padding-top","padding-left","padding-right","padding-bottom"]),p.appendChild(f);break;case"calc":p.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var t=document.createElement("td"),n=e.getFieldValue(l),o={getValue:function(){return n},getField:function(){return e.definition.field},getElement:function(){return t},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}},getComponent:function(){return o},column:e};if(c.table.modExists("format"))n=c.table.modules.format.formatValue(o);else switch(void 0===n?"undefined":s(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?t.appendChild(n):t.innerHTML=n,i&&c.mapElementStyles(i,t,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),p.appendChild(t)}),u="calc"==e.type?o:r%2&&n?n:t,c.mapElementStyles(u,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}d.appendChild(p)}),d},L.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},L.prototype.getHtml=function(e,t,n){var o=document.createElement("div");return o.appendChild(this.genereateTable(n||this.table.options.htmlOutputConfig,t,e,"htmlOutput")),o.innerHTML},L.prototype.mapElementStyles=function(e,t,n){if(this.cloneTableStyle&&e&&t){var o={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}}},d.prototype.registerModule("htmlTableExport",L);var P=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};P.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var n in this.bindings)t[n]=this.bindings[n];if(Object.keys(e).length)for(var o in e)t[o]=e[o];this.mapBindings(t),this.bindEvents()}},P.prototype.mapBindings=function(e){var t=this,n=this,o=function(o){t.actions[o]?e[o]&&("object"!==s(e[o])&&(e[o]=[e[o]]),e[o].forEach(function(e){n.mapBinding(o,e)})):console.warn("Key Binding Error - no such action:",o)};for(var r in e)o(r)},P.prototype.mapBinding=function(e,t){var n=this,o={action:this.actions[e],keys:[],ctrl:!1,shift:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":o.ctrl=!0;break;case"shift":o.shift=!0;break;default:e=parseInt(e),o.keys.push(e),n.watchKeys[e]||(n.watchKeys[e]=[]),n.watchKeys[e].push(o)}})},P.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var n=t.keyCode,o=e.watchKeys[n];o&&(e.pressedKeys.push(n),o.forEach(function(n){e.checkBinding(t,n)}))},this.keydownBinding=function(t){var n=t.keyCode;if(e.watchKeys[n]){var o=e.pressedKeys.indexOf(n);o>-1&&e.pressedKeys.splice(o,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},P.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},P.prototype.checkBinding=function(e,t){var n=this,o=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&(t.keys.forEach(function(e){-1==n.pressedKeys.indexOf(e)&&(o=!1)}),o&&t.action.call(n,e),!0)},P.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},P.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,n=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n>=0?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,n=t.scrollTop+t.height,o=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n<=o?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().next())},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},d.prototype.registerModule("keybindings",P);var O=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};O.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},O.prototype.initializeColumn=function(e){var t,n=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===n.moving.parent&&((n.touchMove?o.touches[0].pageX:o.pageX)-d.prototype.helpers.elOffset(t).left+n.table.columnManager.element.scrollLeft>e.getWidth()/2?n.toCol===e&&n.toColAfter||(t.parentNode.insertBefore(n.placeholderElement,t.nextSibling),n.moveColumn(e,!0)):(n.toCol!==e||n.toColAfter)&&(t.parentNode.insertBefore(n.placeholderElement,t),n.moveColumn(e,!1)))}.bind(n),t.addEventListener("mousedown",function(t){n.touchMove=!1,1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),n.bindTouchEvents(e)),e.modules.moveColumn=o},O.prototype.bindTouchEvents=function(e){var t,n,o,r,i,a,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",function(l){s.checkTimeout=setTimeout(function(){s.touchMove=!0,e,t=e.nextColumn(),o=t?t.getWidth()/2:0,n=e.prevColumn(),r=n?n.getWidth()/2:0,i=0,a=0,u=!1,s.startMove(l,e)},s.checkPeriod)},{passive:!0}),l.addEventListener("touchmove",function(l){var c,d;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-i>o&&(d=t)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement().nextSibling),s.moveColumn(d,!0)):n&&-c-a>r&&(d=n)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement()),s.moveColumn(d,!1)),d&&(d,t=d.nextColumn(),i=o,o=t?t.getWidth()/2:0,n=d.prevColumn(),a=r,r=n?n.getWidth()/2:0))},{passive:!0}),l.addEventListener("touchend",function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)})},O.prototype.startMove=function(e,t){var n=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(n).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},O.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype.moveColumn=function(e,t){var n=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o.nextSibling)}):e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o)})},O.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumn(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},O.prototype.moveHover=function(e){var t,n=this,o=n.table.columnManager.getElement(),r=o.scrollLeft,i=(n.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(o).left+r;n.hoverElement.style.left=i-n.startX+"px",i-r<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.max(0,r-5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1))),r+o.clientWidth-i<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.min(o.clientWidth,r+5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1)))},d.prototype.registerModule("moveColumn",O);var N=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};N.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},N.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},N.prototype.setHandle=function(e){this.hasHandle=e},N.prototype.initializeGroupHeader=function(e){var t=this,n={};n.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),n.mousemove=function(n){var o;n.pageY-d.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=n},N.prototype.initializeRow=function(e){var t,n=this,o={};o.mouseup=function(t){n.tableRowDrop(t,e)}.bind(n),o.mousemove=function(t){var o;t.pageY-d.prototype.helpers.elOffset(e.element).top+n.table.rowManager.element.scrollTop>e.getHeight()/2?n.toRow===e&&n.toRowAfter||((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o.nextSibling),n.moveRow(e,!0)):(n.toRow!==e||n.toRowAfter)&&((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o),n.moveRow(e,!1))}.bind(n),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",function(t){1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o},N.prototype.initializeCell=function(e){var t=this,n=e.getElement();n.addEventListener("mousedown",function(n){1===n.which&&(t.checkTimeout=setTimeout(function(){t.startMove(n,e.row)},t.checkPeriod))}),n.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},N.prototype.bindTouchEvents=function(e,t){var n,o,r,i,a,s,l=this,u=!1;t.addEventListener("touchstart",function(t){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e,n=e.nextRow(),r=n?n.getHeight()/2:0,o=e.prevRow(),i=o?o.getHeight()/2:0,a=0,s=0,u=!1,l.startMove(t,e)},l.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var c,d;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?n&&c-a>r&&(d=n)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement().nextSibling),l.moveRow(d,!0)):o&&-c-s>i&&(d=o)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement()),l.moveRow(d,!1)),d&&(d,n=d.nextRow(),a=r,r=n?n.getHeight()/2:0,o=d.prevRow(),s=i,i=o?o.getHeight()/2:0))}),t.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)})},N.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype.startMove=function(e,t){var n=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n)),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},N.prototype.setStartPosition=function(e,t){var n,o,r=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;n=t.getElement(),this.connection?(o=n.getBoundingClientRect(),this.startX=o.left-r+window.pageXOffset,this.startY=o.top-i+window.pageYOffset):this.startY=i-n.getBoundingClientRect().top},N.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},N.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},N.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},N.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),n=t.scrollTop,o=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+n;this.hoverElement.style.top=o-this.startY+"px"},N.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},N.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},N.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},N.prototype.connect=function(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},N.prototype.disconnect=function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},N.prototype.dropComplete=function(e,t,n){var o=!1;if(n){switch(s(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},N.prototype.tableRowDrop=function(e,t){var n=!1,o=!1;switch(e.stopImmediatePropagation(),s(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:o})},N.prototype.receivers={insert:function(e,t,n){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,n){return this.table.addRow(e.getData()),!0},update:function(e,t,n){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,n){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},N.prototype.senders={delete:function(e,t,n){e.delete()}},N.prototype.commsReceived=function(e,t,n){switch(t){case"connect":return this.connect(e,n.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,n.row,n.success)}},d.prototype.registerModule("moveRow",N);var F=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};F.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupMutator(e.definition[a]))&&(n=!0,o[a]={mutator:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.mutate=o)},F.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},F.prototype.transformRow=function(e,t,n){var o,r="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse(function(i){var a,s,l;i.modules.mutate&&(a=i.modules.mutate[r]||i.modules.mutate.mutator||!1)&&(o=i.getFieldValue(e),(!n||n&&void 0!==o)&&(l=i.getComponent(),s="function"==typeof a.params?a.params(o,e,t,l):a.params,i.setFieldValue(e,a.mutator(o,e,t,s,l))))}),e},F.prototype.transformCell=function(e,t){var n=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1;return n?n.mutator(t,e.row.getData(),"edit",n.params,e.getComponent()):t},F.prototype.enable=function(){this.enabled=!0},F.prototype.disable=function(){this.enabled=!1},F.prototype.mutators={},d.prototype.registerModule("mutator",F);var A=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var n=1;n<5;n++)t.push(this.size*n);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var n=document.createElement("option");n.value=t,n.innerHTML=t,e.pageSizeSelect.appendChild(n)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(e){var t,n=this;for(var o in n.table.options.paginationDataSent)n.paginationDataSentNames[o]=n.table.options.paginationDataSent[o];for(var r in n.table.options.paginationDataReceived)n.paginationDataReceivedNames[r]=n.table.options.paginationDataReceived[r];n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize(n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.size=n.table.options.paginationSize||Math.floor(n.table.rowManager.getElement().clientHeight/24),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(e){this.displayIndex=e},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},A.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(e){var t=this;return new Promise(function(n,o){(e=parseInt(e))>0&&e<=t.max?(t.page=e,t.trigger().then(function(){n()}).catch(function(){o()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),o())})},A.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){var r=t.table.rowManager.getDisplayRows(t.displayIndex-1).indexOf(e);if(r>-1){var i=Math.ceil((r+1)/t.size);t.setPage(i).then(function(){n()}).catch(function(){o()})}else console.warn("Pagination Error - Requested row is not visible"),o()})},A.prototype.setPageSize=function(e){(e=parseInt(e))>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),n=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),o=this.page<=t?Math.min(this.count,this.max):Math.min(this.page+t,this.max);this.pagesElement.firstChild;)this.pagesElement.removeChild(this.pagesElement.firstChild);1==this.page?(this.firstBut.disabled=!0,this.prevBut.disabled=!0):(this.firstBut.disabled=!1,this.prevBut.disabled=!1),this.page==this.max?(this.lastBut.disabled=!0,this.nextBut.disabled=!0):(this.lastBut.disabled=!1,this.nextBut.disabled=!1);for(var r=n;r<=o;r++)r>0&&r<=this.max&&this.pagesElement.appendChild(this._generatePageButton(r));this.footerRedraw()},A.prototype._generatePageButton=function(e){var t=this,n=document.createElement("button");return n.classList.add("tabulator-page"),e==t.page&&n.classList.add("active"),n.setAttribute("type","button"),n.setAttribute("role","button"),n.setAttribute("aria-label","Show Page "+e),n.setAttribute("title","Show Page "+e),n.setAttribute("data-page",e),n.textContent=e,n.addEventListener("click",function(n){t.setPage(e)}),n},A.prototype.previousPage=function(){var e=this;return new Promise(function(t,n){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){n()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),n())})},A.prototype.nextPage=function(){var e=this;return new Promise(function(t,n){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){n()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),n())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(e){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(e){var t,n,o;if("local"==this.mode){t=[],o=(n=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(var r=n;r<o;r++)e[r]&&t.push(e[r]);return t}return this._setPageButtons(),e.slice(0)},A.prototype.trigger=function(){var e,t=this;return new Promise(function(n,o){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),n();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){n()}).catch(function(){o()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),o()}})},A.prototype._getRemotePage=function(){var e,t,n=this,o=this;return new Promise(function(r,i){if(o.table.modExists("ajax",!0)||i(),e=d.prototype.helpers.deepClone(o.table.modules.ajax.getParams()||{}),(t=o.table.modules.ajax.getParams())[n.paginationDataSentNames.page]=o.page,n.size&&(t[n.paginationDataSentNames.size]=n.size),n.table.options.ajaxSorting&&n.table.modExists("sort")){var a=o.table.modules.sort.getSort();a.forEach(function(e){delete e.column}),t[n.paginationDataSentNames.sorters]=a}if(n.table.options.ajaxFiltering&&n.table.modExists("filter")){var s=o.table.modules.filter.getFilters(!0,!0);t[n.paginationDataSentNames.filters]=s}o.table.modules.ajax.setParams(t),o.table.modules.ajax.sendRequest(n.progressiveLoad).then(function(e){o._parseRemoteData(e),r()}).catch(function(e){i()}),o.table.modules.ajax.setParams(e)})},A.prototype._parseRemoteData=function(e){var t,n,o=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){o.nextPage().then(function(){}).catch(function(){})},o.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),n=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,o.table.rowManager.element.scrollHeight<=o.table.rowManager.element.clientHeight+n&&o.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},d.prototype.registerModule("page",A);var I=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};I.prototype.initialize=function(e,t){this.mode=!0!==e?e:void 0!==window.localStorage?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},I.prototype.load=function(e,t){var n=this.retreiveData(e);return t&&(n=n?this.mergeDefinition(t,n):t),n},I.prototype.retreiveData=function(e){var t="",n=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(n);break;case"cookie":var o=document.cookie,r=o.indexOf(n+"="),i=void 0;r>-1&&((i=(o=o.substr(r)).indexOf(";"))>-1&&(o=o.substr(0,i)),t=o.replace(n+"=",""));break;default:console.warn("Persistance Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},I.prototype.mergeDefinition=function(e,t){var n=this,o=[];return(t=t||[]).forEach(function(t,r){var i=n._findColumn(e,t);i&&(i.width=t.width,i.visible=t.visible,i.columns&&(i.columns=n.mergeDefinition(i.columns,t.columns)),o.push(i))}),e.forEach(function(e,r){n._findColumn(t,e)||(o.length>r?o.splice(r,0,e):o.push(e))}),o},I.prototype._findColumn=function(e,t){var n=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(n){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},I.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort())}var n=this.id+("columns"===e?"":"-"+e);this.saveData(n,t)},I.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},I.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"="+t+"; expires="+n.toUTCString();break;default:console.warn("Persistance Save Error - invalid mode selected",this.mode)}},I.prototype.parseColumns=function(e){var t=this,n=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),n.push(o)}),n},d.prototype.registerModule("persistence",I);var H=function(e){this.table=e,this.element=!1,this.manualBlock=!1};H.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},H.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},H.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},H.prototype.printFullscreen=function(e,t,n){var o,r,i=window.scrollX,a=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.htmlTableExport.genereateTable(void 0!==n?n:this.table.options.printConfig,void 0!==t?t:this.table.options.printCopyStyle,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),"string"==typeof(o="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=o:s.appendChild(o),this.element.appendChild(s)),this.element.appendChild(u),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(r="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=r:l.appendChild(r),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,u),window.print(),this.cleanup(),window.scrollTo(i,a),this.manualBlock=!1},d.prototype.registerModule("print",H);var z=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};z.prototype.watchData=function(e){var t,n=this;this.currentVersion++,t=this.currentVersion,n.unwatchData(),n.data=e,n.origFuncs.push=e.push,Object.defineProperty(n.data,"push",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!1)}),n.origFuncs.push.apply(e,arguments)}}),n.origFuncs.unshift=e.unshift,Object.defineProperty(n.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!0)}),n.origFuncs.unshift.apply(e,arguments)}}),n.origFuncs.shift=e.shift,Object.defineProperty(n.data,"shift",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[0]))&&o.deleteActual(),n.origFuncs.shift.call(e)}}),n.origFuncs.pop=e.pop,Object.defineProperty(n.data,"pop",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[n.data.length-1]))&&o.deleteActual(),n.origFuncs.pop.call(e)}}),n.origFuncs.splice=e.splice,Object.defineProperty(n.data,"splice",{enumerable:!1,configurable:!0,value:function(){var o,r=Array.from(arguments),i=r[0]<0?e.length+r[0]:r[0],a=r[1],s=!!r[2]&&r.slice(2);if(!n.blocked&&t===n.currentVersion){if(s&&((o=!!e[i]&&n.table.rowManager.getRowFromDataObject(e[i]))?s.forEach(function(e){n.table.rowManager.addRowActual(e,!0,o,!0)}):(s=s.slice().reverse()).forEach(function(e){n.table.rowManager.addRowActual(e,!0,!1,!0)})),0!==a){var l=e.slice(i,void 0===r[1]?r[1]:i+a);l.forEach(function(e,t){var o=n.table.rowManager.getRowFromDataObject(e);o&&o.deleteActual(t!==l.length-1)})}(s||0!==a)&&n.table.rowManager.reRenderInPosition()}return n.origFuncs.splice.apply(e,arguments)}})},z.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},z.prototype.watchRow=function(e){var t=e.getData();for(var n in this.blocked=!0,t)this.watchKey(e,t,n);this.blocked=!1},z.prototype.watchKey=function(e,t,n){var o=this,r=Object.getOwnPropertyDescriptor(t,n),i=t[n],a=this.currentVersion;Object.defineProperty(t,n,{set:function(t){if(i=t,!o.blocked&&a===o.currentVersion){var s={};s[n]=t,e.updateData(s)}r.set&&r.set(t)},get:function(){return r.get&&r.get(),i}})},z.prototype.unwatchRow=function(e){var t=e.getData();for(var n in t)Object.defineProperty(t,n,{value:t[n]})},z.prototype.block=function(){this.blocked=!0},z.prototype.unblock=function(){this.blocked=!1},d.prototype.registerModule("reactiveData",z);var j=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};j.prototype.initializeColumn=function(e,t,n){var o=this,r=!1,i=this.table.options.resizableColumns;if("header"===e&&(r="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:r}),!0===i||i==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&n.reinitializeWidth(!0)}),s.addEventListener("click",function(e){e.stopPropagation()});var u=function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&(o.startColumn=t,o._mouseDown(e,i,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&i.reinitializeWidth(!0)}),n.appendChild(a),n.appendChild(s)}},j.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},j.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setWidth(o.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-o.startX)),!o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!1),o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.persistentLayout&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.save("columns"),o.table.options.columnResized.call(o.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!0),o.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,o.startWidth=t.getWidth(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeColumns",j);var B=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};B.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=document.createElement("div");o.className="tabulator-row-resize-handle";var r=document.createElement("div");r.className="tabulator-row-resize-handle prev",o.addEventListener("click",function(e){e.stopPropagation()});var i=function(n){t.startRow=e,t._mouseDown(n,e,o)};o.addEventListener("mousedown",i,{passive:!0}),o.addEventListener("touchstart",i),r.addEventListener("click",function(e){e.stopPropagation()});var a=function(n){var o=t.table.rowManager.prevDisplayRow(e);o&&(t.startRow=o,t._mouseDown(n,o,r))};r.addEventListener("mousedown",a),r.addEventListener("touchstart",a,{passive:!0}),n.appendChild(o),n.appendChild(r)},B.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setHeight(o.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-o.startY))}function i(e){document.body.removeEventListener("mouseup",r),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.rowResized.call(this.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,o.startHeight=t.getHeight(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeRows",B);var U=function(e){this.table=e,this.binding=!1,this.observer=!1};U.prototype.initialize=function(e){var t=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){t.redraw()}),this.observer.observe(t.element)):(this.binding=function(){t.redraw()},window.addEventListener("resize",this.binding))},U.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},d.prototype.registerModule("resizeTable",U);var W=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};W.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(n,o){n.modules.responsive&&n.modules.responsive.order&&n.modules.responsive.visible&&(n.modules.responsive.index=o,t.push(n),n.visible||"collapse"!==e.mode||e.hiddenColumns.push(n))}),t=(t=t.reverse()).sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},W.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},W.prototype.layoutRow=function(e){var t=e.getElement(),n=document.createElement("div");n.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:n},this.collapseStartOpen||(n.style.display="none"),t.appendChild(n),this.generateCollapsedRowContent(e))},W.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},W.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},W.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},W.prototype.update=function(){for(var e=!0;e;){var t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),n=this.table.columnManager.element.clientWidth-t;if(n<0){var o=this.columns[this.index];o?(this.hideColumn(o),this.index++):e=!1}else{var r=this.columns[this.index-1];r&&n>0&&n>=r.getWidth()?(this.showColumn(r),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}},W.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},W.prototype.generateCollapsedRowContent=function(e){var t,n;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(n=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(n)}},W.prototype.generateCollapsedRowData=function(e){var t,n=this,o=e.getData(),r=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(o);i.definition.title&&i.field&&(i.modules.format&&n.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return o},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},r.push({title:i.definition.title,value:i.modules.format.formatter.call(n.table.modules.format,t,i.modules.format.params)})):r.push({title:i.definition.title,value:a}))}),r},W.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),n="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),n+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=n,Object.keys(e).length?t:""},d.prototype.registerModule("responsiveLayout",W);var q=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[]};q.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},q.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(n.classList.add("tabulator-selectable"),n.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?n.addEventListener("click",function(n){if(t.table._clearSelection(),n.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var o=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),r=t.table.rowManager.getDisplayRowIndex(e),i=o<=r?o:r,a=o>=r?o:r,s=t.table.rowManager.getDisplayRows().slice(0).splice(i,a-i+1);n.ctrlKey||n.metaKey?(s.forEach(function(n){n!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(n):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(n))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&s.length>t.table.options.selectable&&(s=s.slice(0,t.table.options.selectable)),t.selectRows(s))}else n.ctrlKey||n.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(n.addEventListener("click",function(n){t.table._clearSelection(),t.selecting||t.toggleRow(e)}),n.addEventListener("mousedown",function(n){if(n.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",o),document.body.addEventListener("keyup",o),t.toggleRow(e),!1}),n.addEventListener("mouseenter",function(n){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),n.addEventListener("mouseout",function(n){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(n.classList.add("tabulator-unselectable"),n.classList.remove("tabulator-selectable"))},q.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},q.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":s(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},q.prototype._selectRow=function(e,t,n){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!n&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var o=this.table.rowManager.findRow(e);o?-1==this.selectedRows.indexOf(o)&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!0,o.getElement().classList.add("tabulator-selected"),this.selectedRows.push(o),t||(this.table.options.rowSelected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},q.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},q.prototype.deselectRows=function(e){var t,n=this;if(void 0===e){t=n.selectedRows.length;for(var o=0;o<t;o++)n._deselectRow(n.selectedRows[0],!0);n._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){n._deselectRow(e,!0)}),n._rowSelectionChanged()):n._deselectRow(e)},q.prototype._deselectRow=function(e,t){var n,o=this.table.rowManager.findRow(e);o?(n=this.selectedRows.findIndex(function(e){return e==o}))>-1&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.getElement().classList.remove("tabulator-selected"),this.selectedRows.splice(n,1),t||(this.table.options.rowDeselected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},q.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},q.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},q.prototype._rowSelectionChanged=function(){this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},d.prototype.registerModule("selectRow",q);var G=function(e){this.table=e,this.sortList=[],this.changed=!1};G.prototype.initializeColumn=function(e,t){var n,o,r=this,i=!1;switch(s(e.definition.sorter)){case"string":r.sorters[e.definition.sorter]?i=r.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":i=e.definition.sorter}e.modules.sort={sorter:i,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((n=e.getElement()).classList.add("tabulator-sortable"),(o=document.createElement("div")).classList.add("tabulator-arrow"),t.appendChild(o),n.addEventListener("click",function(t){var n="",o=[],i=!1;if(e.modules.sort){if(e.modules.sort.tristate)n="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":n="desc";break;case"desc":n="asc";break;default:n=e.modules.sort.startingDir}r.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?((i=(o=r.getSort()).findIndex(function(t){return t.field===e.getField()}))>-1?(o[i].dir=n,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=n&&o.push(i))):"none"!=n&&o.push({column:e,dir:n}),r.setSort(o)):"none"==n?r.clear():r.setSort(e,n),r.table.rowManager.sorterRefresh(!r.sortList.length)}}))},G.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},G.prototype.getSort=function(){var e=[];return this.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},G.prototype.setSort=function(e,t){var n=this,o=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;(t=n.table.columnManager.findColumn(e.column))?(e.column=t,o.push(e),n.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),n.sortList=o,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},G.prototype.clear=function(){this.setSort([])},G.prototype.findSorter=function(e){var t,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),e.getField()))switch(void 0===(t=e.getFieldValue(n))?"undefined":s(t)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},G.prototype.sort=function(e){var t,n=this;t=this.table.options.sortOrderReverse?n.sortList.slice().reverse():n.sortList,n.table.options.dataSorting&&n.table.options.dataSorting.call(n.table,n.getSort()),n.clearColumnHeaders(),n.table.options.ajaxSorting?t.forEach(function(e,t){n.setColumnHeader(e.column,e.dir)}):t.forEach(function(o,r){o.column&&o.column.modules.sort&&(o.column.modules.sort.sorter||(o.column.modules.sort.sorter=n.findSorter(o.column)),n._sortItem(e,o.column,o.dir,t,r)),n.setColumnHeader(o.column,o.dir)}),n.table.options.dataSorted&&n.table.options.dataSorted.call(n.table,n.getSort(),n.table.rowManager.getComponents(!0))},G.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},G.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},G.prototype._sortItem=function(e,t,n,o,r){var i=this,a="function"==typeof t.modules.sort.params?t.modules.sort.params(t.getComponent(),n):t.modules.sort.params;e.sort(function(e,s){var l=i._sortRow(e,s,t,n,a);if(0===l&&r)for(var u=r-1;u>=0&&0===(l=i._sortRow(e,s,o[u].column,o[u].dir,a));u--);return l})},G.prototype._sortRow=function(e,t,n,o,r){var i,a,s="asc"==o?e:t,l="asc"==o?t:e;return e=void 0!==(e=n.getFieldValue(s.getData()))?e:"",t=void 0!==(t=n.getFieldValue(l.getData()))?t:"",i=s.getComponent(),a=l.getComponent(),n.modules.sort.sorter.call(this,e,t,i,a,n.getComponent(),o,r)},G.prototype.sorters={number:function(e,t,n,o,r,i,a){var s=a.alignEmptyValues,l=a.decimalSeparator||".",u=a.thousandSeparator||",",c=0;if(e=parseFloat(String(e).split(u).join("").split(l).join(".")),t=parseFloat(String(t).split(u).join("").split(l).join(".")),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===i||"bottom"===s&&"asc"===i)&&(c*=-1),c},string:function(e,t,n,o,r,i,a){var l,u=a.alignEmptyValues,c=0;if(e){if(t){switch(s(a.locale)){case"boolean":a.locale&&(l=this.table.modules.localize.getLocale());break;case"string":l=a.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),l)}c=1}else c=t?-1:0;return("top"===u&&"desc"===i||"bottom"===u&&"asc"===i)&&(c*=-1),c},date:function(e,t,n,o,r,i,a){return a.format||(a.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},time:function(e,t,n,o,r,i,a){return a.format||(a.format="hh:mm"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},datetime:function(e,t,n,o,r,i,a){var s=a.format||"DD/MM/YYYY hh:mm:ss",l=a.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(e=moment(e,s),t=moment(t,s),e.isValid()){if(t.isValid())return e-t;u=1}else u=t.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,n,o,r,i,a){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,n,o,r,i,a){var s=a.type||"length",l=a.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},exists:function(e,t,n,o,r,i,a){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,n,o,r,i,a){var s,l,u,c,d,p=0,h=/(\d+)|(\D+)/g,f=/\d/,m=a.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!f.test(s)||!f.test(l))return s>l?1:-1;for(s=s.match(h),l=l.match(h),d=s.length>l.length?l.length:s.length;p<d;)if((u=s[p])!==(c=l[p++]))return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===m&&"desc"===i||"bottom"===m&&"asc"===i)&&(g*=-1),g}},d.prototype.registerModule("sort",G);var V=function(e){this.table=e};return V.prototype.initializeColumn=function(e){var t,n=this,o=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=n._extractValidator(e))&&o.push(t)}):(t=this._extractValidator(e.definition.validator))&&o.push(t),e.modules.validate=!!o.length&&o)},V.prototype._extractValidator=function(e){var t,n,o;switch(void 0===e?"undefined":s(e)){case"string":return n=(t=e.split(":",2)).shift(),o=t[0],this._buildValidator(n,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},V.prototype._buildValidator=function(e,t){var n="function"==typeof e?e:this.validators[e];return n?{type:"function"==typeof e?"function":e,func:n,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},V.prototype.validate=function(e,t,n){var o=this,r=[];return e&&e.forEach(function(e){e.func.call(o,t,n,e.params)||r.push({type:e.type,parameters:e.params})}),!r.length||r},V.prototype.validators={integer:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,n){return""===t||null==t||!isNaN(t)},string:function(e,t,n){return""===t||null==t||isNaN(t)},max:function(e,t,n){return""===t||null==t||parseFloat(t)<=n},min:function(e,t,n){return""===t||null==t||parseFloat(t)>=n},minLength:function(e,t,n){return""===t||null==t||String(t).length>=n},maxLength:function(e,t,n){return""===t||null==t||String(t).length<=n},in:function(e,t,n){return""===t||null==t||("string"==typeof n&&(n=n.split("|")),""===t||n.indexOf(t)>-1)},regex:function(e,t,n){return""===t||null==t||new RegExp(n).test(t)},unique:function(e,t,n){if(""===t||null==t)return!0;var o=!0,r=e.getData(),i=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var n=e.getData();n!==r&&t==i.getFieldValue(n)&&(o=!1)}),o},required:function(e,t,n){return""!==t&&null!=t}},d.prototype.registerModule("validate",V),d},"object"===s(n)&&void 0!==t?t.exports=a():void 0===(i="function"==typeof(r=a)?r.call(n,o,n,t):r)||(t.exports=i)},function(e,t,n){e.exports=n(49)},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=g(n(55)),r=g(n(29)),i=g(n(10)),a=g(n(30)),s=g(n(2)),l=g(n(21)),u=g(n(56)),c=g(n(0)),d=g(n(7)),p=g(n(25)),h=g(n(70)),f=g(n(34)),m=g(n(72));function g(e){return e&&e.__esModule?e:{default:e}}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var b=new p.default;var w=function(e){var t,n;function s(){for(var t,n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return(t=e.call.apply(e,[this].concat(i))||this).state={exited:!t.props.show},t.onPortalRendered=function(){t.props.onShow&&t.props.onShow(),t.autoFocus()},t.onShow=function(){var e=(0,m.default)(y(y(t))),n=(0,f.default)(t.props.container,e.body);t.props.manager.add(y(y(t)),n,t.props.containerClassName),t.removeKeydownListener=(0,a.default)(e,"keydown",t.handleDocumentKeyDown),t.removeFocusListener=(0,a.default)(e,"focus",function(){return setTimeout(t.enforceFocus)},!0)},t.onHide=function(){t.props.manager.remove(y(y(t))),t.removeKeydownListener(),t.removeFocusListener(),t.props.restoreFocus&&t.restoreLastFocus()},t.setDialogRef=function(e){t.dialog=e},t.setBackdropRef=function(e){t.backdrop=e&&d.default.findDOMNode(e)},t.handleHidden=function(){var e;(t.setState({exited:!0}),t.onHide(),t.props.onExited)&&(e=t.props).onExited.apply(e,arguments)},t.handleBackdropClick=function(e){e.target===e.currentTarget&&(t.props.onBackdropClick&&t.props.onBackdropClick(e),!0===t.props.backdrop&&t.props.onHide())},t.handleDocumentKeyDown=function(e){t.props.keyboard&&27===e.keyCode&&t.isTopModal()&&(t.props.onEscapeKeyDown&&t.props.onEscapeKeyDown(e),t.props.onHide())},t.enforceFocus=function(){if(t.props.enforceFocus&&t._isMounted&&t.isTopModal()){var e=(0,o.default)((0,m.default)(y(y(t))));t.dialog&&!(0,r.default)(t.dialog,e)&&t.dialog.focus()}},t.renderBackdrop=function(){var e=t.props,n=e.renderBackdrop,o=e.backdropTransition,r=n({ref:t.setBackdropRef,onClick:t.handleBackdropClick});return o&&(r=c.default.createElement(o,{appear:!0,in:t.props.show},r)),r},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s.getDerivedStateFromProps=function(e){return e.show?{exited:!1}:e.transition?null:{exited:!0}};var l=s.prototype;return l.getSnapshotBeforeUpdate=function(e){return i.default&&!e.show&&this.props.show&&(this.lastFocus=(0,o.default)()),null},l.componentDidMount=function(){this._isMounted=!0,this.props.show&&this.onShow()},l.componentDidUpdate=function(e){var t=this.props.transition;!e.show||this.props.show||t?!e.show&&this.props.show&&this.onShow():this.onHide()},l.componentWillUnmount=function(){var e=this.props,t=e.show,n=e.transition;this._isMounted=!1,(t||n&&!this.state.exited)&&this.onHide()},l.autoFocus=function(){if(this.props.autoFocus){var e=(0,o.default)((0,m.default)(this));this.dialog&&!(0,r.default)(this.dialog,e)&&(this.lastFocus=e,this.dialog.focus())}},l.restoreLastFocus=function(){this.lastFocus&&this.lastFocus.focus&&(this.lastFocus.focus(),this.lastFocus=null)},l.isTopModal=function(){return this.props.manager.isTopModal(this)},l.render=function(){var e=this.props,t=e.show,n=e.container,o=e.children,r=e.renderDialog,i=e.role,a=void 0===i?"dialog":i,l=e.transition,u=e.backdrop,d=e.className,p=e.style,f=e.onExit,m=e.onExiting,g=e.onEnter,y=e.onEntering,b=e.onEntered,w=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,["show","container","children","renderDialog","role","transition","backdrop","className","style","onExit","onExiting","onEnter","onEntering","onEntered"]);if(!(t||l&&!this.state.exited))return null;var E=v({role:a,ref:this.setDialogRef,"aria-modal":"dialog"===a||void 0},function(e,t){var n=Object.keys(e),o={};return n.map(function(n){Object.prototype.hasOwnProperty.call(t,n)||(o[n]=e[n])}),o}(w,s.propTypes),{style:p,className:d,tabIndex:"-1"}),C=r?r(E):c.default.createElement("div",E,c.default.cloneElement(o,{role:"document"}));return l&&(C=c.default.createElement(l,{appear:!0,unmountOnExit:!0,in:t,onExit:f,onExiting:m,onExited:this.handleHidden,onEnter:g,onEntering:y,onEntered:b},C)),c.default.createElement(h.default,{container:n,onRendered:this.onPortalRendered},c.default.createElement(c.default.Fragment,null,u&&this.renderBackdrop(),C))},s}(c.default.Component);w.propTypes={show:s.default.bool,container:s.default.oneOfType([l.default,s.default.func]),onShow:s.default.func,onHide:s.default.func,backdrop:s.default.oneOfType([s.default.bool,s.default.oneOf(["static"])]),renderDialog:s.default.func,renderBackdrop:s.default.func,onEscapeKeyDown:s.default.func,onBackdropClick:s.default.func,containerClassName:s.default.string,keyboard:s.default.bool,transition:u.default,backdropTransition:u.default,autoFocus:s.default.bool,enforceFocus:s.default.bool,restoreFocus:s.default.bool,onEnter:s.default.func,onEntering:s.default.func,onEntered:s.default.func,onExit:s.default.func,onExiting:s.default.func,onExited:s.default.func,manager:s.default.object.isRequired},w.defaultProps={show:!1,role:"dialog",backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,onHide:function(){},manager:b,renderBackdrop:function(e){return c.default.createElement("div",e)}},w.Manager=p.default;var E=w;t.default=E,e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=o(n(33)),i=o(n(14));function a(e,t,n){var o,i={target:e,currentTarget:e};function a(e){e.target===e.currentTarget&&(clearTimeout(o),e.target.removeEventListener(r.default.end,a),t.call(this))}r.default.end?null==n&&(n=l(e)||0):n=0,r.default.end?(e.addEventListener(r.default.end,a,!1),o=setTimeout(function(){return a(i)},1.5*(n||100))):setTimeout(a.bind(null,i),0)}a._parseDuration=l;var s=a;function l(e){var t=(0,i.default)(e,r.default.duration),n=-1===t.indexOf("ms")?1e3:1;return parseFloat(t)*n}t.default=s,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){return 2===arguments.length?u(e,t):u({consumers:e,mapToProps:t},n)};var o=i(n(0)),r=i(n(23));function i(e){return e&&e.__esModule?e:{default:e}}function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}var s=function(e){var t="string"==typeof e?e:e.name||e.displayName;return t?"ContextTransform("+t+")":"ContextTransform"},l=function(e){return e.Consumer||e};function u(e,t){var n=e.consumers,i=e.mapToProps,u=e.displayName,c=e.forwardRefAs,d=void 0===c?"ref":c,p=n;Array.isArray(n)||(p=[n]);var h=l(p[0]);var f=1===p.length?function(e,n){var r,s=a(((r={})[d]=n,r),e);return o.default.createElement(h,null,function(n){return o.default.createElement(t,a({},s,i(n,e)))})}:function(e,n){var r,s=a(((r={})[d]=n,r),e);return p.reduceRight(function(e,t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=l(t);return o.default.createElement(a,null,function(t){return e.apply(void 0,r.concat([t]))})}},function(){for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return o.default.createElement(t,a({},s,i.apply(void 0,r.concat([e]))))})()};return(0,r.default)(f,{displayName:u||s(t)})}},function(e,t,n){var o=n(85);e.exports=h,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t))},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var r=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,o=[],i=0,a=0,s="",c=t&&t.delimiter||"/";null!=(n=r.exec(e));){var d=n[0],p=n[1],h=n.index;if(s+=e.slice(a,h),a=h+d.length,p)s+=p[1];else{var f=e[a],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],w=n[7];s&&(o.push(s),s="");var E=null!=m&&null!=f&&f!==m,C="+"===b||"*"===b,x="?"===b||"*"===b,T=n[2]||c,k=v||y;o.push({name:g||i++,prefix:m||"",delimiter:T,optional:x,repeat:C,partial:E,asterisk:!!w,pattern:k?u(k):w?".*":"[^"+l(T)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&o.push(s),o}function a(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,r){for(var i="",s=n||{},l=(r||{}).pretty?a:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(i+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(o(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(d=l(p[h]),!t[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===h?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):l(p),!t[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');i+=c.prefix+d}}else i+=c}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e.sensitive?"":"i"}function p(e,t,n){o(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,i=!1!==n.end,a="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)a+=l(u);else{var p=l(u.prefix),h="(?:"+u.pattern+")";t.push(u),u.repeat&&(h+="(?:"+p+h+")*"),a+=h=u.optional?u.partial?p+"("+h+")?":"(?:"+p+"("+h+"))?":p+"("+h+")"}}var f=l(n.delimiter||"/"),m=a.slice(-f.length)===f;return r||(a=(m?a.slice(0,-f.length):a)+"(?:"+f+"(?=$))?"),a+=i?"$":r&&m?"":"(?="+f+"|$)",c(new RegExp("^"+a,d(n)),t)}function h(e,t,n){return o(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var o=0;o<n.length;o++)t.push({name:o,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):o(e)?function(e,t,n){for(var o=[],r=0;r<e.length;r++)o.push(h(e[r],t,n).source);return c(new RegExp("(?:"+o.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";
/** @license React v16.8.6
* react.production.min.js
*
@@ -32,7 +32,7 @@ object-assign
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var o=n(22),r="function"==typeof Symbol&&Symbol.for,i=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.concurrent_mode"):60111,h=r?Symbol.for("react.forward_ref"):60112,f=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.memo"):60115,g=r?Symbol.for("react.lazy"):60116,v="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function E(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}function C(){}function x(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}E.prototype.isReactComponent={},E.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&y("85"),this.updater.enqueueSetState(this,e,t,"setState")},E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},C.prototype=E.prototype;var T=x.prototype=new C;T.constructor=x,o(T,E.prototype),T.isPureReactComponent=!0;var k={current:null},S={current:null},D=Object.prototype.hasOwnProperty,M={key:!0,ref:!0,__self:!0,__source:!0};function R(e,t,n){var o=void 0,r={},a=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)D.call(t,o)&&!M.hasOwnProperty(o)&&(r[o]=t[o]);var l=arguments.length-2;if(1===l)r.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];r.children=u}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===r[o]&&(r[o]=l[o]);return{$$typeof:i,type:e,key:a,ref:s,props:r,_owner:S.current}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var _=/\/+/g,L=[];function O(e,t,n,o){if(L.length){var r=L.pop();return r.result=e,r.keyPrefix=t,r.func=n,r.context=o,r.count=0,r}return{result:e,keyPrefix:t,func:n,context:o,count:0}}function N(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>L.length&&L.push(e)}function F(e,t,n){return null==e?0:function e(t,n,o,r){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return o(r,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;u<t.length;u++){var c=n+A(s=t[u],u);l+=e(s,c,o,r)}else if(c=null===t||"object"!=typeof t?null:"function"==typeof(c=v&&t[v]||t["@@iterator"])?c:null,"function"==typeof c)for(t=c.call(t),u=0;!(s=t.next()).done;)l+=e(s=s.value,c=n+A(s,u++),o,r);else"object"===s&&y("31","[object Object]"==(o=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":o,"");return l}(e,"",t,n)}function A(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function I(e,t){e.func.call(e.context,t,e.count++)}function H(e,t,n){var o=e.result,r=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,o,n,function(e){return e}):null!=e&&(P(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,r+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(_,"$&/")+"/")+n)),o.push(e))}function z(e,t,n,o,r){var i="";null!=n&&(i=(""+n).replace(_,"$&/")+"/"),F(e,H,t=O(t,i,o,r)),N(t)}function j(){var e=k.current;return null===e&&y("321"),e}var B={Children:{map:function(e,t,n){if(null==e)return e;var o=[];return z(e,o,null,t,n),o},forEach:function(e,t,n){if(null==e)return e;F(e,I,t=O(null,null,t,n)),N(t)},count:function(e){return F(e,function(){return null},null)},toArray:function(e){var t=[];return z(e,t,null,function(e){return e}),t},only:function(e){return P(e)||y("143"),e}},createRef:function(){return{current:null}},Component:E,PureComponent:x,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:h,render:e}},lazy:function(e){return{$$typeof:g,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return j().useCallback(e,t)},useContext:function(e,t){return j().useContext(e,t)},useEffect:function(e,t){return j().useEffect(e,t)},useImperativeHandle:function(e,t,n){return j().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return j().useLayoutEffect(e,t)},useMemo:function(e,t){return j().useMemo(e,t)},useReducer:function(e,t,n){return j().useReducer(e,t,n)},useRef:function(e){return j().useRef(e)},useState:function(e){return j().useState(e)},Fragment:s,StrictMode:l,Suspense:f,createElement:R,cloneElement:function(e,t,n){null==e&&y("267",e);var r=void 0,a=o({},e.props),s=e.key,l=e.ref,u=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,u=S.current),void 0!==t.key&&(s=""+t.key);var c=void 0;for(r in e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)D.call(t,r)&&!M.hasOwnProperty(r)&&(a[r]=void 0===t[r]&&void 0!==c?c[r]:t[r])}if(1===(r=arguments.length-2))a.children=n;else if(1<r){c=Array(r);for(var d=0;d<r;d++)c[d]=arguments[d+2];a.children=c}return{$$typeof:i,type:e.type,key:s,ref:l,props:a,_owner:u}},createFactory:function(e){var t=R.bind(null,e);return t.type=e,t},isValidElement:P,version:"16.8.6",unstable_ConcurrentMode:p,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:k,ReactCurrentOwner:S,assign:o}},U={default:B},W=U&&B||U;e.exports=W.default||W},function(e,t,n){"use strict";
+ */var o=n(20),r="function"==typeof Symbol&&Symbol.for,i=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.concurrent_mode"):60111,h=r?Symbol.for("react.forward_ref"):60112,f=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.memo"):60115,g=r?Symbol.for("react.lazy"):60116,v="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function E(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}function C(){}function x(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}E.prototype.isReactComponent={},E.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&y("85"),this.updater.enqueueSetState(this,e,t,"setState")},E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},C.prototype=E.prototype;var T=x.prototype=new C;T.constructor=x,o(T,E.prototype),T.isPureReactComponent=!0;var k={current:null},S={current:null},D=Object.prototype.hasOwnProperty,M={key:!0,ref:!0,__self:!0,__source:!0};function R(e,t,n){var o=void 0,r={},a=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)D.call(t,o)&&!M.hasOwnProperty(o)&&(r[o]=t[o]);var l=arguments.length-2;if(1===l)r.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];r.children=u}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===r[o]&&(r[o]=l[o]);return{$$typeof:i,type:e,key:a,ref:s,props:r,_owner:S.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var L=/\/+/g,P=[];function O(e,t,n,o){if(P.length){var r=P.pop();return r.result=e,r.keyPrefix=t,r.func=n,r.context=o,r.count=0,r}return{result:e,keyPrefix:t,func:n,context:o,count:0}}function N(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>P.length&&P.push(e)}function F(e,t,n){return null==e?0:function e(t,n,o,r){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return o(r,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;u<t.length;u++){var c=n+A(s=t[u],u);l+=e(s,c,o,r)}else if(c=null===t||"object"!=typeof t?null:"function"==typeof(c=v&&t[v]||t["@@iterator"])?c:null,"function"==typeof c)for(t=c.call(t),u=0;!(s=t.next()).done;)l+=e(s=s.value,c=n+A(s,u++),o,r);else"object"===s&&y("31","[object Object]"==(o=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":o,"");return l}(e,"",t,n)}function A(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function I(e,t){e.func.call(e.context,t,e.count++)}function H(e,t,n){var o=e.result,r=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,o,n,function(e){return e}):null!=e&&(_(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,r+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(L,"$&/")+"/")+n)),o.push(e))}function z(e,t,n,o,r){var i="";null!=n&&(i=(""+n).replace(L,"$&/")+"/"),F(e,H,t=O(t,i,o,r)),N(t)}function j(){var e=k.current;return null===e&&y("321"),e}var B={Children:{map:function(e,t,n){if(null==e)return e;var o=[];return z(e,o,null,t,n),o},forEach:function(e,t,n){if(null==e)return e;F(e,I,t=O(null,null,t,n)),N(t)},count:function(e){return F(e,function(){return null},null)},toArray:function(e){var t=[];return z(e,t,null,function(e){return e}),t},only:function(e){return _(e)||y("143"),e}},createRef:function(){return{current:null}},Component:E,PureComponent:x,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:h,render:e}},lazy:function(e){return{$$typeof:g,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return j().useCallback(e,t)},useContext:function(e,t){return j().useContext(e,t)},useEffect:function(e,t){return j().useEffect(e,t)},useImperativeHandle:function(e,t,n){return j().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return j().useLayoutEffect(e,t)},useMemo:function(e,t){return j().useMemo(e,t)},useReducer:function(e,t,n){return j().useReducer(e,t,n)},useRef:function(e){return j().useRef(e)},useState:function(e){return j().useState(e)},Fragment:s,StrictMode:l,Suspense:f,createElement:R,cloneElement:function(e,t,n){null==e&&y("267",e);var r=void 0,a=o({},e.props),s=e.key,l=e.ref,u=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,u=S.current),void 0!==t.key&&(s=""+t.key);var c=void 0;for(r in e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)D.call(t,r)&&!M.hasOwnProperty(r)&&(a[r]=void 0===t[r]&&void 0!==c?c[r]:t[r])}if(1===(r=arguments.length-2))a.children=n;else if(1<r){c=Array(r);for(var d=0;d<r;d++)c[d]=arguments[d+2];a.children=c}return{$$typeof:i,type:e.type,key:s,ref:l,props:a,_owner:u}},createFactory:function(e){var t=R.bind(null,e);return t.type=e,t},isValidElement:_,version:"16.8.6",unstable_ConcurrentMode:p,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:k,ReactCurrentOwner:S,assign:o}},U={default:B},W=U&&B||U;e.exports=W.default||W},function(e,t,n){"use strict";
/** @license React v16.8.6
* react-dom.production.min.js
*
@@ -40,7 +40,7 @@ object-assign
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var o=n(0),r=n(22),i=n(46);function a(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}o||a("227");var s=!1,l=null,u=!1,c=null,d={onError:function(e){s=!0,l=e}};function p(e,t,n,o,r,i,a,u,c){s=!1,l=null,function(e,t,n,o,r,i,a,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}.apply(d,arguments)}var h=null,f={};function m(){if(h)for(var e in f){var t=f[e],n=h.indexOf(e);if(-1<n||a("96",e),!v[n])for(var o in t.extractEvents||a("97",e),v[n]=t,n=t.eventTypes){var r=void 0,i=n[o],s=t,l=o;y.hasOwnProperty(l)&&a("99",l),y[l]=i;var u=i.phasedRegistrationNames;if(u){for(r in u)u.hasOwnProperty(r)&&g(u[r],s,l);r=!0}else i.registrationName?(g(i.registrationName,s,l),r=!0):r=!1;r||a("98",o,e)}}}function g(e,t,n){b[e]&&a("100",e),b[e]=t,w[e]=t.eventTypes[n].dependencies}var v=[],y={},b={},w={},E=null,C=null,x=null;function T(e,t,n){var o=e.type||"unknown-event";e.currentTarget=x(n),function(e,t,n,o,r,i,d,h,f){if(p.apply(this,arguments),s){if(s){var m=l;s=!1,l=null}else a("198"),m=void 0;u||(u=!0,c=m)}}(o,t,void 0,e),e.currentTarget=null}function k(e,t){return null==t&&a("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function S(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var D=null;function M(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var o=0;o<t.length&&!e.isPropagationStopped();o++)T(e,t[o],n[o]);else t&&T(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}var R={injectEventPluginOrder:function(e){h&&a("101"),h=Array.prototype.slice.call(e),m()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var o=e[t];f.hasOwnProperty(t)&&f[t]===o||(f[t]&&a("102",t),f[t]=o,n=!0)}n&&m()}};function P(e,t){var n=e.stateNode;if(!n)return null;var o=E(n);if(!o)return null;n=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(o=!o.disabled)||(o=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!o;break e;default:e=!1}return e?null:(n&&"function"!=typeof n&&a("231",t,typeof n),n)}function _(e){if(null!==e&&(D=k(D,e)),e=D,D=null,e&&(S(e,M),D&&a("95"),u))throw e=c,u=!1,c=null,e}var L=Math.random().toString(36).slice(2),O="__reactInternalInstance$"+L,N="__reactEventHandlers$"+L;function F(e){if(e[O])return e[O];for(;!e[O];){if(!e.parentNode)return null;e=e.parentNode}return 5===(e=e[O]).tag||6===e.tag?e:null}function A(e){return!(e=e[O])||5!==e.tag&&6!==e.tag?null:e}function I(e){if(5===e.tag||6===e.tag)return e.stateNode;a("33")}function H(e){return e[N]||null}function z(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function j(e,t,n){(t=P(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function B(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=z(t);for(t=n.length;0<t--;)j(n[t],"captured",e);for(t=0;t<n.length;t++)j(n[t],"bubbled",e)}}function U(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=P(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function W(e){e&&e.dispatchConfig.registrationName&&U(e._targetInst,null,e)}function q(e){S(e,B)}var V=!("undefined"==typeof window||!window.document||!window.document.createElement);function G(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Y={animationend:G("Animation","AnimationEnd"),animationiteration:G("Animation","AnimationIteration"),animationstart:G("Animation","AnimationStart"),transitionend:G("Transition","TransitionEnd")},$={},X={};function K(e){if($[e])return $[e];if(!Y[e])return e;var t,n=Y[e];for(t in n)if(n.hasOwnProperty(t)&&t in X)return $[e]=n[t];return e}V&&(X=document.createElement("div").style,"AnimationEvent"in window||(delete Y.animationend.animation,delete Y.animationiteration.animation,delete Y.animationstart.animation),"TransitionEvent"in window||delete Y.transitionend.transition);var Q=K("animationend"),J=K("animationiteration"),Z=K("animationstart"),ee=K("transitionend"),te="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ne=null,oe=null,re=null;function ie(){if(re)return re;var e,t,n=oe,o=n.length,r="value"in ne?ne.value:ne.textContent,i=r.length;for(e=0;e<o&&n[e]===r[e];e++);var a=o-e;for(t=1;t<=a&&n[o-t]===r[i-t];t++);return re=r.slice(e,1<t?1-t:void 0)}function ae(){return!0}function se(){return!1}function le(e,t,n,o){for(var r in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(r)&&((t=e[r])?this[r]=t(n):"target"===r?this.target=o:this[r]=n[r]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?ae:se,this.isPropagationStopped=se,this}function ue(e,t,n,o){if(this.eventPool.length){var r=this.eventPool.pop();return this.call(r,e,t,n,o),r}return new this(e,t,n,o)}function ce(e){e instanceof this||a("279"),e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ue,e.release=ce}r(le.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ae)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ae)},persist:function(){this.isPersistent=ae},isPersistent:se,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=se,this._dispatchInstances=this._dispatchListeners=null}}),le.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},le.extend=function(e){function t(){}function n(){return o.apply(this,arguments)}var o=this;t.prototype=o.prototype;var i=new t;return r(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=r({},o.Interface,e),n.extend=o.extend,de(n),n},de(le);var pe=le.extend({data:null}),he=le.extend({data:null}),fe=[9,13,27,32],me=V&&"CompositionEvent"in window,ge=null;V&&"documentMode"in document&&(ge=document.documentMode);var ve=V&&"TextEvent"in window&&!ge,ye=V&&(!me||ge&&8<ge&&11>=ge),be=String.fromCharCode(32),we={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Ee=!1;function Ce(e,t){switch(e){case"keyup":return-1!==fe.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function xe(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Te=!1;var ke={eventTypes:we,extractEvents:function(e,t,n,o){var r=void 0,i=void 0;if(me)e:{switch(e){case"compositionstart":r=we.compositionStart;break e;case"compositionend":r=we.compositionEnd;break e;case"compositionupdate":r=we.compositionUpdate;break e}r=void 0}else Te?Ce(e,n)&&(r=we.compositionEnd):"keydown"===e&&229===n.keyCode&&(r=we.compositionStart);return r?(ye&&"ko"!==n.locale&&(Te||r!==we.compositionStart?r===we.compositionEnd&&Te&&(i=ie()):(oe="value"in(ne=o)?ne.value:ne.textContent,Te=!0)),r=pe.getPooled(r,t,n,o),i?r.data=i:null!==(i=xe(n))&&(r.data=i),q(r),i=r):i=null,(e=ve?function(e,t){switch(e){case"compositionend":return xe(t);case"keypress":return 32!==t.which?null:(Ee=!0,be);case"textInput":return(e=t.data)===be&&Ee?null:e;default:return null}}(e,n):function(e,t){if(Te)return"compositionend"===e||!me&&Ce(e,t)?(e=ie(),re=oe=ne=null,Te=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ye&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=he.getPooled(we.beforeInput,t,n,o)).data=e,q(t)):t=null,null===i?t:null===t?i:[i,t]}},Se=null,De=null,Me=null;function Re(e){if(e=C(e)){"function"!=typeof Se&&a("280");var t=E(e.stateNode);Se(e.stateNode,e.type,t)}}function Pe(e){De?Me?Me.push(e):Me=[e]:De=e}function _e(){if(De){var e=De,t=Me;if(Me=De=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Le(e,t){return e(t)}function Oe(e,t,n){return e(t,n)}function Ne(){}var Fe=!1;function Ae(e,t){if(Fe)return e(t);Fe=!0;try{return Le(e,t)}finally{Fe=!1,(null!==De||null!==Me)&&(Ne(),_e())}}var Ie={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function He(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Ie[e.type]:"textarea"===t}function ze(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function je(e){if(!V)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function Be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Ue(e){e._valueTracker||(e._valueTracker=function(e){var t=Be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){o=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(e){o=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function We(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Be(e)?e.checked?"true":"false":e.value),(e=o)!==n&&(t.setValue(e),!0)}var qe=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;qe.hasOwnProperty("ReactCurrentDispatcher")||(qe.ReactCurrentDispatcher={current:null});var Ve=/^(.*)[\\\/]/,Ge="function"==typeof Symbol&&Symbol.for,Ye=Ge?Symbol.for("react.element"):60103,$e=Ge?Symbol.for("react.portal"):60106,Xe=Ge?Symbol.for("react.fragment"):60107,Ke=Ge?Symbol.for("react.strict_mode"):60108,Qe=Ge?Symbol.for("react.profiler"):60114,Je=Ge?Symbol.for("react.provider"):60109,Ze=Ge?Symbol.for("react.context"):60110,et=Ge?Symbol.for("react.concurrent_mode"):60111,tt=Ge?Symbol.for("react.forward_ref"):60112,nt=Ge?Symbol.for("react.suspense"):60113,ot=Ge?Symbol.for("react.memo"):60115,rt=Ge?Symbol.for("react.lazy"):60116,it="function"==typeof Symbol&&Symbol.iterator;function at(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=it&&e[it]||e["@@iterator"])?e:null}function st(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case et:return"ConcurrentMode";case Xe:return"Fragment";case $e:return"Portal";case Qe:return"Profiler";case Ke:return"StrictMode";case nt:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case Ze:return"Context.Consumer";case Je:return"Context.Provider";case tt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case ot:return st(e.type);case rt:if(e=1===e._status?e._result:null)return st(e)}return null}function lt(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var o=e._debugOwner,r=e._debugSource,i=st(e.type);n=null,o&&(n=st(o.type)),o=i,i="",r?i=" (at "+r.fileName.replace(Ve,"")+":"+r.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(o||"Unknown")+i}t+=n,e=e.return}while(e);return t}var ut=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ct=Object.prototype.hasOwnProperty,dt={},pt={};function ht(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var ft={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ft[e]=new ht(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ft[t]=new ht(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ft[e]=new ht(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ft[e]=new ht(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ft[e]=new ht(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){ft[e]=new ht(e,3,!0,e,null)}),["capture","download"].forEach(function(e){ft[e]=new ht(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){ft[e]=new ht(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){ft[e]=new ht(e,5,!1,e.toLowerCase(),null)});var mt=/[\-:]([a-z])/g;function gt(e){return e[1].toUpperCase()}function vt(e,t,n,o){var r=ft.hasOwnProperty(t)?ft[t]:null;(null!==r?0===r.type:!o&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,o)&&(n=null),o||null===r?function(e){return!!ct.call(pt,e)||!ct.call(dt,e)&&(ut.test(e)?pt[e]=!0:(dt[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,o=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,o?e.setAttributeNS(o,t,n):e.setAttribute(t,n))))}function yt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function bt(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function wt(e,t){var n=null==t.defaultValue?"":t.defaultValue,o=null!=t.checked?t.checked:t.defaultChecked;n=yt(null!=t.value?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Et(e,t){null!=(t=t.checked)&&vt(e,"checked",t,!1)}function Ct(e,t){Et(e,t);var n=yt(t.value),o=t.type;if(null!=n)"number"===o?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===o||"reset"===o)return void e.removeAttribute("value");t.hasOwnProperty("value")?Tt(e,t.type,n):t.hasOwnProperty("defaultValue")&&Tt(e,t.type,yt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function xt(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!("submit"!==o&&"reset"!==o||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Tt(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){ft[e]=new ht(e,1,!1,e.toLowerCase(),null)});var kt={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function St(e,t,n){return(e=le.getPooled(kt.change,e,t,n)).type="change",Pe(n),q(e),e}var Dt=null,Mt=null;function Rt(e){_(e)}function Pt(e){if(We(I(e)))return e}function _t(e,t){if("change"===e)return t}var Lt=!1;function Ot(){Dt&&(Dt.detachEvent("onpropertychange",Nt),Mt=Dt=null)}function Nt(e){"value"===e.propertyName&&Pt(Mt)&&Ae(Rt,e=St(Mt,e,ze(e)))}function Ft(e,t,n){"focus"===e?(Ot(),Mt=n,(Dt=t).attachEvent("onpropertychange",Nt)):"blur"===e&&Ot()}function At(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pt(Mt)}function It(e,t){if("click"===e)return Pt(t)}function Ht(e,t){if("input"===e||"change"===e)return Pt(t)}V&&(Lt=je("input")&&(!document.documentMode||9<document.documentMode));var zt={eventTypes:kt,_isInputEventSupported:Lt,extractEvents:function(e,t,n,o){var r=t?I(t):window,i=void 0,a=void 0,s=r.nodeName&&r.nodeName.toLowerCase();if("select"===s||"input"===s&&"file"===r.type?i=_t:He(r)?Lt?i=Ht:(i=At,a=Ft):(s=r.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===r.type||"radio"===r.type)&&(i=It),i&&(i=i(e,t)))return St(i,n,o);a&&a(e,r,t),"blur"===e&&(e=r._wrapperState)&&e.controlled&&"number"===r.type&&Tt(r,"number",r.value)}},jt=le.extend({view:null,detail:null}),Bt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ut(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Bt[e])&&!!t[e]}function Wt(){return Ut}var qt=0,Vt=0,Gt=!1,Yt=!1,$t=jt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Wt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,Gt?"mousemove"===e.type?e.screenX-t:0:(Gt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Vt;return Vt=e.screenY,Yt?"mousemove"===e.type?e.screenY-t:0:(Yt=!0,0)}}),Xt=$t.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Kt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Qt={eventTypes:Kt,extractEvents:function(e,t,n,o){var r="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(r&&(n.relatedTarget||n.fromElement)||!i&&!r)return null;if(r=o.window===o?o:(r=o.ownerDocument)?r.defaultView||r.parentWindow:window,i?(i=t,t=(t=n.relatedTarget||n.toElement)?F(t):null):i=null,i===t)return null;var a=void 0,s=void 0,l=void 0,u=void 0;"mouseout"===e||"mouseover"===e?(a=$t,s=Kt.mouseLeave,l=Kt.mouseEnter,u="mouse"):"pointerout"!==e&&"pointerover"!==e||(a=Xt,s=Kt.pointerLeave,l=Kt.pointerEnter,u="pointer");var c=null==i?r:I(i);if(r=null==t?r:I(t),(e=a.getPooled(s,i,n,o)).type=u+"leave",e.target=c,e.relatedTarget=r,(n=a.getPooled(l,t,n,o)).type=u+"enter",n.target=r,n.relatedTarget=c,o=t,i&&o)e:{for(r=o,u=0,a=t=i;a;a=z(a))u++;for(a=0,l=r;l;l=z(l))a++;for(;0<u-a;)t=z(t),u--;for(;0<a-u;)r=z(r),a--;for(;u--;){if(t===r||t===r.alternate)break e;t=z(t),r=z(r)}t=null}else t=null;for(r=t,t=[];i&&i!==r&&(null===(u=i.alternate)||u!==r);)t.push(i),i=z(i);for(i=[];o&&o!==r&&(null===(u=o.alternate)||u!==r);)i.push(o),o=z(o);for(o=0;o<t.length;o++)U(t[o],"bubbled",e);for(o=i.length;0<o--;)U(i[o],"captured",n);return[e,n]}};function Jt(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var Zt=Object.prototype.hasOwnProperty;function en(e,t){if(Jt(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(o=0;o<n.length;o++)if(!Zt.call(t,n[o])||!Jt(e[n[o]],t[n[o]]))return!1;return!0}function tn(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function nn(e){2!==tn(e)&&a("188")}function on(e){if(!(e=function(e){var t=e.alternate;if(!t)return 3===(t=tn(e))&&a("188"),1===t?null:e;for(var n=e,o=t;;){var r=n.return,i=r?r.alternate:null;if(!r||!i)break;if(r.child===i.child){for(var s=r.child;s;){if(s===n)return nn(r),e;if(s===o)return nn(r),t;s=s.sibling}a("188")}if(n.return!==o.return)n=r,o=i;else{s=!1;for(var l=r.child;l;){if(l===n){s=!0,n=r,o=i;break}if(l===o){s=!0,o=r,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,o=r;break}if(l===o){s=!0,o=i,n=r;break}l=l.sibling}s||a("189")}}n.alternate!==o&&a("190")}return 3!==n.tag&&a("188"),n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var rn=le.extend({animationName:null,elapsedTime:null,pseudoElement:null}),an=le.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),sn=jt.extend({relatedTarget:null});function ln(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var un={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},cn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},dn=jt.extend({key:function(e){if(e.key){var t=un[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=ln(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?cn[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Wt,charCode:function(e){return"keypress"===e.type?ln(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?ln(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),pn=$t.extend({dataTransfer:null}),hn=jt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Wt}),fn=le.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),mn=$t.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),gn=[["abort","abort"],[Q,"animationEnd"],[J,"animationIteration"],[Z,"animationStart"],["canplay","canPlay"],["canplaythrough","canPlayThrough"],["drag","drag"],["dragenter","dragEnter"],["dragexit","dragExit"],["dragleave","dragLeave"],["dragover","dragOver"],["durationchange","durationChange"],["emptied","emptied"],["encrypted","encrypted"],["ended","ended"],["error","error"],["gotpointercapture","gotPointerCapture"],["load","load"],["loadeddata","loadedData"],["loadedmetadata","loadedMetadata"],["loadstart","loadStart"],["lostpointercapture","lostPointerCapture"],["mousemove","mouseMove"],["mouseout","mouseOut"],["mouseover","mouseOver"],["playing","playing"],["pointermove","pointerMove"],["pointerout","pointerOut"],["pointerover","pointerOver"],["progress","progress"],["scroll","scroll"],["seeking","seeking"],["stalled","stalled"],["suspend","suspend"],["timeupdate","timeUpdate"],["toggle","toggle"],["touchmove","touchMove"],[ee,"transitionEnd"],["waiting","waiting"],["wheel","wheel"]],vn={},yn={};function bn(e,t){var n=e[0],o="on"+((e=e[1])[0].toUpperCase()+e.slice(1));t={phasedRegistrationNames:{bubbled:o,captured:o+"Capture"},dependencies:[n],isInteractive:t},vn[e]=t,yn[n]=t}[["blur","blur"],["cancel","cancel"],["click","click"],["close","close"],["contextmenu","contextMenu"],["copy","copy"],["cut","cut"],["auxclick","auxClick"],["dblclick","doubleClick"],["dragend","dragEnd"],["dragstart","dragStart"],["drop","drop"],["focus","focus"],["input","input"],["invalid","invalid"],["keydown","keyDown"],["keypress","keyPress"],["keyup","keyUp"],["mousedown","mouseDown"],["mouseup","mouseUp"],["paste","paste"],["pause","pause"],["play","play"],["pointercancel","pointerCancel"],["pointerdown","pointerDown"],["pointerup","pointerUp"],["ratechange","rateChange"],["reset","reset"],["seeked","seeked"],["submit","submit"],["touchcancel","touchCancel"],["touchend","touchEnd"],["touchstart","touchStart"],["volumechange","volumeChange"]].forEach(function(e){bn(e,!0)}),gn.forEach(function(e){bn(e,!1)});var wn={eventTypes:vn,isInteractiveTopLevelEventType:function(e){return void 0!==(e=yn[e])&&!0===e.isInteractive},extractEvents:function(e,t,n,o){var r=yn[e];if(!r)return null;switch(e){case"keypress":if(0===ln(n))return null;case"keydown":case"keyup":e=dn;break;case"blur":case"focus":e=sn;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=$t;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=pn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=hn;break;case Q:case J:case Z:e=rn;break;case ee:e=fn;break;case"scroll":e=jt;break;case"wheel":e=mn;break;case"copy":case"cut":case"paste":e=an;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Xt;break;default:e=le}return q(t=e.getPooled(r,t,n,o)),t}},En=wn.isInteractiveTopLevelEventType,Cn=[];function xn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var o;for(o=n;o.return;)o=o.return;if(!(o=3!==o.tag?null:o.stateNode.containerInfo))break;e.ancestors.push(n),n=F(o)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var r=ze(e.nativeEvent);o=e.topLevelType;for(var i=e.nativeEvent,a=null,s=0;s<v.length;s++){var l=v[s];l&&(l=l.extractEvents(o,t,i,r))&&(a=k(a,l))}_(a)}}var Tn=!0;function kn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!1)}function Sn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!0)}function Dn(e,t){Oe(Mn,e,t)}function Mn(e,t){if(Tn){var n=ze(t);if(null===(n=F(n))||"number"!=typeof n.tag||2===tn(n)||(n=null),Cn.length){var o=Cn.pop();o.topLevelType=e,o.nativeEvent=t,o.targetInst=n,e=o}else e={topLevelType:e,nativeEvent:t,targetInst:n,ancestors:[]};try{Ae(xn,e)}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>Cn.length&&Cn.push(e)}}}var Rn={},Pn=0,_n="_reactListenersID"+(""+Math.random()).slice(2);function Ln(e){return Object.prototype.hasOwnProperty.call(e,_n)||(e[_n]=Pn++,Rn[e[_n]]={}),Rn[e[_n]]}function On(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Nn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Fn(e,t){var n,o=Nn(e);for(e=0;o;){if(3===o.nodeType){if(n=e+o.textContent.length,e<=t&&n>=t)return{node:o,offset:t-e};e=n}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Nn(o)}}function An(){for(var e=window,t=On();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=On((e=t.contentWindow).document)}return t}function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function Hn(e){var t=An(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(n.ownerDocument.documentElement,n)){if(null!==o&&In(n))if(t=o.start,void 0===(e=o.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var r=n.textContent.length,i=Math.min(o.start,r);o=void 0===o.end?i:Math.min(o.end,r),!e.extend&&i>o&&(r=o,o=i,i=r),r=Fn(n,i);var a=Fn(n,o);r&&a&&(1!==e.rangeCount||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(r.node,r.offset),e.removeAllRanges(),i>o?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var zn=V&&"documentMode"in document&&11>=document.documentMode,jn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Bn=null,Un=null,Wn=null,qn=!1;function Vn(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qn||null==Bn||Bn!==On(n)?null:("selectionStart"in(n=Bn)&&In(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Wn&&en(Wn,n)?null:(Wn=n,(e=le.getPooled(jn.select,Un,e,t)).type="select",e.target=Bn,q(e),e))}var Gn={eventTypes:jn,extractEvents:function(e,t,n,o){var r,i=o.window===o?o.document:9===o.nodeType?o:o.ownerDocument;if(!(r=!i)){e:{i=Ln(i),r=w.onSelect;for(var a=0;a<r.length;a++){var s=r[a];if(!i.hasOwnProperty(s)||!i[s]){i=!1;break e}}i=!0}r=!i}if(r)return null;switch(i=t?I(t):window,e){case"focus":(He(i)||"true"===i.contentEditable)&&(Bn=i,Un=t,Wn=null);break;case"blur":Wn=Un=Bn=null;break;case"mousedown":qn=!0;break;case"contextmenu":case"mouseup":case"dragend":return qn=!1,Vn(n,o);case"selectionchange":if(zn)break;case"keydown":case"keyup":return Vn(n,o)}return null}};function Yn(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return o.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(t.children))&&(e.children=t),e}function $n(e,t,n,o){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&o&&(e[n].defaultSelected=!0)}else{for(n=""+yt(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(o&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function Xn(e,t){return null!=t.dangerouslySetInnerHTML&&a("91"),r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Kn(e,t){var n=t.value;null==n&&(n=t.defaultValue,null!=(t=t.children)&&(null!=n&&a("92"),Array.isArray(t)&&(1>=t.length||a("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:yt(n)}}function Qn(e,t){var n=yt(t.value),o=yt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=o&&(e.defaultValue=""+o)}function Jn(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}R.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),E=H,C=A,x=I,R.injectEventPluginsByName({SimpleEventPlugin:wn,EnterLeaveEventPlugin:Qt,ChangeEventPlugin:zt,SelectEventPlugin:Gn,BeforeInputEventPlugin:ke});var Zn={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function eo(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function to(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?eo(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var no=void 0,oo=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==Zn.svg||"innerHTML"in e)e.innerHTML=t;else{for((no=no||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=no.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ro(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var io={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ao=["Webkit","ms","Moz","O"];function so(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||io.hasOwnProperty(e)&&io[e]?(""+t).trim():t+"px"}function lo(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var o=0===n.indexOf("--"),r=so(n,t[n],o);"float"===n&&(n="cssFloat"),o?e.setProperty(n,r):e[n]=r}}Object.keys(io).forEach(function(e){ao.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),io[t]=io[e]})});var uo=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function co(e,t){t&&(uo[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&a("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&a("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||a("61")),null!=t.style&&"object"!=typeof t.style&&a("62",""))}function po(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function ho(e,t){var n=Ln(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=w[t];for(var o=0;o<t.length;o++){var r=t[o];if(!n.hasOwnProperty(r)||!n[r]){switch(r){case"scroll":Sn("scroll",e);break;case"focus":case"blur":Sn("focus",e),Sn("blur",e),n.blur=!0,n.focus=!0;break;case"cancel":case"close":je(r)&&Sn(r,e);break;case"invalid":case"submit":case"reset":break;default:-1===te.indexOf(r)&&kn(r,e)}n[r]=!0}}}function fo(){}var mo=null,go=null;function vo(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function yo(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var bo="function"==typeof setTimeout?setTimeout:void 0,wo="function"==typeof clearTimeout?clearTimeout:void 0,Eo=i.unstable_scheduleCallback,Co=i.unstable_cancelCallback;function xo(e){for(e=e.nextSibling;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}function To(e){for(e=e.firstChild;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}new Set;var ko=[],So=-1;function Do(e){0>So||(e.current=ko[So],ko[So]=null,So--)}function Mo(e,t){ko[++So]=e.current,e.current=t}var Ro={},Po={current:Ro},_o={current:!1},Lo=Ro;function Oo(e,t){var n=e.type.contextTypes;if(!n)return Ro;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var r,i={};for(r in n)i[r]=t[r];return o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function No(e){return null!=(e=e.childContextTypes)}function Fo(e){Do(_o),Do(Po)}function Ao(e){Do(_o),Do(Po)}function Io(e,t,n){Po.current!==Ro&&a("168"),Mo(Po,t),Mo(_o,n)}function Ho(e,t,n){var o=e.stateNode;if(e=t.childContextTypes,"function"!=typeof o.getChildContext)return n;for(var i in o=o.getChildContext())i in e||a("108",st(t)||"Unknown",i);return r({},n,o)}function zo(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ro,Lo=Po.current,Mo(Po,t),Mo(_o,_o.current),!0}function jo(e,t,n){var o=e.stateNode;o||a("169"),n?(t=Ho(e,t,Lo),o.__reactInternalMemoizedMergedChildContext=t,Do(_o),Do(Po),Mo(Po,t)):Do(_o),Mo(_o,n)}var Bo=null,Uo=null;function Wo(e){return function(t){try{return e(t)}catch(e){}}}function qo(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Vo(e,t,n,o){return new qo(e,t,n,o)}function Go(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Yo(e,t){var n=e.alternate;return null===n?((n=Vo(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.contextDependencies=e.contextDependencies,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $o(e,t,n,o,r,i){var s=2;if(o=e,"function"==typeof e)Go(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case Xe:return Xo(n.children,r,i,t);case et:return Ko(n,3|r,i,t);case Ke:return Ko(n,2|r,i,t);case Qe:return(e=Vo(12,n,t,4|r)).elementType=Qe,e.type=Qe,e.expirationTime=i,e;case nt:return(e=Vo(13,n,t,r)).elementType=nt,e.type=nt,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case Je:s=10;break e;case Ze:s=9;break e;case tt:s=11;break e;case ot:s=14;break e;case rt:s=16,o=null;break e}a("130",null==e?e:typeof e,"")}return(t=Vo(s,n,t,r)).elementType=e,t.type=o,t.expirationTime=i,t}function Xo(e,t,n,o){return(e=Vo(7,e,o,t)).expirationTime=n,e}function Ko(e,t,n,o){return e=Vo(8,e,o,t),t=0==(1&t)?Ke:et,e.elementType=t,e.type=t,e.expirationTime=n,e}function Qo(e,t,n){return(e=Vo(6,e,null,t)).expirationTime=n,e}function Jo(e,t,n){return(t=Vo(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zo(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:n<t?e.earliestPendingTime=t:e.latestPendingTime>t&&(e.latestPendingTime=t),nr(t,e)}function er(e,t){e.didError=!1,e.latestPingedTime>=t&&(e.latestPingedTime=0);var n=e.earliestPendingTime,o=e.latestPendingTime;n===t?e.earliestPendingTime=o===t?e.latestPendingTime=0:o:o===t&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,o=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=t:n<t?e.earliestSuspendedTime=t:o>t&&(e.latestSuspendedTime=t),nr(t,e)}function tr(e,t){var n=e.earliestPendingTime;return n>t&&(t=n),(e=e.earliestSuspendedTime)>t&&(t=e),t}function nr(e,t){var n=t.earliestSuspendedTime,o=t.latestSuspendedTime,r=t.earliestPendingTime,i=t.latestPingedTime;0===(r=0!==r?r:i)&&(0===e||o<e)&&(r=o),0!==(e=r)&&n>e&&(e=n),t.nextExpirationTimeToWorkOn=r,t.expirationTime=e}function or(e,t){if(e&&e.defaultProps)for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var rr=(new o.Component).refs;function ir(e,t,n,o){n=null==(n=n(o,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,null!==(o=e.updateQueue)&&0===e.expirationTime&&(o.baseState=n)}var ar={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===tn(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.tag=Wi,r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Es(),o=Xi(n=$a(n,e));o.tag=qi,null!=t&&(o.callback=t),Ua(),Qi(e,o),Qa(e,n)}};function sr(e,t,n,o,r,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(o,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!en(n,o)||!en(r,i))}function lr(e,t,n){var o=!1,r=Ro,i=t.contextType;return"object"==typeof i&&null!==i?i=Bi(i):(r=No(t)?Lo:Po.current,i=(o=null!=(o=t.contextTypes))?Oo(e,r):Ro),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ar,e.stateNode=t,t._reactInternalFiber=e,o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=i),t}function ur(e,t,n,o){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,o),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,o),t.state!==e&&ar.enqueueReplaceState(t,t.state,null)}function cr(e,t,n,o){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=rr;var i=t.contextType;"object"==typeof i&&null!==i?r.context=Bi(i):(i=No(t)?Lo:Po.current,r.context=Oo(e,i)),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState),"function"==typeof(i=t.getDerivedStateFromProps)&&(ir(e,t,i,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&ar.enqueueReplaceState(r,r.state,null),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState)),"function"==typeof r.componentDidMount&&(e.effectTag|=4)}var dr=Array.isArray;function pr(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var o=void 0;n&&(1!==n.tag&&a("309"),o=n.stateNode),o||a("147",e);var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:((t=function(e){var t=o.refs;t===rr&&(t=o.refs={}),null===e?delete t[r]:t[r]=e})._stringRef=r,t)}"string"!=typeof e&&a("284"),n._owner||a("290",e)}return e}function hr(e,t){"textarea"!==e.type&&a("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function fr(e){function t(t,n){if(e){var o=t.lastEffect;null!==o?(o.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,o){if(!e)return null;for(;null!==o;)t(n,o),o=o.sibling;return null}function o(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t,n){return(e=Yo(e,t)).index=0,e.sibling=null,e}function i(t,n,o){return t.index=o,e?null!==(o=t.alternate)?(o=o.index)<n?(t.effectTag=2,n):o:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,o){return null===t||6!==t.tag?((t=Qo(n,e.mode,o)).return=e,t):((t=r(t,n)).return=e,t)}function u(e,t,n,o){return null!==t&&t.elementType===n.type?((o=r(t,n.props)).ref=pr(e,t,n),o.return=e,o):((o=$o(n.type,n.key,n.props,null,e.mode,o)).ref=pr(e,t,n),o.return=e,o)}function c(e,t,n,o){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Jo(n,e.mode,o)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function d(e,t,n,o,i){return null===t||7!==t.tag?((t=Xo(n,e.mode,o,i)).return=e,t):((t=r(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Qo(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Ye:return(n=$o(t.type,t.key,t.props,null,e.mode,n)).ref=pr(e,null,t),n.return=e,n;case $e:return(t=Jo(t,e.mode,n)).return=e,t}if(dr(t)||at(t))return(t=Xo(t,e.mode,n,null)).return=e,t;hr(e,t)}return null}function h(e,t,n,o){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:l(e,t,""+n,o);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Ye:return n.key===r?n.type===Xe?d(e,t,n.props.children,o,r):u(e,t,n,o):null;case $e:return n.key===r?c(e,t,n,o):null}if(dr(n)||at(n))return null!==r?null:d(e,t,n,o,null);hr(e,n)}return null}function f(e,t,n,o,r){if("string"==typeof o||"number"==typeof o)return l(t,e=e.get(n)||null,""+o,r);if("object"==typeof o&&null!==o){switch(o.$$typeof){case Ye:return e=e.get(null===o.key?n:o.key)||null,o.type===Xe?d(t,e,o.props.children,r,o.key):u(t,e,o,r);case $e:return c(t,e=e.get(null===o.key?n:o.key)||null,o,r)}if(dr(o)||at(o))return d(t,e=e.get(n)||null,o,r,null);hr(t,o)}return null}function m(r,a,s,l){for(var u=null,c=null,d=a,m=a=0,g=null;null!==d&&m<s.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=h(r,d,s[m],l);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(r,d),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===s.length)return n(r,d),u;if(null===d){for(;m<s.length;m++)(d=p(r,s[m],l))&&(a=i(d,a,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=o(r,d);m<s.length;m++)(g=f(d,r,m,s[m],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach(function(e){return t(r,e)}),u}function g(r,s,l,u){var c=at(l);"function"!=typeof c&&a("150"),null==(l=c.call(l))&&a("151");for(var d=c=null,m=s,g=s=0,v=null,y=l.next();null!==m&&!y.done;g++,y=l.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=h(r,m,y.value,u);if(null===b){m||(m=v);break}e&&m&&null===b.alternate&&t(r,m),s=i(b,s,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(r,m),c;if(null===m){for(;!y.done;g++,y=l.next())null!==(y=p(r,y.value,u))&&(s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return c}for(m=o(r,m);!y.done;g++,y=l.next())null!==(y=f(m,r,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach(function(e){return t(r,e)}),c}return function(e,o,i,l){var u="object"==typeof i&&null!==i&&i.type===Xe&&null===i.key;u&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case Ye:e:{for(c=i.key,u=o;null!==u;){if(u.key===c){if(7===u.tag?i.type===Xe:u.elementType===i.type){n(e,u.sibling),(o=r(u,i.type===Xe?i.props.children:i.props)).ref=pr(e,u,i),o.return=e,e=o;break e}n(e,u);break}t(e,u),u=u.sibling}i.type===Xe?((o=Xo(i.props.children,e.mode,l,i.key)).return=e,e=o):((l=$o(i.type,i.key,i.props,null,e.mode,l)).ref=pr(e,o,i),l.return=e,e=l)}return s(e);case $e:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(e,o.sibling),(o=r(o,i.children||[])).return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}(o=Jo(i,e.mode,l)).return=e,e=o}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==o&&6===o.tag?(n(e,o.sibling),(o=r(o,i)).return=e,e=o):(n(e,o),(o=Qo(i,e.mode,l)).return=e,e=o),s(e);if(dr(i))return m(e,o,i,l);if(at(i))return g(e,o,i,l);if(c&&hr(e,i),void 0===i&&!u)switch(e.tag){case 1:case 0:a("152",(l=e.type).displayName||l.name||"Component")}return n(e,o)}}var mr=fr(!0),gr=fr(!1),vr={},yr={current:vr},br={current:vr},wr={current:vr};function Er(e){return e===vr&&a("174"),e}function Cr(e,t){Mo(wr,t),Mo(br,e),Mo(yr,vr);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:to(null,"");break;default:t=to(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Do(yr),Mo(yr,t)}function xr(e){Do(yr),Do(br),Do(wr)}function Tr(e){Er(wr.current);var t=Er(yr.current),n=to(t,e.type);t!==n&&(Mo(br,e),Mo(yr,n))}function kr(e){br.current===e&&(Do(yr),Do(br))}var Sr=0,Dr=2,Mr=4,Rr=8,Pr=16,_r=32,Lr=64,Or=128,Nr=qe.ReactCurrentDispatcher,Fr=0,Ar=null,Ir=null,Hr=null,zr=null,jr=null,Br=null,Ur=0,Wr=null,qr=0,Vr=!1,Gr=null,Yr=0;function $r(){a("321")}function Xr(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Jt(e[n],t[n]))return!1;return!0}function Kr(e,t,n,o,r,i){if(Fr=i,Ar=t,Hr=null!==e?e.memoizedState:null,Nr.current=null===Hr?ui:ci,t=n(o,r),Vr){do{Vr=!1,Yr+=1,Hr=null!==e?e.memoizedState:null,Br=zr,Wr=jr=Ir=null,Nr.current=ci,t=n(o,r)}while(Vr);Gr=null,Yr=0}return Nr.current=li,(e=Ar).memoizedState=zr,e.expirationTime=Ur,e.updateQueue=Wr,e.effectTag|=qr,e=null!==Ir&&null!==Ir.next,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,e&&a("300"),t}function Qr(){Nr.current=li,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,Vr=!1,Gr=null,Yr=0}function Jr(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===jr?zr=jr=e:jr=jr.next=e,jr}function Zr(){if(null!==Br)Br=(jr=Br).next,Hr=null!==(Ir=Hr)?Ir.next:null;else{null===Hr&&a("310");var e={memoizedState:(Ir=Hr).memoizedState,baseState:Ir.baseState,queue:Ir.queue,baseUpdate:Ir.baseUpdate,next:null};jr=null===jr?zr=e:jr.next=e,Hr=Ir.next}return jr}function ei(e,t){return"function"==typeof t?t(e):t}function ti(e){var t=Zr(),n=t.queue;if(null===n&&a("311"),n.lastRenderedReducer=e,0<Yr){var o=n.dispatch;if(null!==Gr){var r=Gr.get(n);if(void 0!==r){Gr.delete(n);var i=t.memoizedState;do{i=e(i,r.action),r=r.next}while(null!==r);return Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate===n.last&&(t.baseState=i),n.lastRenderedState=i,[i,o]}}return[t.memoizedState,o]}o=n.last;var s=t.baseUpdate;if(i=t.baseState,null!==s?(null!==o&&(o.next=null),o=s.next):o=null!==o?o.next:null,null!==o){var l=r=null,u=o,c=!1;do{var d=u.expirationTime;d<Fr?(c||(c=!0,l=s,r=i),d>Ur&&(Ur=d)):i=u.eagerReducer===e?u.eagerState:e(i,u.action),s=u,u=u.next}while(null!==u&&u!==o);c||(l=s,r=i),Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate=l,t.baseState=r,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function ni(e,t,n,o){return e={tag:e,create:t,destroy:n,deps:o,next:null},null===Wr?(Wr={lastEffect:null}).lastEffect=e.next=e:null===(t=Wr.lastEffect)?Wr.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Wr.lastEffect=e),e}function oi(e,t,n,o){var r=Jr();qr|=e,r.memoizedState=ni(t,n,void 0,void 0===o?null:o)}function ri(e,t,n,o){var r=Zr();o=void 0===o?null:o;var i=void 0;if(null!==Ir){var a=Ir.memoizedState;if(i=a.destroy,null!==o&&Xr(o,a.deps))return void ni(Sr,n,i,o)}qr|=e,r.memoizedState=ni(t,n,i,o)}function ii(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ai(){}function si(e,t,n){25>Yr||a("301");var o=e.alternate;if(e===Ar||null!==o&&o===Ar)if(Vr=!0,e={expirationTime:Fr,action:n,eagerReducer:null,eagerState:null,next:null},null===Gr&&(Gr=new Map),void 0===(n=Gr.get(t)))Gr.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{Ua();var r=Es(),i={expirationTime:r=$a(r,e),action:n,eagerReducer:null,eagerState:null,next:null},s=t.last;if(null===s)i.next=i;else{var l=s.next;null!==l&&(i.next=l),s.next=i}if(t.last=i,0===e.expirationTime&&(null===o||0===o.expirationTime)&&null!==(o=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=o(u,n);if(i.eagerReducer=o,i.eagerState=c,Jt(c,u))return}catch(e){}Qa(e,r)}}var li={readContext:Bi,useCallback:$r,useContext:$r,useEffect:$r,useImperativeHandle:$r,useLayoutEffect:$r,useMemo:$r,useReducer:$r,useRef:$r,useState:$r,useDebugValue:$r},ui={readContext:Bi,useCallback:function(e,t){return Jr().memoizedState=[e,void 0===t?null:t],e},useContext:Bi,useEffect:function(e,t){return oi(516,Or|Lr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,oi(4,Mr|_r,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return oi(4,Mr|_r,e,t)},useMemo:function(e,t){var n=Jr();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=Jr();return t=void 0!==n?n(t):t,o.memoizedState=o.baseState=t,e=(e=o.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=si.bind(null,Ar,e),[o.memoizedState,e]},useRef:function(e){return e={current:e},Jr().memoizedState=e},useState:function(e){var t=Jr();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ei,lastRenderedState:e}).dispatch=si.bind(null,Ar,e),[t.memoizedState,e]},useDebugValue:ai},ci={readContext:Bi,useCallback:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(n.memoizedState=[e,t],e)},useContext:Bi,useEffect:function(e,t){return ri(516,Or|Lr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,Mr|_r,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ri(4,Mr|_r,e,t)},useMemo:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ti,useRef:function(){return Zr().memoizedState},useState:function(e){return ti(ei)},useDebugValue:ai},di=null,pi=null,hi=!1;function fi(e,t){var n=Vo(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function mi(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function gi(e){if(hi){var t=pi;if(t){var n=t;if(!mi(e,t)){if(!(t=xo(n))||!mi(e,t))return e.effectTag|=2,hi=!1,void(di=e);fi(di,n)}di=e,pi=To(t)}else e.effectTag|=2,hi=!1,di=e}}function vi(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;di=e}function yi(e){if(e!==di)return!1;if(!hi)return vi(e),hi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!yo(t,e.memoizedProps))for(t=pi;t;)fi(e,t),t=xo(t);return vi(e),pi=di?xo(e.stateNode):null,!0}function bi(){pi=di=null,hi=!1}var wi=qe.ReactCurrentOwner,Ei=!1;function Ci(e,t,n,o){t.child=null===e?gr(t,null,n,o):mr(t,e.child,n,o)}function xi(e,t,n,o,r){n=n.render;var i=t.ref;return ji(t,r),o=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,o,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Li(e,t,r))}function Ti(e,t,n,o,r,i){if(null===e){var a=n.type;return"function"!=typeof a||Go(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=$o(n.type,null,o,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ki(e,t,a,o,r,i))}return a=e.child,r<i&&(r=a.memoizedProps,(n=null!==(n=n.compare)?n:en)(r,o)&&e.ref===t.ref)?Li(e,t,i):(t.effectTag|=1,(e=Yo(a,o)).ref=t.ref,e.return=t,t.child=e)}function ki(e,t,n,o,r,i){return null!==e&&en(e.memoizedProps,o)&&e.ref===t.ref&&(Ei=!1,r<i)?Li(e,t,i):Di(e,t,n,o,i)}function Si(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Di(e,t,n,o,r){var i=No(n)?Lo:Po.current;return i=Oo(t,i),ji(t,r),n=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Li(e,t,r))}function Mi(e,t,n,o,r){if(No(n)){var i=!0;zo(t)}else i=!1;if(ji(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),lr(t,n,o),cr(t,n,o,r),o=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,u=n.contextType;"object"==typeof u&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Lo:Po.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate;d||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Gi=!1;var p=t.memoizedState;l=a.state=p;var h=t.updateQueue;null!==h&&(ta(t,h,o,a,r),l=t.memoizedState),s!==o||p!==l||_o.current||Gi?("function"==typeof c&&(ir(t,n,c,o),l=t.memoizedState),(s=Gi||sr(t,n,s,o,p,l,u))?(d||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=o,t.memoizedState=l),a.props=o,a.state=l,a.context=u,o=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),o=!1)}else a=t.stateNode,s=t.memoizedProps,a.props=t.type===t.elementType?s:or(t.type,s),l=a.context,"object"==typeof(u=n.contextType)&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Lo:Po.current),(d="function"==typeof(c=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Gi=!1,l=t.memoizedState,p=a.state=l,null!==(h=t.updateQueue)&&(ta(t,h,o,a,r),p=t.memoizedState),s!==o||l!==p||_o.current||Gi?("function"==typeof c&&(ir(t,n,c,o),p=t.memoizedState),(c=Gi||sr(t,n,s,o,l,p,u))?(d||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(o,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(o,p,u)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=o,t.memoizedState=p),a.props=o,a.state=p,a.context=u,o=c):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),o=!1);return Ri(e,t,n,o,i,r)}function Ri(e,t,n,o,r,i){Si(e,t);var a=0!=(64&t.effectTag);if(!o&&!a)return r&&jo(t,n,!1),Li(e,t,i);o=t.stateNode,wi.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:o.render();return t.effectTag|=1,null!==e&&a?(t.child=mr(t,e.child,null,i),t.child=mr(t,null,s,i)):Ci(e,t,s,i),t.memoizedState=o.state,r&&jo(t,n,!0),t.child}function Pi(e){var t=e.stateNode;t.pendingContext?Io(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Io(0,t.context,!1),Cr(e,t.containerInfo)}function _i(e,t,n){var o=t.mode,r=t.pendingProps,i=t.memoizedState;if(0==(64&t.effectTag)){i=null;var a=!1}else i={timedOutAt:null!==i?i.timedOutAt:0},a=!0,t.effectTag&=-65;if(null===e)if(a){var s=r.fallback;e=Xo(null,o,0,null),0==(1&t.mode)&&(e.child=null!==t.memoizedState?t.child.child:t.child),o=Xo(s,o,n,null),e.sibling=o,(n=e).return=o.return=t}else n=o=gr(t,null,r.children,n);else null!==e.memoizedState?(s=(o=e.child).sibling,a?(n=r.fallback,r=Yo(o,o.pendingProps),0==(1&t.mode)&&((a=null!==t.memoizedState?t.child.child:t.child)!==o.child&&(r.child=a)),o=r.sibling=Yo(s,n,s.expirationTime),n=r,r.childExpirationTime=0,n.return=o.return=t):n=o=mr(t,o.child,r.children,n)):(s=e.child,a?(a=r.fallback,(r=Xo(null,o,0,null)).child=s,0==(1&t.mode)&&(r.child=null!==t.memoizedState?t.child.child:t.child),(o=r.sibling=Xo(a,o,n,null)).effectTag|=2,n=r,r.childExpirationTime=0,n.return=o.return=t):o=n=mr(t,s,r.children,n)),t.stateNode=e.stateNode;return t.memoizedState=i,t.child=n,o}function Li(e,t,n){if(null!==e&&(t.contextDependencies=e.contextDependencies),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child&&a("153"),null!==t.child){for(n=Yo(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Yo(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function Oi(e,t,n){var o=t.expirationTime;if(null!==e){if(e.memoizedProps!==t.pendingProps||_o.current)Ei=!0;else if(o<n){switch(Ei=!1,t.tag){case 3:Pi(t),bi();break;case 5:Tr(t);break;case 1:No(t.type)&&zo(t);break;case 4:Cr(t,t.stateNode.containerInfo);break;case 10:Hi(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(o=t.child.childExpirationTime)&&o>=n?_i(e,t,n):null!==(t=Li(e,t,n))?t.sibling:null}return Li(e,t,n)}}else Ei=!1;switch(t.expirationTime=0,t.tag){case 2:o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps;var r=Oo(t,Po.current);if(ji(t,n),r=Kr(null,t,o,e,r,n),t.effectTag|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,Qr(),No(o)){var i=!0;zo(t)}else i=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null;var s=o.getDerivedStateFromProps;"function"==typeof s&&ir(t,o,s,e),r.updater=ar,t.stateNode=r,r._reactInternalFiber=t,cr(t,o,e,n),t=Ri(null,t,o,!0,i,n)}else t.tag=0,Ci(null,t,r,n),t=t.child;return t;case 16:switch(r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),i=t.pendingProps,e=function(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then(function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)},function(t){0===e._status&&(e._status=2,e._result=t)}),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}(r),t.type=e,r=t.tag=function(e){if("function"==typeof e)return Go(e)?1:0;if(null!=e){if((e=e.$$typeof)===tt)return 11;if(e===ot)return 14}return 2}(e),i=or(e,i),s=void 0,r){case 0:s=Di(null,t,e,i,n);break;case 1:s=Mi(null,t,e,i,n);break;case 11:s=xi(null,t,e,i,n);break;case 14:s=Ti(null,t,e,or(e.type,i),o,n);break;default:a("306",e,"")}return s;case 0:return o=t.type,r=t.pendingProps,Di(e,t,o,r=t.elementType===o?r:or(o,r),n);case 1:return o=t.type,r=t.pendingProps,Mi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 3:return Pi(t),null===(o=t.updateQueue)&&a("282"),r=null!==(r=t.memoizedState)?r.element:null,ta(t,o,t.pendingProps,null,n),(o=t.memoizedState.element)===r?(bi(),t=Li(e,t,n)):(r=t.stateNode,(r=(null===e||null===e.child)&&r.hydrate)&&(pi=To(t.stateNode.containerInfo),di=t,r=hi=!0),r?(t.effectTag|=2,t.child=gr(t,null,o,n)):(Ci(e,t,o,n),bi()),t=t.child),t;case 5:return Tr(t),null===e&&gi(t),o=t.type,r=t.pendingProps,i=null!==e?e.memoizedProps:null,s=r.children,yo(o,r)?s=null:null!==i&&yo(o,i)&&(t.effectTag|=16),Si(e,t),1!==n&&1&t.mode&&r.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ci(e,t,s,n),t=t.child),t;case 6:return null===e&&gi(t),null;case 13:return _i(e,t,n);case 4:return Cr(t,t.stateNode.containerInfo),o=t.pendingProps,null===e?t.child=mr(t,null,o,n):Ci(e,t,o,n),t.child;case 11:return o=t.type,r=t.pendingProps,xi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 7:return Ci(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ci(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,r=t.pendingProps,s=t.memoizedProps,Hi(t,i=r.value),null!==s){var l=s.value;if(0===(i=Jt(l,i)?0:0|("function"==typeof o._calculateChangedBits?o._calculateChangedBits(l,i):1073741823))){if(s.children===r.children&&!_o.current){t=Li(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.contextDependencies;if(null!==u){s=l.child;for(var c=u.first;null!==c;){if(c.context===o&&0!=(c.observedBits&i)){1===l.tag&&((c=Xi(n)).tag=qi,Qi(l,c)),l.expirationTime<n&&(l.expirationTime=n),null!==(c=l.alternate)&&c.expirationTime<n&&(c.expirationTime=n),c=n;for(var d=l.return;null!==d;){var p=d.alternate;if(d.childExpirationTime<c)d.childExpirationTime=c,null!==p&&p.childExpirationTime<c&&(p.childExpirationTime=c);else{if(!(null!==p&&p.childExpirationTime<c))break;p.childExpirationTime=c}d=d.return}u.expirationTime<n&&(u.expirationTime=n);break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}}Ci(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,o=(i=t.pendingProps).children,ji(t,n),o=o(r=Bi(r,i.unstable_observedBits)),t.effectTag|=1,Ci(e,t,o,n),t.child;case 14:return i=or(r=t.type,t.pendingProps),Ti(e,t,r,i=or(r.type,i),o,n);case 15:return ki(e,t,t.type,t.pendingProps,o,n);case 17:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:or(o,r),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,No(o)?(e=!0,zo(t)):e=!1,ji(t,n),lr(t,o,r),cr(t,o,r,n),Ri(null,t,o,!0,e,n)}a("156")}var Ni={current:null},Fi=null,Ai=null,Ii=null;function Hi(e,t){var n=e.type._context;Mo(Ni,n._currentValue),n._currentValue=t}function zi(e){var t=Ni.current;Do(Ni),e.type._context._currentValue=t}function ji(e,t){Fi=e,Ii=Ai=null;var n=e.contextDependencies;null!==n&&n.expirationTime>=t&&(Ei=!0),e.contextDependencies=null}function Bi(e,t){return Ii!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(Ii=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ai?(null===Fi&&a("308"),Ai=t,Fi.contextDependencies={first:t,expirationTime:0}):Ai=Ai.next=t),e._currentValue}var Ui=0,Wi=1,qi=2,Vi=3,Gi=!1;function Yi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function $i(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Xi(e){return{expirationTime:e,tag:Ui,payload:null,callback:null,next:null,nextEffect:null}}function Ki(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Qi(e,t){var n=e.alternate;if(null===n){var o=e.updateQueue,r=null;null===o&&(o=e.updateQueue=Yi(e.memoizedState))}else o=e.updateQueue,r=n.updateQueue,null===o?null===r?(o=e.updateQueue=Yi(e.memoizedState),r=n.updateQueue=Yi(n.memoizedState)):o=e.updateQueue=$i(r):null===r&&(r=n.updateQueue=$i(o));null===r||o===r?Ki(o,t):null===o.lastUpdate||null===r.lastUpdate?(Ki(o,t),Ki(r,t)):(Ki(o,t),r.lastUpdate=t)}function Ji(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Yi(e.memoizedState):Zi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Zi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=$i(t)),t}function ea(e,t,n,o,i,a){switch(n.tag){case Wi:return"function"==typeof(e=n.payload)?e.call(a,o,i):e;case Vi:e.effectTag=-2049&e.effectTag|64;case Ui:if(null==(i="function"==typeof(e=n.payload)?e.call(a,o,i):e))break;return r({},o,i);case qi:Gi=!0}return o}function ta(e,t,n,o,r){Gi=!1;for(var i=(t=Zi(e,t)).baseState,a=null,s=0,l=t.firstUpdate,u=i;null!==l;){var c=l.expirationTime;c<r?(null===a&&(a=l,i=u),s<c&&(s=c)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=l:(t.lastEffect.nextEffect=l,t.lastEffect=l))),l=l.next}for(c=null,l=t.firstCapturedUpdate;null!==l;){var d=l.expirationTime;d<r?(null===c&&(c=l,null===a&&(i=u)),s<d&&(s=d)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=l:(t.lastCapturedEffect.nextEffect=l,t.lastCapturedEffect=l))),l=l.next}null===a&&(t.lastUpdate=null),null===c?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===c&&(i=u),t.baseState=i,t.firstUpdate=a,t.firstCapturedUpdate=c,e.expirationTime=s,e.memoizedState=u}function na(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),oa(t.firstEffect,n),t.firstEffect=t.lastEffect=null,oa(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function oa(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var o=t;"function"!=typeof n&&a("191",n),n.call(o)}e=e.nextEffect}}function ra(e,t){return{value:e,source:t,stack:lt(t)}}function ia(e){e.effectTag|=4}var aa=void 0,sa=void 0,la=void 0,ua=void 0;aa=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},sa=function(){},la=function(e,t,n,o,i){var a=e.memoizedProps;if(a!==o){var s=t.stateNode;switch(Er(yr.current),e=null,n){case"input":a=bt(s,a),o=bt(s,o),e=[];break;case"option":a=Yn(s,a),o=Yn(s,o),e=[];break;case"select":a=r({},a,{value:void 0}),o=r({},o,{value:void 0}),e=[];break;case"textarea":a=Xn(s,a),o=Xn(s,o),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof o.onClick&&(s.onclick=fo)}co(n,o),s=n=void 0;var l=null;for(n in a)if(!o.hasOwnProperty(n)&&a.hasOwnProperty(n)&&null!=a[n])if("style"===n){var u=a[n];for(s in u)u.hasOwnProperty(s)&&(l||(l={}),l[s]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(b.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in o){var c=o[n];if(u=null!=a?a[n]:void 0,o.hasOwnProperty(n)&&c!==u&&(null!=c||null!=u))if("style"===n)if(u){for(s in u)!u.hasOwnProperty(s)||c&&c.hasOwnProperty(s)||(l||(l={}),l[s]="");for(s in c)c.hasOwnProperty(s)&&u[s]!==c[s]&&(l||(l={}),l[s]=c[s])}else l||(e||(e=[]),e.push(n,l)),l=c;else"dangerouslySetInnerHTML"===n?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(e=e||[]).push(n,""+c)):"children"===n?u===c||"string"!=typeof c&&"number"!=typeof c||(e=e||[]).push(n,""+c):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(b.hasOwnProperty(n)?(null!=c&&ho(i,n),e||u===c||(e=[])):(e=e||[]).push(n,c))}l&&(e=e||[]).push("style",l),i=e,(t.updateQueue=i)&&ia(t)}},ua=function(e,t,n,o){n!==o&&ia(t)};var ca="function"==typeof WeakSet?WeakSet:Set;function da(e,t){var n=t.source,o=t.stack;null===o&&null!==n&&(o=lt(n)),null!==n&&st(n.type),t=t.value,null!==e&&1===e.tag&&st(e.type);try{console.error(t)}catch(e){setTimeout(function(){throw e})}}function pa(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ya(e,t)}else t.current=null}function ha(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var o=n=n.next;do{if((o.tag&e)!==Sr){var r=o.destroy;o.destroy=void 0,void 0!==r&&r()}(o.tag&t)!==Sr&&(r=o.create,o.destroy=r()),o=o.next}while(o!==n)}}function fa(e){switch("function"==typeof Uo&&Uo(e),e.tag){case 0:case 11:case 14:case 15:var t=e.updateQueue;if(null!==t&&null!==(t=t.lastEffect)){var n=t=t.next;do{var o=n.destroy;if(void 0!==o){var r=e;try{o()}catch(e){Ya(r,e)}}n=n.next}while(n!==t)}break;case 1:if(pa(e),"function"==typeof(t=e.stateNode).componentWillUnmount)try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ya(e,t)}break;case 5:pa(e);break;case 4:va(e)}}function ma(e){return 5===e.tag||3===e.tag||4===e.tag}function ga(e){e:{for(var t=e.return;null!==t;){if(ma(t)){var n=t;break e}t=t.return}a("160"),n=void 0}var o=t=void 0;switch(n.tag){case 5:t=n.stateNode,o=!1;break;case 3:case 4:t=n.stateNode.containerInfo,o=!0;break;default:a("161")}16&n.effectTag&&(ro(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ma(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var r=e;;){if(5===r.tag||6===r.tag)if(n)if(o){var i=t,s=r.stateNode,l=n;8===i.nodeType?i.parentNode.insertBefore(s,l):i.insertBefore(s,l)}else t.insertBefore(r.stateNode,n);else o?(s=t,l=r.stateNode,8===s.nodeType?(i=s.parentNode).insertBefore(l,s):(i=s).appendChild(l),null!=(s=s._reactRootContainer)||null!==i.onclick||(i.onclick=fo)):t.appendChild(r.stateNode);else if(4!==r.tag&&null!==r.child){r.child.return=r,r=r.child;continue}if(r===e)break;for(;null===r.sibling;){if(null===r.return||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function va(e){for(var t=e,n=!1,o=void 0,r=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&a("160"),n.tag){case 5:o=n.stateNode,r=!1;break e;case 3:case 4:o=n.stateNode.containerInfo,r=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag){e:for(var i=t,s=i;;)if(fa(s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===i)break;for(;null===s.sibling;){if(null===s.return||s.return===i)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}r?(i=o,s=t.stateNode,8===i.nodeType?i.parentNode.removeChild(s):i.removeChild(s)):o.removeChild(t.stateNode)}else if(4===t.tag){if(null!==t.child){o=t.stateNode.containerInfo,r=!0,t.child.return=t,t=t.child;continue}}else if(fa(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;4===(t=t.return).tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function ya(e,t){switch(t.tag){case 0:case 11:case 14:case 15:ha(Mr,Rr,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var o=t.memoizedProps;e=null!==e?e.memoizedProps:o;var r=t.type,i=t.updateQueue;t.updateQueue=null,null!==i&&function(e,t,n,o,r){e[N]=r,"input"===n&&"radio"===r.type&&null!=r.name&&Et(e,r),po(n,o),o=po(n,r);for(var i=0;i<t.length;i+=2){var a=t[i],s=t[i+1];"style"===a?lo(e,s):"dangerouslySetInnerHTML"===a?oo(e,s):"children"===a?ro(e,s):vt(e,a,s,o)}switch(n){case"input":Ct(e,r);break;case"textarea":Qn(e,r);break;case"select":t=e._wrapperState.wasMultiple,e._wrapperState.wasMultiple=!!r.multiple,null!=(n=r.value)?$n(e,!!r.multiple,n,!1):t!==!!r.multiple&&(null!=r.defaultValue?$n(e,!!r.multiple,r.defaultValue,!0):$n(e,!!r.multiple,r.multiple?[]:"",!1))}}(n,i,r,e,o)}break;case 6:null===t.stateNode&&a("162"),t.stateNode.nodeValue=t.memoizedProps;break;case 3:case 12:break;case 13:if(n=t.memoizedState,o=void 0,e=t,null===n?o=!1:(o=!0,e=t.child,0===n.timedOutAt&&(n.timedOutAt=Es())),null!==e&&function(e,t){for(var n=e;;){if(5===n.tag){var o=n.stateNode;if(t)o.style.display="none";else{o=n.stateNode;var r=n.memoizedProps.style;r=null!=r&&r.hasOwnProperty("display")?r.display:null,o.style.display=so("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else{if(13===n.tag&&null!==n.memoizedState){(o=n.child.sibling).return=n,n=o;continue}if(null!==n.child){n.child.return=n,n=n.child;continue}}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}(e,o),null!==(n=t.updateQueue)){t.updateQueue=null;var s=t.stateNode;null===s&&(s=t.stateNode=new ca),n.forEach(function(e){var n=function(e,t){var n=e.stateNode;null!==n&&n.delete(t),t=$a(t=Es(),e),null!==(e=Ka(e,t))&&(Zo(e,t),0!==(t=e.expirationTime)&&Cs(e,t))}.bind(null,t,e);s.has(e)||(s.add(e),e.then(n,n))})}break;case 17:break;default:a("163")}}var ba="function"==typeof WeakMap?WeakMap:Map;function wa(e,t,n){(n=Xi(n)).tag=Vi,n.payload={element:null};var o=t.value;return n.callback=function(){_s(o),da(e,t)},n}function Ea(e,t,n){(n=Xi(n)).tag=Vi;var o=e.type.getDerivedStateFromError;if("function"==typeof o){var r=t.value;n.payload=function(){return o(r)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof o&&(null===Ia?Ia=new Set([this]):Ia.add(this));var n=t.value,r=t.stack;da(e,t),this.componentDidCatch(n,{componentStack:null!==r?r:""})}),n}function Ca(e){switch(e.tag){case 1:No(e.type)&&Fo();var t=e.effectTag;return 2048&t?(e.effectTag=-2049&t|64,e):null;case 3:return xr(),Ao(),0!=(64&(t=e.effectTag))&&a("285"),e.effectTag=-2049&t|64,e;case 5:return kr(e),null;case 13:return 2048&(t=e.effectTag)?(e.effectTag=-2049&t|64,e):null;case 18:return null;case 4:return xr(),null;case 10:return zi(e),null;default:return null}}var xa=qe.ReactCurrentDispatcher,Ta=qe.ReactCurrentOwner,ka=1073741822,Sa=!1,Da=null,Ma=null,Ra=0,Pa=-1,_a=!1,La=null,Oa=!1,Na=null,Fa=null,Aa=null,Ia=null;function Ha(){if(null!==Da)for(var e=Da.return;null!==e;){var t=e;switch(t.tag){case 1:var n=t.type.childContextTypes;null!=n&&Fo();break;case 3:xr(),Ao();break;case 5:kr(t);break;case 4:xr();break;case 10:zi(t)}e=e.return}Ma=null,Ra=0,Pa=-1,_a=!1,Da=null}function za(){for(;null!==La;){var e=La.effectTag;if(16&e&&ro(La.stateNode,""),128&e){var t=La.alternate;null!==t&&(null!==(t=t.ref)&&("function"==typeof t?t(null):t.current=null))}switch(14&e){case 2:ga(La),La.effectTag&=-3;break;case 6:ga(La),La.effectTag&=-3,ya(La.alternate,La);break;case 4:ya(La.alternate,La);break;case 8:va(e=La),e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,null!==(e=e.alternate)&&(e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null)}La=La.nextEffect}}function ja(){for(;null!==La;){if(256&La.effectTag)e:{var e=La.alternate,t=La;switch(t.tag){case 0:case 11:case 15:ha(Dr,Sr,t);break e;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,o=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:or(t.type,n),o),e.__reactInternalSnapshotBeforeUpdate=t}break e;case 3:case 5:case 6:case 4:case 17:break e;default:a("163")}}La=La.nextEffect}}function Ba(e,t){for(;null!==La;){var n=La.effectTag;if(36&n){var o=La.alternate,r=La,i=t;switch(r.tag){case 0:case 11:case 15:ha(Pr,_r,r);break;case 1:var s=r.stateNode;if(4&r.effectTag)if(null===o)s.componentDidMount();else{var l=r.elementType===r.type?o.memoizedProps:or(r.type,o.memoizedProps);s.componentDidUpdate(l,o.memoizedState,s.__reactInternalSnapshotBeforeUpdate)}null!==(o=r.updateQueue)&&na(0,o,s);break;case 3:if(null!==(o=r.updateQueue)){if(s=null,null!==r.child)switch(r.child.tag){case 5:s=r.child.stateNode;break;case 1:s=r.child.stateNode}na(0,o,s)}break;case 5:i=r.stateNode,null===o&&4&r.effectTag&&vo(r.type,r.memoizedProps)&&i.focus();break;case 6:case 4:case 12:case 13:case 17:break;default:a("163")}}128&n&&(null!==(r=La.ref)&&(i=La.stateNode,"function"==typeof r?r(i):r.current=i)),512&n&&(Na=e),La=La.nextEffect}}function Ua(){null!==Fa&&Co(Fa),null!==Aa&&Aa()}function Wa(e,t){Oa=Sa=!0,e.current===t&&a("177");var n=e.pendingCommitExpirationTime;0===n&&a("261"),e.pendingCommitExpirationTime=0;var o=t.expirationTime,r=t.childExpirationTime;for(function(e,t){if(e.didError=!1,0===t)e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0;else{t<e.latestPingedTime&&(e.latestPingedTime=0);var n=e.latestPendingTime;0!==n&&(n>t?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime>t&&(e.earliestPendingTime=e.latestPendingTime)),0===(n=e.earliestSuspendedTime)?Zo(e,t):t<e.latestSuspendedTime?(e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0,Zo(e,t)):t>n&&Zo(e,t)}nr(0,e)}(e,r>o?r:o),Ta.current=null,o=void 0,1<t.effectTag?null!==t.lastEffect?(t.lastEffect.nextEffect=t,o=t.firstEffect):o=t:o=t.firstEffect,mo=Tn,go=function(){var e=An();if(In(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{var n=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection();if(n&&0!==n.rangeCount){t=n.anchorNode;var o=n.anchorOffset,r=n.focusNode;n=n.focusOffset;try{t.nodeType,r.nodeType}catch(e){t=null;break e}var i=0,a=-1,s=-1,l=0,u=0,c=e,d=null;t:for(;;){for(var p;c!==t||0!==o&&3!==c.nodeType||(a=i+o),c!==r||0!==n&&3!==c.nodeType||(s=i+n),3===c.nodeType&&(i+=c.nodeValue.length),null!==(p=c.firstChild);)d=c,c=p;for(;;){if(c===e)break t;if(d===t&&++l===o&&(a=i),d===r&&++u===n&&(s=i),null!==(p=c.nextSibling))break;d=(c=d).parentNode}c=p}t=-1===a||-1===s?null:{start:a,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;return{focusedElem:e,selectionRange:t}}(),Tn=!1,La=o;null!==La;){r=!1;var s=void 0;try{ja()}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}for(La=o;null!==La;){r=!1,s=void 0;try{za()}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}for(Hn(go),go=null,Tn=!!mo,mo=null,e.current=t,La=o;null!==La;){r=!1,s=void 0;try{Ba(e,n)}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}if(null!==o&&null!==Na){var l=function(e,t){Aa=Fa=Na=null;var n=os;os=!0;do{if(512&t.effectTag){var o=!1,r=void 0;try{var i=t;ha(Or,Sr,i),ha(Sr,Lr,i)}catch(e){o=!0,r=e}o&&Ya(t,r)}t=t.nextEffect}while(null!==t);os=n,0!==(n=e.expirationTime)&&Cs(e,n),us||os||Ds(1073741823,!1)}.bind(null,e,o);Fa=i.unstable_runWithPriority(i.unstable_NormalPriority,function(){return Eo(l)}),Aa=l}Sa=Oa=!1,"function"==typeof Bo&&Bo(t.stateNode),n=t.expirationTime,0===(t=(t=t.childExpirationTime)>n?t:n)&&(Ia=null),function(e,t){e.expirationTime=t,e.finishedWork=null}(e,t)}function qa(e){for(;;){var t=e.alternate,n=e.return,o=e.sibling;if(0==(1024&e.effectTag)){Da=e;e:{var i=t,s=Ra,l=(t=e).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:No(t.type)&&Fo();break;case 3:xr(),Ao(),(l=t.stateNode).pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),null!==i&&null!==i.child||(yi(t),t.effectTag&=-3),sa(t);break;case 5:kr(t);var u=Er(wr.current);if(s=t.type,null!==i&&null!=t.stateNode)la(i,t,s,l,u),i.ref!==t.ref&&(t.effectTag|=128);else if(l){var c=Er(yr.current);if(yi(t)){i=(l=t).stateNode;var d=l.type,p=l.memoizedProps,h=u;switch(i[O]=l,i[N]=p,s=void 0,u=d){case"iframe":case"object":kn("load",i);break;case"video":case"audio":for(d=0;d<te.length;d++)kn(te[d],i);break;case"source":kn("error",i);break;case"img":case"image":case"link":kn("error",i),kn("load",i);break;case"form":kn("reset",i),kn("submit",i);break;case"details":kn("toggle",i);break;case"input":wt(i,p),kn("invalid",i),ho(h,"onChange");break;case"select":i._wrapperState={wasMultiple:!!p.multiple},kn("invalid",i),ho(h,"onChange");break;case"textarea":Kn(i,p),kn("invalid",i),ho(h,"onChange")}for(s in co(u,p),d=null,p)p.hasOwnProperty(s)&&(c=p[s],"children"===s?"string"==typeof c?i.textContent!==c&&(d=["children",c]):"number"==typeof c&&i.textContent!==""+c&&(d=["children",""+c]):b.hasOwnProperty(s)&&null!=c&&ho(h,s));switch(u){case"input":Ue(i),xt(i,p,!0);break;case"textarea":Ue(i),Jn(i);break;case"select":case"option":break;default:"function"==typeof p.onClick&&(i.onclick=fo)}s=d,l.updateQueue=s,(l=null!==s)&&ia(t)}else{p=t,h=s,i=l,d=9===u.nodeType?u:u.ownerDocument,c===Zn.html&&(c=eo(h)),c===Zn.html?"script"===h?((i=d.createElement("div")).innerHTML="<script><\/script>",d=i.removeChild(i.firstChild)):"string"==typeof i.is?d=d.createElement(h,{is:i.is}):(d=d.createElement(h),"select"===h&&(h=d,i.multiple?h.multiple=!0:i.size&&(h.size=i.size))):d=d.createElementNS(c,h),(i=d)[O]=p,i[N]=l,aa(i,t,!1,!1),h=i;var f=u,m=po(d=s,p=l);switch(d){case"iframe":case"object":kn("load",h),u=p;break;case"video":case"audio":for(u=0;u<te.length;u++)kn(te[u],h);u=p;break;case"source":kn("error",h),u=p;break;case"img":case"image":case"link":kn("error",h),kn("load",h),u=p;break;case"form":kn("reset",h),kn("submit",h),u=p;break;case"details":kn("toggle",h),u=p;break;case"input":wt(h,p),u=bt(h,p),kn("invalid",h),ho(f,"onChange");break;case"option":u=Yn(h,p);break;case"select":h._wrapperState={wasMultiple:!!p.multiple},u=r({},p,{value:void 0}),kn("invalid",h),ho(f,"onChange");break;case"textarea":Kn(h,p),u=Xn(h,p),kn("invalid",h),ho(f,"onChange");break;default:u=p}co(d,u),c=void 0;var g=d,v=h,y=u;for(c in y)if(y.hasOwnProperty(c)){var w=y[c];"style"===c?lo(v,w):"dangerouslySetInnerHTML"===c?null!=(w=w?w.__html:void 0)&&oo(v,w):"children"===c?"string"==typeof w?("textarea"!==g||""!==w)&&ro(v,w):"number"==typeof w&&ro(v,""+w):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(b.hasOwnProperty(c)?null!=w&&ho(f,c):null!=w&&vt(v,c,w,m))}switch(d){case"input":Ue(h),xt(h,p,!1);break;case"textarea":Ue(h),Jn(h);break;case"option":null!=p.value&&h.setAttribute("value",""+yt(p.value));break;case"select":(u=h).multiple=!!p.multiple,null!=(h=p.value)?$n(u,!!p.multiple,h,!1):null!=p.defaultValue&&$n(u,!!p.multiple,p.defaultValue,!0);break;default:"function"==typeof u.onClick&&(h.onclick=fo)}(l=vo(s,l))&&ia(t),t.stateNode=i}null!==t.ref&&(t.effectTag|=128)}else null===t.stateNode&&a("166");break;case 6:i&&null!=t.stateNode?ua(i,t,i.memoizedProps,l):("string"!=typeof l&&(null===t.stateNode&&a("166")),i=Er(wr.current),Er(yr.current),yi(t)?(s=(l=t).stateNode,i=l.memoizedProps,s[O]=l,(l=s.nodeValue!==i)&&ia(t)):(s=t,(l=(9===i.nodeType?i:i.ownerDocument).createTextNode(l))[O]=t,s.stateNode=l));break;case 11:break;case 13:if(l=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=s,Da=t;break e}l=null!==l,s=null!==i&&null!==i.memoizedState,null!==i&&!l&&s&&(null!==(i=i.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=i,i.nextEffect=u):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),(l||s)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:xr(),sa(t);break;case 10:zi(t);break;case 9:case 14:break;case 17:No(t.type)&&Fo();break;case 18:break;default:a("156")}Da=null}if(t=e,1===Ra||1!==t.childExpirationTime){for(l=0,s=t.child;null!==s;)(i=s.expirationTime)>l&&(l=i),(u=s.childExpirationTime)>l&&(l=u),s=s.sibling;t.childExpirationTime=l}if(null!==Da)return Da;null!==n&&0==(1024&n.effectTag)&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1<e.effectTag&&(null!==n.lastEffect?n.lastEffect.nextEffect=e:n.firstEffect=e,n.lastEffect=e))}else{if(null!==(e=Ca(e)))return e.effectTag&=1023,e;null!==n&&(n.firstEffect=n.lastEffect=null,n.effectTag|=1024)}if(null!==o)return o;if(null===n)break;e=n}return null}function Va(e){var t=Oi(e.alternate,e,Ra);return e.memoizedProps=e.pendingProps,null===t&&(t=qa(e)),Ta.current=null,t}function Ga(e,t){Sa&&a("243"),Ua(),Sa=!0;var n=xa.current;xa.current=li;var o=e.nextExpirationTimeToWorkOn;o===Ra&&e===Ma&&null!==Da||(Ha(),Ra=o,Da=Yo((Ma=e).current,null),e.pendingCommitExpirationTime=0);for(var r=!1;;){try{if(t)for(;null!==Da&&!ks();)Da=Va(Da);else for(;null!==Da;)Da=Va(Da)}catch(t){if(Ii=Ai=Fi=null,Qr(),null===Da)r=!0,_s(t);else{null===Da&&a("271");var i=Da,s=i.return;if(null!==s){e:{var l=e,u=s,c=i,d=t;if(s=Ra,c.effectTag|=1024,c.firstEffect=c.lastEffect=null,null!==d&&"object"==typeof d&&"function"==typeof d.then){var p=d;d=u;var h=-1,f=-1;do{if(13===d.tag){var m=d.alternate;if(null!==m&&null!==(m=m.memoizedState)){f=10*(1073741822-m.timedOutAt);break}"number"==typeof(m=d.pendingProps.maxDuration)&&(0>=m?h=0:(-1===h||m<h)&&(h=m))}d=d.return}while(null!==d);d=u;do{if((m=13===d.tag)&&(m=void 0!==d.memoizedProps.fallback&&null===d.memoizedState),m){if(null===(u=d.updateQueue)?((u=new Set).add(p),d.updateQueue=u):u.add(p),0==(1&d.mode)){d.effectTag|=64,c.effectTag&=-1957,1===c.tag&&(null===c.alternate?c.tag=17:((s=Xi(1073741823)).tag=qi,Qi(c,s))),c.expirationTime=1073741823;break e}u=s;var g=(c=l).pingCache;null===g?(g=c.pingCache=new ba,m=new Set,g.set(p,m)):void 0===(m=g.get(p))&&(m=new Set,g.set(p,m)),m.has(u)||(m.add(u),c=Xa.bind(null,c,p,u),p.then(c,c)),-1===h?l=1073741823:(-1===f&&(f=10*(1073741822-tr(l,s))-5e3),l=f+h),0<=l&&Pa<l&&(Pa=l),d.effectTag|=2048,d.expirationTime=s;break e}d=d.return}while(null!==d);d=Error((st(c.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+lt(c))}_a=!0,d=ra(d,c),l=u;do{switch(l.tag){case 3:l.effectTag|=2048,l.expirationTime=s,Ji(l,s=wa(l,d,s));break e;case 1:if(h=d,f=l.type,c=l.stateNode,0==(64&l.effectTag)&&("function"==typeof f.getDerivedStateFromError||null!==c&&"function"==typeof c.componentDidCatch&&(null===Ia||!Ia.has(c)))){l.effectTag|=2048,l.expirationTime=s,Ji(l,s=Ea(l,h,s));break e}}l=l.return}while(null!==l)}Da=qa(i);continue}r=!0,_s(t)}}break}if(Sa=!1,xa.current=n,Ii=Ai=Fi=null,Qr(),r)Ma=null,e.finishedWork=null;else if(null!==Da)e.finishedWork=null;else{if(null===(n=e.current.alternate)&&a("281"),Ma=null,_a){if(r=e.latestPendingTime,i=e.latestSuspendedTime,s=e.latestPingedTime,0!==r&&r<o||0!==i&&i<o||0!==s&&s<o)return er(e,o),void ws(e,n,o,e.expirationTime,-1);if(!e.didError&&t)return e.didError=!0,o=e.nextExpirationTimeToWorkOn=o,t=e.expirationTime=1073741823,void ws(e,n,o,t,-1)}t&&-1!==Pa?(er(e,o),(t=10*(1073741822-tr(e,o)))<Pa&&(Pa=t),t=10*(1073741822-Es()),t=Pa-t,ws(e,n,o,e.expirationTime,0>t?0:t)):(e.pendingCommitExpirationTime=o,e.finishedWork=n)}}function Ya(e,t){for(var n=e.return;null!==n;){switch(n.tag){case 1:var o=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof o.componentDidCatch&&(null===Ia||!Ia.has(o)))return Qi(n,e=Ea(n,e=ra(t,e),1073741823)),void Qa(n,1073741823);break;case 3:return Qi(n,e=wa(n,e=ra(t,e),1073741823)),void Qa(n,1073741823)}n=n.return}3===e.tag&&(Qi(e,n=wa(e,n=ra(t,e),1073741823)),Qa(e,1073741823))}function $a(e,t){var n=i.unstable_getCurrentPriorityLevel(),o=void 0;if(0==(1&t.mode))o=1073741823;else if(Sa&&!Oa)o=Ra;else{switch(n){case i.unstable_ImmediatePriority:o=1073741823;break;case i.unstable_UserBlockingPriority:o=1073741822-10*(1+((1073741822-e+15)/10|0));break;case i.unstable_NormalPriority:o=1073741822-25*(1+((1073741822-e+500)/25|0));break;case i.unstable_LowPriority:case i.unstable_IdlePriority:o=1;break;default:a("313")}null!==Ma&&o===Ra&&--o}return n===i.unstable_UserBlockingPriority&&(0===as||o<as)&&(as=o),o}function Xa(e,t,n){var o=e.pingCache;null!==o&&o.delete(t),null!==Ma&&Ra===n?Ma=null:(t=e.earliestSuspendedTime,o=e.latestSuspendedTime,0!==t&&n<=t&&n>=o&&(e.didError=!1,(0===(t=e.latestPingedTime)||t>n)&&(e.latestPingedTime=n),nr(n,e),0!==(n=e.expirationTime)&&Cs(e,n)))}function Ka(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var o=e.return,r=null;if(null===o&&3===e.tag)r=e.stateNode;else for(;null!==o;){if(n=o.alternate,o.childExpirationTime<t&&(o.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===o.return&&3===o.tag){r=o.stateNode;break}o=o.return}return r}function Qa(e,t){null!==(e=Ka(e,t))&&(!Sa&&0!==Ra&&t>Ra&&Ha(),Zo(e,t),Sa&&!Oa&&Ma===e||Cs(e,e.expirationTime),gs>ms&&(gs=0,a("185")))}function Ja(e,t,n,o,r){return i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){return e(t,n,o,r)})}var Za=null,es=null,ts=0,ns=void 0,os=!1,rs=null,is=0,as=0,ss=!1,ls=null,us=!1,cs=!1,ds=null,ps=i.unstable_now(),hs=1073741822-(ps/10|0),fs=hs,ms=50,gs=0,vs=null;function ys(){hs=1073741822-((i.unstable_now()-ps)/10|0)}function bs(e,t){if(0!==ts){if(t<ts)return;null!==ns&&i.unstable_cancelCallback(ns)}ts=t,e=i.unstable_now()-ps,ns=i.unstable_scheduleCallback(Ss,{timeout:10*(1073741822-t)-e})}function ws(e,t,n,o,r){e.expirationTime=o,0!==r||ks()?0<r&&(e.timeoutHandle=bo(function(e,t,n){e.pendingCommitExpirationTime=n,e.finishedWork=t,ys(),fs=hs,Ms(e,n)}.bind(null,e,t,n),r)):(e.pendingCommitExpirationTime=n,e.finishedWork=t)}function Es(){return os?fs:(xs(),0!==is&&1!==is||(ys(),fs=hs),fs)}function Cs(e,t){null===e.nextScheduledRoot?(e.expirationTime=t,null===es?(Za=es=e,e.nextScheduledRoot=e):(es=es.nextScheduledRoot=e).nextScheduledRoot=Za):t>e.expirationTime&&(e.expirationTime=t),os||(us?cs&&(rs=e,is=1073741823,Rs(e,1073741823,!1)):1073741823===t?Ds(1073741823,!1):bs(e,t))}function xs(){var e=0,t=null;if(null!==es)for(var n=es,o=Za;null!==o;){var r=o.expirationTime;if(0===r){if((null===n||null===es)&&a("244"),o===o.nextScheduledRoot){Za=es=o.nextScheduledRoot=null;break}if(o===Za)Za=r=o.nextScheduledRoot,es.nextScheduledRoot=r,o.nextScheduledRoot=null;else{if(o===es){(es=n).nextScheduledRoot=Za,o.nextScheduledRoot=null;break}n.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=n.nextScheduledRoot}else{if(r>e&&(e=r,t=o),o===es)break;if(1073741823===e)break;n=o,o=o.nextScheduledRoot}}rs=t,is=e}var Ts=!1;function ks(){return!!Ts||!!i.unstable_shouldYield()&&(Ts=!0)}function Ss(){try{if(!ks()&&null!==Za){ys();var e=Za;do{var t=e.expirationTime;0!==t&&hs<=t&&(e.nextExpirationTimeToWorkOn=hs),e=e.nextScheduledRoot}while(e!==Za)}Ds(0,!0)}finally{Ts=!1}}function Ds(e,t){if(xs(),t)for(ys(),fs=hs;null!==rs&&0!==is&&e<=is&&!(Ts&&hs>is);)Rs(rs,is,hs>is),xs(),ys(),fs=hs;else for(;null!==rs&&0!==is&&e<=is;)Rs(rs,is,!1),xs();if(t&&(ts=0,ns=null),0!==is&&bs(rs,is),gs=0,vs=null,null!==ds)for(e=ds,ds=null,t=0;t<e.length;t++){var n=e[t];try{n._onComplete()}catch(e){ss||(ss=!0,ls=e)}}if(ss)throw e=ls,ls=null,ss=!1,e}function Ms(e,t){os&&a("253"),rs=e,is=t,Rs(e,t,!1),Ds(1073741823,!1)}function Rs(e,t,n){if(os&&a("245"),os=!0,n){var o=e.finishedWork;null!==o?Ps(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Ga(e,n),null!==(o=e.finishedWork)&&(ks()?e.finishedWork=o:Ps(e,o,t)))}else null!==(o=e.finishedWork)?Ps(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Ga(e,n),null!==(o=e.finishedWork)&&Ps(e,o,t));os=!1}function Ps(e,t,n){var o=e.firstBatch;if(null!==o&&o._expirationTime>=n&&(null===ds?ds=[o]:ds.push(o),o._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===vs?gs++:(vs=e,gs=0),i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){Wa(e,t)})}function _s(e){null===rs&&a("246"),rs.expirationTime=0,ss||(ss=!0,ls=e)}function Ls(e,t){var n=us;us=!0;try{return e(t)}finally{(us=n)||os||Ds(1073741823,!1)}}function Os(e,t){if(us&&!cs){cs=!0;try{return e(t)}finally{cs=!1}}return e(t)}function Ns(e,t,n){us||os||0===as||(Ds(as,!1),as=0);var o=us;us=!0;try{return i.unstable_runWithPriority(i.unstable_UserBlockingPriority,function(){return e(t,n)})}finally{(us=o)||os||Ds(1073741823,!1)}}function Fs(e,t,n,o,r){var i=t.current;e:if(n){t:{2===tn(n=n._reactInternalFiber)&&1===n.tag||a("170");var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(No(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);a("171"),s=void 0}if(1===n.tag){var l=n.type;if(No(l)){n=Ho(n,l,s);break e}}n=s}else n=Ro;return null===t.context?t.context=n:t.pendingContext=n,t=r,(r=Xi(o)).payload={element:e},null!==(t=void 0===t?null:t)&&(r.callback=t),Ua(),Qi(i,r),Qa(i,o),o}function As(e,t,n,o){var r=t.current;return Fs(e,t,n,r=$a(Es(),r),o)}function Is(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Hs(e){var t=1073741822-25*(1+((1073741822-Es()+500)/25|0));t>=ka&&(t=ka-1),this._expirationTime=ka=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function zs(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function js(e,t,n){e={current:t=Vo(3,null,null,t?3:0),containerInfo:e,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function Bs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Us(e,t,n,o,r){var i=n._reactRootContainer;if(i){if("function"==typeof r){var a=r;r=function(){var e=Is(i._internalRoot);a.call(e)}}null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new js(e,!1,t)}(n,o),"function"==typeof r){var s=r;r=function(){var e=Is(i._internalRoot);s.call(e)}}Os(function(){null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)})}return Is(i._internalRoot)}function Ws(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return Bs(t)||a("200"),function(e,t,n){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$e,key:null==o?null:""+o,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Se=function(e,t,n){switch(t){case"input":if(Ct(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var o=n[t];if(o!==e&&o.form===e.form){var r=H(o);r||a("90"),We(o),Ct(o,r)}}}break;case"textarea":Qn(e,n);break;case"select":null!=(t=n.value)&&$n(e,!!n.multiple,t,!1)}},Hs.prototype.render=function(e){this._defer||a("250"),this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,o=new zs;return Fs(e,t,null,n,o._onCommit),o},Hs.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Hs.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(this._defer&&null!==t||a("251"),this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var o=null,r=t;r!==this;)o=r,r=r._next;null===o&&a("251"),o._next=r._next,this._next=t,e.firstBatch=this}this._defer=!1,Ms(e,n),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},Hs.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},zs.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},zs.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];"function"!=typeof n&&a("191",n),n()}}},js.prototype.render=function(e,t){var n=this._internalRoot,o=new zs;return null!==(t=void 0===t?null:t)&&o.then(t),As(e,n,null,o._onCommit),o},js.prototype.unmount=function(e){var t=this._internalRoot,n=new zs;return null!==(e=void 0===e?null:e)&&n.then(e),As(null,t,null,n._onCommit),n},js.prototype.legacy_renderSubtreeIntoContainer=function(e,t,n){var o=this._internalRoot,r=new zs;return null!==(n=void 0===n?null:n)&&r.then(n),As(t,o,e,r._onCommit),r},js.prototype.createBatch=function(){var e=new Hs(this),t=e._expirationTime,n=this._internalRoot,o=n.firstBatch;if(null===o)n.firstBatch=e,e._next=null;else{for(n=null;null!==o&&o._expirationTime>=t;)n=o,o=o._next;e._next=o,null!==n&&(n._next=e)}return e},Le=Ls,Oe=Ns,Ne=function(){os||0===as||(Ds(as,!1),as=0)};var qs,Vs,Gs={createPortal:Ws,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?a("188"):a("268",Object.keys(e))),e=null===(e=on(t))?null:e.stateNode},hydrate:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!0,n)},render:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,o){return Bs(n)||a("200"),(null==e||void 0===e._reactInternalFiber)&&a("38"),Us(e,t,n,!1,o)},unmountComponentAtNode:function(e){return Bs(e)||a("40"),!!e._reactRootContainer&&(Os(function(){Us(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return Ws.apply(void 0,arguments)},unstable_batchedUpdates:Ls,unstable_interactiveUpdates:Ns,flushSync:function(e,t){os&&a("187");var n=us;us=!0;try{return Ja(e,t)}finally{us=n,Ds(1073741823,!1)}},unstable_createRoot:function(e,t){return Bs(e)||a("299","unstable_createRoot"),new js(e,!0,null!=t&&!0===t.hydrate)},unstable_flushControlled:function(e){var t=us;us=!0;try{Ja(e)}finally{(us=t)||os||Ds(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[A,I,H,R.injectEventPluginsByName,y,q,function(e){S(e,W)},Pe,_e,Mn,_]}};Vs=(qs={findFiberByHostInstance:F,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Bo=Wo(function(e){return t.onCommitFiberRoot(n,e)}),Uo=Wo(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}}(r({},qs,{overrideProps:null,currentDispatcherRef:qe.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=on(e))?null:e.stateNode},findFiberByHostInstance:function(e){return Vs?Vs(e):null}}));var Ys={default:Gs},$s=Ys&&Gs||Ys;e.exports=$s.default||$s},function(e,t,n){"use strict";e.exports=n(47)},function(e,t,n){"use strict";(function(e){
+ */var o=n(0),r=n(20),i=n(46);function a(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}o||a("227");var s=!1,l=null,u=!1,c=null,d={onError:function(e){s=!0,l=e}};function p(e,t,n,o,r,i,a,u,c){s=!1,l=null,function(e,t,n,o,r,i,a,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}.apply(d,arguments)}var h=null,f={};function m(){if(h)for(var e in f){var t=f[e],n=h.indexOf(e);if(-1<n||a("96",e),!v[n])for(var o in t.extractEvents||a("97",e),v[n]=t,n=t.eventTypes){var r=void 0,i=n[o],s=t,l=o;y.hasOwnProperty(l)&&a("99",l),y[l]=i;var u=i.phasedRegistrationNames;if(u){for(r in u)u.hasOwnProperty(r)&&g(u[r],s,l);r=!0}else i.registrationName?(g(i.registrationName,s,l),r=!0):r=!1;r||a("98",o,e)}}}function g(e,t,n){b[e]&&a("100",e),b[e]=t,w[e]=t.eventTypes[n].dependencies}var v=[],y={},b={},w={},E=null,C=null,x=null;function T(e,t,n){var o=e.type||"unknown-event";e.currentTarget=x(n),function(e,t,n,o,r,i,d,h,f){if(p.apply(this,arguments),s){if(s){var m=l;s=!1,l=null}else a("198"),m=void 0;u||(u=!0,c=m)}}(o,t,void 0,e),e.currentTarget=null}function k(e,t){return null==t&&a("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function S(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var D=null;function M(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var o=0;o<t.length&&!e.isPropagationStopped();o++)T(e,t[o],n[o]);else t&&T(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}var R={injectEventPluginOrder:function(e){h&&a("101"),h=Array.prototype.slice.call(e),m()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var o=e[t];f.hasOwnProperty(t)&&f[t]===o||(f[t]&&a("102",t),f[t]=o,n=!0)}n&&m()}};function _(e,t){var n=e.stateNode;if(!n)return null;var o=E(n);if(!o)return null;n=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(o=!o.disabled)||(o=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!o;break e;default:e=!1}return e?null:(n&&"function"!=typeof n&&a("231",t,typeof n),n)}function L(e){if(null!==e&&(D=k(D,e)),e=D,D=null,e&&(S(e,M),D&&a("95"),u))throw e=c,u=!1,c=null,e}var P=Math.random().toString(36).slice(2),O="__reactInternalInstance$"+P,N="__reactEventHandlers$"+P;function F(e){if(e[O])return e[O];for(;!e[O];){if(!e.parentNode)return null;e=e.parentNode}return 5===(e=e[O]).tag||6===e.tag?e:null}function A(e){return!(e=e[O])||5!==e.tag&&6!==e.tag?null:e}function I(e){if(5===e.tag||6===e.tag)return e.stateNode;a("33")}function H(e){return e[N]||null}function z(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function j(e,t,n){(t=_(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function B(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=z(t);for(t=n.length;0<t--;)j(n[t],"captured",e);for(t=0;t<n.length;t++)j(n[t],"bubbled",e)}}function U(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=_(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function W(e){e&&e.dispatchConfig.registrationName&&U(e._targetInst,null,e)}function q(e){S(e,B)}var G=!("undefined"==typeof window||!window.document||!window.document.createElement);function V(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Y={animationend:V("Animation","AnimationEnd"),animationiteration:V("Animation","AnimationIteration"),animationstart:V("Animation","AnimationStart"),transitionend:V("Transition","TransitionEnd")},$={},X={};function K(e){if($[e])return $[e];if(!Y[e])return e;var t,n=Y[e];for(t in n)if(n.hasOwnProperty(t)&&t in X)return $[e]=n[t];return e}G&&(X=document.createElement("div").style,"AnimationEvent"in window||(delete Y.animationend.animation,delete Y.animationiteration.animation,delete Y.animationstart.animation),"TransitionEvent"in window||delete Y.transitionend.transition);var Q=K("animationend"),J=K("animationiteration"),Z=K("animationstart"),ee=K("transitionend"),te="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ne=null,oe=null,re=null;function ie(){if(re)return re;var e,t,n=oe,o=n.length,r="value"in ne?ne.value:ne.textContent,i=r.length;for(e=0;e<o&&n[e]===r[e];e++);var a=o-e;for(t=1;t<=a&&n[o-t]===r[i-t];t++);return re=r.slice(e,1<t?1-t:void 0)}function ae(){return!0}function se(){return!1}function le(e,t,n,o){for(var r in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(r)&&((t=e[r])?this[r]=t(n):"target"===r?this.target=o:this[r]=n[r]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?ae:se,this.isPropagationStopped=se,this}function ue(e,t,n,o){if(this.eventPool.length){var r=this.eventPool.pop();return this.call(r,e,t,n,o),r}return new this(e,t,n,o)}function ce(e){e instanceof this||a("279"),e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ue,e.release=ce}r(le.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ae)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ae)},persist:function(){this.isPersistent=ae},isPersistent:se,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=se,this._dispatchInstances=this._dispatchListeners=null}}),le.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},le.extend=function(e){function t(){}function n(){return o.apply(this,arguments)}var o=this;t.prototype=o.prototype;var i=new t;return r(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=r({},o.Interface,e),n.extend=o.extend,de(n),n},de(le);var pe=le.extend({data:null}),he=le.extend({data:null}),fe=[9,13,27,32],me=G&&"CompositionEvent"in window,ge=null;G&&"documentMode"in document&&(ge=document.documentMode);var ve=G&&"TextEvent"in window&&!ge,ye=G&&(!me||ge&&8<ge&&11>=ge),be=String.fromCharCode(32),we={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Ee=!1;function Ce(e,t){switch(e){case"keyup":return-1!==fe.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function xe(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Te=!1;var ke={eventTypes:we,extractEvents:function(e,t,n,o){var r=void 0,i=void 0;if(me)e:{switch(e){case"compositionstart":r=we.compositionStart;break e;case"compositionend":r=we.compositionEnd;break e;case"compositionupdate":r=we.compositionUpdate;break e}r=void 0}else Te?Ce(e,n)&&(r=we.compositionEnd):"keydown"===e&&229===n.keyCode&&(r=we.compositionStart);return r?(ye&&"ko"!==n.locale&&(Te||r!==we.compositionStart?r===we.compositionEnd&&Te&&(i=ie()):(oe="value"in(ne=o)?ne.value:ne.textContent,Te=!0)),r=pe.getPooled(r,t,n,o),i?r.data=i:null!==(i=xe(n))&&(r.data=i),q(r),i=r):i=null,(e=ve?function(e,t){switch(e){case"compositionend":return xe(t);case"keypress":return 32!==t.which?null:(Ee=!0,be);case"textInput":return(e=t.data)===be&&Ee?null:e;default:return null}}(e,n):function(e,t){if(Te)return"compositionend"===e||!me&&Ce(e,t)?(e=ie(),re=oe=ne=null,Te=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ye&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=he.getPooled(we.beforeInput,t,n,o)).data=e,q(t)):t=null,null===i?t:null===t?i:[i,t]}},Se=null,De=null,Me=null;function Re(e){if(e=C(e)){"function"!=typeof Se&&a("280");var t=E(e.stateNode);Se(e.stateNode,e.type,t)}}function _e(e){De?Me?Me.push(e):Me=[e]:De=e}function Le(){if(De){var e=De,t=Me;if(Me=De=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n){return e(t,n)}function Ne(){}var Fe=!1;function Ae(e,t){if(Fe)return e(t);Fe=!0;try{return Pe(e,t)}finally{Fe=!1,(null!==De||null!==Me)&&(Ne(),Le())}}var Ie={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function He(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Ie[e.type]:"textarea"===t}function ze(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function je(e){if(!G)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function Be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Ue(e){e._valueTracker||(e._valueTracker=function(e){var t=Be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){o=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(e){o=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function We(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Be(e)?e.checked?"true":"false":e.value),(e=o)!==n&&(t.setValue(e),!0)}var qe=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;qe.hasOwnProperty("ReactCurrentDispatcher")||(qe.ReactCurrentDispatcher={current:null});var Ge=/^(.*)[\\\/]/,Ve="function"==typeof Symbol&&Symbol.for,Ye=Ve?Symbol.for("react.element"):60103,$e=Ve?Symbol.for("react.portal"):60106,Xe=Ve?Symbol.for("react.fragment"):60107,Ke=Ve?Symbol.for("react.strict_mode"):60108,Qe=Ve?Symbol.for("react.profiler"):60114,Je=Ve?Symbol.for("react.provider"):60109,Ze=Ve?Symbol.for("react.context"):60110,et=Ve?Symbol.for("react.concurrent_mode"):60111,tt=Ve?Symbol.for("react.forward_ref"):60112,nt=Ve?Symbol.for("react.suspense"):60113,ot=Ve?Symbol.for("react.memo"):60115,rt=Ve?Symbol.for("react.lazy"):60116,it="function"==typeof Symbol&&Symbol.iterator;function at(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=it&&e[it]||e["@@iterator"])?e:null}function st(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case et:return"ConcurrentMode";case Xe:return"Fragment";case $e:return"Portal";case Qe:return"Profiler";case Ke:return"StrictMode";case nt:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case Ze:return"Context.Consumer";case Je:return"Context.Provider";case tt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case ot:return st(e.type);case rt:if(e=1===e._status?e._result:null)return st(e)}return null}function lt(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var o=e._debugOwner,r=e._debugSource,i=st(e.type);n=null,o&&(n=st(o.type)),o=i,i="",r?i=" (at "+r.fileName.replace(Ge,"")+":"+r.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(o||"Unknown")+i}t+=n,e=e.return}while(e);return t}var ut=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ct=Object.prototype.hasOwnProperty,dt={},pt={};function ht(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var ft={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ft[e]=new ht(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ft[t]=new ht(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ft[e]=new ht(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ft[e]=new ht(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ft[e]=new ht(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){ft[e]=new ht(e,3,!0,e,null)}),["capture","download"].forEach(function(e){ft[e]=new ht(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){ft[e]=new ht(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){ft[e]=new ht(e,5,!1,e.toLowerCase(),null)});var mt=/[\-:]([a-z])/g;function gt(e){return e[1].toUpperCase()}function vt(e,t,n,o){var r=ft.hasOwnProperty(t)?ft[t]:null;(null!==r?0===r.type:!o&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,o)&&(n=null),o||null===r?function(e){return!!ct.call(pt,e)||!ct.call(dt,e)&&(ut.test(e)?pt[e]=!0:(dt[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,o=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,o?e.setAttributeNS(o,t,n):e.setAttribute(t,n))))}function yt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function bt(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function wt(e,t){var n=null==t.defaultValue?"":t.defaultValue,o=null!=t.checked?t.checked:t.defaultChecked;n=yt(null!=t.value?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Et(e,t){null!=(t=t.checked)&&vt(e,"checked",t,!1)}function Ct(e,t){Et(e,t);var n=yt(t.value),o=t.type;if(null!=n)"number"===o?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===o||"reset"===o)return void e.removeAttribute("value");t.hasOwnProperty("value")?Tt(e,t.type,n):t.hasOwnProperty("defaultValue")&&Tt(e,t.type,yt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function xt(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!("submit"!==o&&"reset"!==o||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Tt(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){ft[e]=new ht(e,1,!1,e.toLowerCase(),null)});var kt={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function St(e,t,n){return(e=le.getPooled(kt.change,e,t,n)).type="change",_e(n),q(e),e}var Dt=null,Mt=null;function Rt(e){L(e)}function _t(e){if(We(I(e)))return e}function Lt(e,t){if("change"===e)return t}var Pt=!1;function Ot(){Dt&&(Dt.detachEvent("onpropertychange",Nt),Mt=Dt=null)}function Nt(e){"value"===e.propertyName&&_t(Mt)&&Ae(Rt,e=St(Mt,e,ze(e)))}function Ft(e,t,n){"focus"===e?(Ot(),Mt=n,(Dt=t).attachEvent("onpropertychange",Nt)):"blur"===e&&Ot()}function At(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return _t(Mt)}function It(e,t){if("click"===e)return _t(t)}function Ht(e,t){if("input"===e||"change"===e)return _t(t)}G&&(Pt=je("input")&&(!document.documentMode||9<document.documentMode));var zt={eventTypes:kt,_isInputEventSupported:Pt,extractEvents:function(e,t,n,o){var r=t?I(t):window,i=void 0,a=void 0,s=r.nodeName&&r.nodeName.toLowerCase();if("select"===s||"input"===s&&"file"===r.type?i=Lt:He(r)?Pt?i=Ht:(i=At,a=Ft):(s=r.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===r.type||"radio"===r.type)&&(i=It),i&&(i=i(e,t)))return St(i,n,o);a&&a(e,r,t),"blur"===e&&(e=r._wrapperState)&&e.controlled&&"number"===r.type&&Tt(r,"number",r.value)}},jt=le.extend({view:null,detail:null}),Bt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ut(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Bt[e])&&!!t[e]}function Wt(){return Ut}var qt=0,Gt=0,Vt=!1,Yt=!1,$t=jt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Wt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,Vt?"mousemove"===e.type?e.screenX-t:0:(Vt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Gt;return Gt=e.screenY,Yt?"mousemove"===e.type?e.screenY-t:0:(Yt=!0,0)}}),Xt=$t.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Kt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Qt={eventTypes:Kt,extractEvents:function(e,t,n,o){var r="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(r&&(n.relatedTarget||n.fromElement)||!i&&!r)return null;if(r=o.window===o?o:(r=o.ownerDocument)?r.defaultView||r.parentWindow:window,i?(i=t,t=(t=n.relatedTarget||n.toElement)?F(t):null):i=null,i===t)return null;var a=void 0,s=void 0,l=void 0,u=void 0;"mouseout"===e||"mouseover"===e?(a=$t,s=Kt.mouseLeave,l=Kt.mouseEnter,u="mouse"):"pointerout"!==e&&"pointerover"!==e||(a=Xt,s=Kt.pointerLeave,l=Kt.pointerEnter,u="pointer");var c=null==i?r:I(i);if(r=null==t?r:I(t),(e=a.getPooled(s,i,n,o)).type=u+"leave",e.target=c,e.relatedTarget=r,(n=a.getPooled(l,t,n,o)).type=u+"enter",n.target=r,n.relatedTarget=c,o=t,i&&o)e:{for(r=o,u=0,a=t=i;a;a=z(a))u++;for(a=0,l=r;l;l=z(l))a++;for(;0<u-a;)t=z(t),u--;for(;0<a-u;)r=z(r),a--;for(;u--;){if(t===r||t===r.alternate)break e;t=z(t),r=z(r)}t=null}else t=null;for(r=t,t=[];i&&i!==r&&(null===(u=i.alternate)||u!==r);)t.push(i),i=z(i);for(i=[];o&&o!==r&&(null===(u=o.alternate)||u!==r);)i.push(o),o=z(o);for(o=0;o<t.length;o++)U(t[o],"bubbled",e);for(o=i.length;0<o--;)U(i[o],"captured",n);return[e,n]}};function Jt(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var Zt=Object.prototype.hasOwnProperty;function en(e,t){if(Jt(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(o=0;o<n.length;o++)if(!Zt.call(t,n[o])||!Jt(e[n[o]],t[n[o]]))return!1;return!0}function tn(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function nn(e){2!==tn(e)&&a("188")}function on(e){if(!(e=function(e){var t=e.alternate;if(!t)return 3===(t=tn(e))&&a("188"),1===t?null:e;for(var n=e,o=t;;){var r=n.return,i=r?r.alternate:null;if(!r||!i)break;if(r.child===i.child){for(var s=r.child;s;){if(s===n)return nn(r),e;if(s===o)return nn(r),t;s=s.sibling}a("188")}if(n.return!==o.return)n=r,o=i;else{s=!1;for(var l=r.child;l;){if(l===n){s=!0,n=r,o=i;break}if(l===o){s=!0,o=r,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,o=r;break}if(l===o){s=!0,o=i,n=r;break}l=l.sibling}s||a("189")}}n.alternate!==o&&a("190")}return 3!==n.tag&&a("188"),n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var rn=le.extend({animationName:null,elapsedTime:null,pseudoElement:null}),an=le.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),sn=jt.extend({relatedTarget:null});function ln(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var un={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},cn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},dn=jt.extend({key:function(e){if(e.key){var t=un[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=ln(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?cn[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Wt,charCode:function(e){return"keypress"===e.type?ln(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?ln(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),pn=$t.extend({dataTransfer:null}),hn=jt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Wt}),fn=le.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),mn=$t.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),gn=[["abort","abort"],[Q,"animationEnd"],[J,"animationIteration"],[Z,"animationStart"],["canplay","canPlay"],["canplaythrough","canPlayThrough"],["drag","drag"],["dragenter","dragEnter"],["dragexit","dragExit"],["dragleave","dragLeave"],["dragover","dragOver"],["durationchange","durationChange"],["emptied","emptied"],["encrypted","encrypted"],["ended","ended"],["error","error"],["gotpointercapture","gotPointerCapture"],["load","load"],["loadeddata","loadedData"],["loadedmetadata","loadedMetadata"],["loadstart","loadStart"],["lostpointercapture","lostPointerCapture"],["mousemove","mouseMove"],["mouseout","mouseOut"],["mouseover","mouseOver"],["playing","playing"],["pointermove","pointerMove"],["pointerout","pointerOut"],["pointerover","pointerOver"],["progress","progress"],["scroll","scroll"],["seeking","seeking"],["stalled","stalled"],["suspend","suspend"],["timeupdate","timeUpdate"],["toggle","toggle"],["touchmove","touchMove"],[ee,"transitionEnd"],["waiting","waiting"],["wheel","wheel"]],vn={},yn={};function bn(e,t){var n=e[0],o="on"+((e=e[1])[0].toUpperCase()+e.slice(1));t={phasedRegistrationNames:{bubbled:o,captured:o+"Capture"},dependencies:[n],isInteractive:t},vn[e]=t,yn[n]=t}[["blur","blur"],["cancel","cancel"],["click","click"],["close","close"],["contextmenu","contextMenu"],["copy","copy"],["cut","cut"],["auxclick","auxClick"],["dblclick","doubleClick"],["dragend","dragEnd"],["dragstart","dragStart"],["drop","drop"],["focus","focus"],["input","input"],["invalid","invalid"],["keydown","keyDown"],["keypress","keyPress"],["keyup","keyUp"],["mousedown","mouseDown"],["mouseup","mouseUp"],["paste","paste"],["pause","pause"],["play","play"],["pointercancel","pointerCancel"],["pointerdown","pointerDown"],["pointerup","pointerUp"],["ratechange","rateChange"],["reset","reset"],["seeked","seeked"],["submit","submit"],["touchcancel","touchCancel"],["touchend","touchEnd"],["touchstart","touchStart"],["volumechange","volumeChange"]].forEach(function(e){bn(e,!0)}),gn.forEach(function(e){bn(e,!1)});var wn={eventTypes:vn,isInteractiveTopLevelEventType:function(e){return void 0!==(e=yn[e])&&!0===e.isInteractive},extractEvents:function(e,t,n,o){var r=yn[e];if(!r)return null;switch(e){case"keypress":if(0===ln(n))return null;case"keydown":case"keyup":e=dn;break;case"blur":case"focus":e=sn;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=$t;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=pn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=hn;break;case Q:case J:case Z:e=rn;break;case ee:e=fn;break;case"scroll":e=jt;break;case"wheel":e=mn;break;case"copy":case"cut":case"paste":e=an;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Xt;break;default:e=le}return q(t=e.getPooled(r,t,n,o)),t}},En=wn.isInteractiveTopLevelEventType,Cn=[];function xn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var o;for(o=n;o.return;)o=o.return;if(!(o=3!==o.tag?null:o.stateNode.containerInfo))break;e.ancestors.push(n),n=F(o)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var r=ze(e.nativeEvent);o=e.topLevelType;for(var i=e.nativeEvent,a=null,s=0;s<v.length;s++){var l=v[s];l&&(l=l.extractEvents(o,t,i,r))&&(a=k(a,l))}L(a)}}var Tn=!0;function kn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!1)}function Sn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!0)}function Dn(e,t){Oe(Mn,e,t)}function Mn(e,t){if(Tn){var n=ze(t);if(null===(n=F(n))||"number"!=typeof n.tag||2===tn(n)||(n=null),Cn.length){var o=Cn.pop();o.topLevelType=e,o.nativeEvent=t,o.targetInst=n,e=o}else e={topLevelType:e,nativeEvent:t,targetInst:n,ancestors:[]};try{Ae(xn,e)}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>Cn.length&&Cn.push(e)}}}var Rn={},_n=0,Ln="_reactListenersID"+(""+Math.random()).slice(2);function Pn(e){return Object.prototype.hasOwnProperty.call(e,Ln)||(e[Ln]=_n++,Rn[e[Ln]]={}),Rn[e[Ln]]}function On(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Nn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Fn(e,t){var n,o=Nn(e);for(e=0;o;){if(3===o.nodeType){if(n=e+o.textContent.length,e<=t&&n>=t)return{node:o,offset:t-e};e=n}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Nn(o)}}function An(){for(var e=window,t=On();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=On((e=t.contentWindow).document)}return t}function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function Hn(e){var t=An(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(n.ownerDocument.documentElement,n)){if(null!==o&&In(n))if(t=o.start,void 0===(e=o.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var r=n.textContent.length,i=Math.min(o.start,r);o=void 0===o.end?i:Math.min(o.end,r),!e.extend&&i>o&&(r=o,o=i,i=r),r=Fn(n,i);var a=Fn(n,o);r&&a&&(1!==e.rangeCount||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(r.node,r.offset),e.removeAllRanges(),i>o?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var zn=G&&"documentMode"in document&&11>=document.documentMode,jn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Bn=null,Un=null,Wn=null,qn=!1;function Gn(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qn||null==Bn||Bn!==On(n)?null:("selectionStart"in(n=Bn)&&In(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Wn&&en(Wn,n)?null:(Wn=n,(e=le.getPooled(jn.select,Un,e,t)).type="select",e.target=Bn,q(e),e))}var Vn={eventTypes:jn,extractEvents:function(e,t,n,o){var r,i=o.window===o?o.document:9===o.nodeType?o:o.ownerDocument;if(!(r=!i)){e:{i=Pn(i),r=w.onSelect;for(var a=0;a<r.length;a++){var s=r[a];if(!i.hasOwnProperty(s)||!i[s]){i=!1;break e}}i=!0}r=!i}if(r)return null;switch(i=t?I(t):window,e){case"focus":(He(i)||"true"===i.contentEditable)&&(Bn=i,Un=t,Wn=null);break;case"blur":Wn=Un=Bn=null;break;case"mousedown":qn=!0;break;case"contextmenu":case"mouseup":case"dragend":return qn=!1,Gn(n,o);case"selectionchange":if(zn)break;case"keydown":case"keyup":return Gn(n,o)}return null}};function Yn(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return o.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(t.children))&&(e.children=t),e}function $n(e,t,n,o){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&o&&(e[n].defaultSelected=!0)}else{for(n=""+yt(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(o&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function Xn(e,t){return null!=t.dangerouslySetInnerHTML&&a("91"),r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Kn(e,t){var n=t.value;null==n&&(n=t.defaultValue,null!=(t=t.children)&&(null!=n&&a("92"),Array.isArray(t)&&(1>=t.length||a("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:yt(n)}}function Qn(e,t){var n=yt(t.value),o=yt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=o&&(e.defaultValue=""+o)}function Jn(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}R.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),E=H,C=A,x=I,R.injectEventPluginsByName({SimpleEventPlugin:wn,EnterLeaveEventPlugin:Qt,ChangeEventPlugin:zt,SelectEventPlugin:Vn,BeforeInputEventPlugin:ke});var Zn={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function eo(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function to(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?eo(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var no=void 0,oo=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==Zn.svg||"innerHTML"in e)e.innerHTML=t;else{for((no=no||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=no.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ro(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var io={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ao=["Webkit","ms","Moz","O"];function so(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||io.hasOwnProperty(e)&&io[e]?(""+t).trim():t+"px"}function lo(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var o=0===n.indexOf("--"),r=so(n,t[n],o);"float"===n&&(n="cssFloat"),o?e.setProperty(n,r):e[n]=r}}Object.keys(io).forEach(function(e){ao.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),io[t]=io[e]})});var uo=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function co(e,t){t&&(uo[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&a("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&a("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||a("61")),null!=t.style&&"object"!=typeof t.style&&a("62",""))}function po(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function ho(e,t){var n=Pn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=w[t];for(var o=0;o<t.length;o++){var r=t[o];if(!n.hasOwnProperty(r)||!n[r]){switch(r){case"scroll":Sn("scroll",e);break;case"focus":case"blur":Sn("focus",e),Sn("blur",e),n.blur=!0,n.focus=!0;break;case"cancel":case"close":je(r)&&Sn(r,e);break;case"invalid":case"submit":case"reset":break;default:-1===te.indexOf(r)&&kn(r,e)}n[r]=!0}}}function fo(){}var mo=null,go=null;function vo(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function yo(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var bo="function"==typeof setTimeout?setTimeout:void 0,wo="function"==typeof clearTimeout?clearTimeout:void 0,Eo=i.unstable_scheduleCallback,Co=i.unstable_cancelCallback;function xo(e){for(e=e.nextSibling;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}function To(e){for(e=e.firstChild;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}new Set;var ko=[],So=-1;function Do(e){0>So||(e.current=ko[So],ko[So]=null,So--)}function Mo(e,t){ko[++So]=e.current,e.current=t}var Ro={},_o={current:Ro},Lo={current:!1},Po=Ro;function Oo(e,t){var n=e.type.contextTypes;if(!n)return Ro;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var r,i={};for(r in n)i[r]=t[r];return o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function No(e){return null!=(e=e.childContextTypes)}function Fo(e){Do(Lo),Do(_o)}function Ao(e){Do(Lo),Do(_o)}function Io(e,t,n){_o.current!==Ro&&a("168"),Mo(_o,t),Mo(Lo,n)}function Ho(e,t,n){var o=e.stateNode;if(e=t.childContextTypes,"function"!=typeof o.getChildContext)return n;for(var i in o=o.getChildContext())i in e||a("108",st(t)||"Unknown",i);return r({},n,o)}function zo(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ro,Po=_o.current,Mo(_o,t),Mo(Lo,Lo.current),!0}function jo(e,t,n){var o=e.stateNode;o||a("169"),n?(t=Ho(e,t,Po),o.__reactInternalMemoizedMergedChildContext=t,Do(Lo),Do(_o),Mo(_o,t)):Do(Lo),Mo(Lo,n)}var Bo=null,Uo=null;function Wo(e){return function(t){try{return e(t)}catch(e){}}}function qo(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Go(e,t,n,o){return new qo(e,t,n,o)}function Vo(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Yo(e,t){var n=e.alternate;return null===n?((n=Go(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.contextDependencies=e.contextDependencies,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $o(e,t,n,o,r,i){var s=2;if(o=e,"function"==typeof e)Vo(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case Xe:return Xo(n.children,r,i,t);case et:return Ko(n,3|r,i,t);case Ke:return Ko(n,2|r,i,t);case Qe:return(e=Go(12,n,t,4|r)).elementType=Qe,e.type=Qe,e.expirationTime=i,e;case nt:return(e=Go(13,n,t,r)).elementType=nt,e.type=nt,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case Je:s=10;break e;case Ze:s=9;break e;case tt:s=11;break e;case ot:s=14;break e;case rt:s=16,o=null;break e}a("130",null==e?e:typeof e,"")}return(t=Go(s,n,t,r)).elementType=e,t.type=o,t.expirationTime=i,t}function Xo(e,t,n,o){return(e=Go(7,e,o,t)).expirationTime=n,e}function Ko(e,t,n,o){return e=Go(8,e,o,t),t=0==(1&t)?Ke:et,e.elementType=t,e.type=t,e.expirationTime=n,e}function Qo(e,t,n){return(e=Go(6,e,null,t)).expirationTime=n,e}function Jo(e,t,n){return(t=Go(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zo(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:n<t?e.earliestPendingTime=t:e.latestPendingTime>t&&(e.latestPendingTime=t),nr(t,e)}function er(e,t){e.didError=!1,e.latestPingedTime>=t&&(e.latestPingedTime=0);var n=e.earliestPendingTime,o=e.latestPendingTime;n===t?e.earliestPendingTime=o===t?e.latestPendingTime=0:o:o===t&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,o=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=t:n<t?e.earliestSuspendedTime=t:o>t&&(e.latestSuspendedTime=t),nr(t,e)}function tr(e,t){var n=e.earliestPendingTime;return n>t&&(t=n),(e=e.earliestSuspendedTime)>t&&(t=e),t}function nr(e,t){var n=t.earliestSuspendedTime,o=t.latestSuspendedTime,r=t.earliestPendingTime,i=t.latestPingedTime;0===(r=0!==r?r:i)&&(0===e||o<e)&&(r=o),0!==(e=r)&&n>e&&(e=n),t.nextExpirationTimeToWorkOn=r,t.expirationTime=e}function or(e,t){if(e&&e.defaultProps)for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var rr=(new o.Component).refs;function ir(e,t,n,o){n=null==(n=n(o,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,null!==(o=e.updateQueue)&&0===e.expirationTime&&(o.baseState=n)}var ar={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===tn(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.tag=Wi,r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Es(),o=Xi(n=$a(n,e));o.tag=qi,null!=t&&(o.callback=t),Ua(),Qi(e,o),Qa(e,n)}};function sr(e,t,n,o,r,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(o,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!en(n,o)||!en(r,i))}function lr(e,t,n){var o=!1,r=Ro,i=t.contextType;return"object"==typeof i&&null!==i?i=Bi(i):(r=No(t)?Po:_o.current,i=(o=null!=(o=t.contextTypes))?Oo(e,r):Ro),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ar,e.stateNode=t,t._reactInternalFiber=e,o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=i),t}function ur(e,t,n,o){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,o),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,o),t.state!==e&&ar.enqueueReplaceState(t,t.state,null)}function cr(e,t,n,o){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=rr;var i=t.contextType;"object"==typeof i&&null!==i?r.context=Bi(i):(i=No(t)?Po:_o.current,r.context=Oo(e,i)),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState),"function"==typeof(i=t.getDerivedStateFromProps)&&(ir(e,t,i,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&ar.enqueueReplaceState(r,r.state,null),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState)),"function"==typeof r.componentDidMount&&(e.effectTag|=4)}var dr=Array.isArray;function pr(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var o=void 0;n&&(1!==n.tag&&a("309"),o=n.stateNode),o||a("147",e);var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:((t=function(e){var t=o.refs;t===rr&&(t=o.refs={}),null===e?delete t[r]:t[r]=e})._stringRef=r,t)}"string"!=typeof e&&a("284"),n._owner||a("290",e)}return e}function hr(e,t){"textarea"!==e.type&&a("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function fr(e){function t(t,n){if(e){var o=t.lastEffect;null!==o?(o.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,o){if(!e)return null;for(;null!==o;)t(n,o),o=o.sibling;return null}function o(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t,n){return(e=Yo(e,t)).index=0,e.sibling=null,e}function i(t,n,o){return t.index=o,e?null!==(o=t.alternate)?(o=o.index)<n?(t.effectTag=2,n):o:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,o){return null===t||6!==t.tag?((t=Qo(n,e.mode,o)).return=e,t):((t=r(t,n)).return=e,t)}function u(e,t,n,o){return null!==t&&t.elementType===n.type?((o=r(t,n.props)).ref=pr(e,t,n),o.return=e,o):((o=$o(n.type,n.key,n.props,null,e.mode,o)).ref=pr(e,t,n),o.return=e,o)}function c(e,t,n,o){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Jo(n,e.mode,o)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function d(e,t,n,o,i){return null===t||7!==t.tag?((t=Xo(n,e.mode,o,i)).return=e,t):((t=r(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Qo(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Ye:return(n=$o(t.type,t.key,t.props,null,e.mode,n)).ref=pr(e,null,t),n.return=e,n;case $e:return(t=Jo(t,e.mode,n)).return=e,t}if(dr(t)||at(t))return(t=Xo(t,e.mode,n,null)).return=e,t;hr(e,t)}return null}function h(e,t,n,o){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:l(e,t,""+n,o);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Ye:return n.key===r?n.type===Xe?d(e,t,n.props.children,o,r):u(e,t,n,o):null;case $e:return n.key===r?c(e,t,n,o):null}if(dr(n)||at(n))return null!==r?null:d(e,t,n,o,null);hr(e,n)}return null}function f(e,t,n,o,r){if("string"==typeof o||"number"==typeof o)return l(t,e=e.get(n)||null,""+o,r);if("object"==typeof o&&null!==o){switch(o.$$typeof){case Ye:return e=e.get(null===o.key?n:o.key)||null,o.type===Xe?d(t,e,o.props.children,r,o.key):u(t,e,o,r);case $e:return c(t,e=e.get(null===o.key?n:o.key)||null,o,r)}if(dr(o)||at(o))return d(t,e=e.get(n)||null,o,r,null);hr(t,o)}return null}function m(r,a,s,l){for(var u=null,c=null,d=a,m=a=0,g=null;null!==d&&m<s.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=h(r,d,s[m],l);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(r,d),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===s.length)return n(r,d),u;if(null===d){for(;m<s.length;m++)(d=p(r,s[m],l))&&(a=i(d,a,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=o(r,d);m<s.length;m++)(g=f(d,r,m,s[m],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach(function(e){return t(r,e)}),u}function g(r,s,l,u){var c=at(l);"function"!=typeof c&&a("150"),null==(l=c.call(l))&&a("151");for(var d=c=null,m=s,g=s=0,v=null,y=l.next();null!==m&&!y.done;g++,y=l.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=h(r,m,y.value,u);if(null===b){m||(m=v);break}e&&m&&null===b.alternate&&t(r,m),s=i(b,s,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(r,m),c;if(null===m){for(;!y.done;g++,y=l.next())null!==(y=p(r,y.value,u))&&(s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return c}for(m=o(r,m);!y.done;g++,y=l.next())null!==(y=f(m,r,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach(function(e){return t(r,e)}),c}return function(e,o,i,l){var u="object"==typeof i&&null!==i&&i.type===Xe&&null===i.key;u&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case Ye:e:{for(c=i.key,u=o;null!==u;){if(u.key===c){if(7===u.tag?i.type===Xe:u.elementType===i.type){n(e,u.sibling),(o=r(u,i.type===Xe?i.props.children:i.props)).ref=pr(e,u,i),o.return=e,e=o;break e}n(e,u);break}t(e,u),u=u.sibling}i.type===Xe?((o=Xo(i.props.children,e.mode,l,i.key)).return=e,e=o):((l=$o(i.type,i.key,i.props,null,e.mode,l)).ref=pr(e,o,i),l.return=e,e=l)}return s(e);case $e:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(e,o.sibling),(o=r(o,i.children||[])).return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}(o=Jo(i,e.mode,l)).return=e,e=o}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==o&&6===o.tag?(n(e,o.sibling),(o=r(o,i)).return=e,e=o):(n(e,o),(o=Qo(i,e.mode,l)).return=e,e=o),s(e);if(dr(i))return m(e,o,i,l);if(at(i))return g(e,o,i,l);if(c&&hr(e,i),void 0===i&&!u)switch(e.tag){case 1:case 0:a("152",(l=e.type).displayName||l.name||"Component")}return n(e,o)}}var mr=fr(!0),gr=fr(!1),vr={},yr={current:vr},br={current:vr},wr={current:vr};function Er(e){return e===vr&&a("174"),e}function Cr(e,t){Mo(wr,t),Mo(br,e),Mo(yr,vr);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:to(null,"");break;default:t=to(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Do(yr),Mo(yr,t)}function xr(e){Do(yr),Do(br),Do(wr)}function Tr(e){Er(wr.current);var t=Er(yr.current),n=to(t,e.type);t!==n&&(Mo(br,e),Mo(yr,n))}function kr(e){br.current===e&&(Do(yr),Do(br))}var Sr=0,Dr=2,Mr=4,Rr=8,_r=16,Lr=32,Pr=64,Or=128,Nr=qe.ReactCurrentDispatcher,Fr=0,Ar=null,Ir=null,Hr=null,zr=null,jr=null,Br=null,Ur=0,Wr=null,qr=0,Gr=!1,Vr=null,Yr=0;function $r(){a("321")}function Xr(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Jt(e[n],t[n]))return!1;return!0}function Kr(e,t,n,o,r,i){if(Fr=i,Ar=t,Hr=null!==e?e.memoizedState:null,Nr.current=null===Hr?ui:ci,t=n(o,r),Gr){do{Gr=!1,Yr+=1,Hr=null!==e?e.memoizedState:null,Br=zr,Wr=jr=Ir=null,Nr.current=ci,t=n(o,r)}while(Gr);Vr=null,Yr=0}return Nr.current=li,(e=Ar).memoizedState=zr,e.expirationTime=Ur,e.updateQueue=Wr,e.effectTag|=qr,e=null!==Ir&&null!==Ir.next,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,e&&a("300"),t}function Qr(){Nr.current=li,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,Gr=!1,Vr=null,Yr=0}function Jr(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===jr?zr=jr=e:jr=jr.next=e,jr}function Zr(){if(null!==Br)Br=(jr=Br).next,Hr=null!==(Ir=Hr)?Ir.next:null;else{null===Hr&&a("310");var e={memoizedState:(Ir=Hr).memoizedState,baseState:Ir.baseState,queue:Ir.queue,baseUpdate:Ir.baseUpdate,next:null};jr=null===jr?zr=e:jr.next=e,Hr=Ir.next}return jr}function ei(e,t){return"function"==typeof t?t(e):t}function ti(e){var t=Zr(),n=t.queue;if(null===n&&a("311"),n.lastRenderedReducer=e,0<Yr){var o=n.dispatch;if(null!==Vr){var r=Vr.get(n);if(void 0!==r){Vr.delete(n);var i=t.memoizedState;do{i=e(i,r.action),r=r.next}while(null!==r);return Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate===n.last&&(t.baseState=i),n.lastRenderedState=i,[i,o]}}return[t.memoizedState,o]}o=n.last;var s=t.baseUpdate;if(i=t.baseState,null!==s?(null!==o&&(o.next=null),o=s.next):o=null!==o?o.next:null,null!==o){var l=r=null,u=o,c=!1;do{var d=u.expirationTime;d<Fr?(c||(c=!0,l=s,r=i),d>Ur&&(Ur=d)):i=u.eagerReducer===e?u.eagerState:e(i,u.action),s=u,u=u.next}while(null!==u&&u!==o);c||(l=s,r=i),Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate=l,t.baseState=r,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function ni(e,t,n,o){return e={tag:e,create:t,destroy:n,deps:o,next:null},null===Wr?(Wr={lastEffect:null}).lastEffect=e.next=e:null===(t=Wr.lastEffect)?Wr.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Wr.lastEffect=e),e}function oi(e,t,n,o){var r=Jr();qr|=e,r.memoizedState=ni(t,n,void 0,void 0===o?null:o)}function ri(e,t,n,o){var r=Zr();o=void 0===o?null:o;var i=void 0;if(null!==Ir){var a=Ir.memoizedState;if(i=a.destroy,null!==o&&Xr(o,a.deps))return void ni(Sr,n,i,o)}qr|=e,r.memoizedState=ni(t,n,i,o)}function ii(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ai(){}function si(e,t,n){25>Yr||a("301");var o=e.alternate;if(e===Ar||null!==o&&o===Ar)if(Gr=!0,e={expirationTime:Fr,action:n,eagerReducer:null,eagerState:null,next:null},null===Vr&&(Vr=new Map),void 0===(n=Vr.get(t)))Vr.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{Ua();var r=Es(),i={expirationTime:r=$a(r,e),action:n,eagerReducer:null,eagerState:null,next:null},s=t.last;if(null===s)i.next=i;else{var l=s.next;null!==l&&(i.next=l),s.next=i}if(t.last=i,0===e.expirationTime&&(null===o||0===o.expirationTime)&&null!==(o=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=o(u,n);if(i.eagerReducer=o,i.eagerState=c,Jt(c,u))return}catch(e){}Qa(e,r)}}var li={readContext:Bi,useCallback:$r,useContext:$r,useEffect:$r,useImperativeHandle:$r,useLayoutEffect:$r,useMemo:$r,useReducer:$r,useRef:$r,useState:$r,useDebugValue:$r},ui={readContext:Bi,useCallback:function(e,t){return Jr().memoizedState=[e,void 0===t?null:t],e},useContext:Bi,useEffect:function(e,t){return oi(516,Or|Pr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,oi(4,Mr|Lr,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return oi(4,Mr|Lr,e,t)},useMemo:function(e,t){var n=Jr();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=Jr();return t=void 0!==n?n(t):t,o.memoizedState=o.baseState=t,e=(e=o.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=si.bind(null,Ar,e),[o.memoizedState,e]},useRef:function(e){return e={current:e},Jr().memoizedState=e},useState:function(e){var t=Jr();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ei,lastRenderedState:e}).dispatch=si.bind(null,Ar,e),[t.memoizedState,e]},useDebugValue:ai},ci={readContext:Bi,useCallback:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(n.memoizedState=[e,t],e)},useContext:Bi,useEffect:function(e,t){return ri(516,Or|Pr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,Mr|Lr,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ri(4,Mr|Lr,e,t)},useMemo:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ti,useRef:function(){return Zr().memoizedState},useState:function(e){return ti(ei)},useDebugValue:ai},di=null,pi=null,hi=!1;function fi(e,t){var n=Go(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function mi(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function gi(e){if(hi){var t=pi;if(t){var n=t;if(!mi(e,t)){if(!(t=xo(n))||!mi(e,t))return e.effectTag|=2,hi=!1,void(di=e);fi(di,n)}di=e,pi=To(t)}else e.effectTag|=2,hi=!1,di=e}}function vi(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;di=e}function yi(e){if(e!==di)return!1;if(!hi)return vi(e),hi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!yo(t,e.memoizedProps))for(t=pi;t;)fi(e,t),t=xo(t);return vi(e),pi=di?xo(e.stateNode):null,!0}function bi(){pi=di=null,hi=!1}var wi=qe.ReactCurrentOwner,Ei=!1;function Ci(e,t,n,o){t.child=null===e?gr(t,null,n,o):mr(t,e.child,n,o)}function xi(e,t,n,o,r){n=n.render;var i=t.ref;return ji(t,r),o=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,o,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Pi(e,t,r))}function Ti(e,t,n,o,r,i){if(null===e){var a=n.type;return"function"!=typeof a||Vo(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=$o(n.type,null,o,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ki(e,t,a,o,r,i))}return a=e.child,r<i&&(r=a.memoizedProps,(n=null!==(n=n.compare)?n:en)(r,o)&&e.ref===t.ref)?Pi(e,t,i):(t.effectTag|=1,(e=Yo(a,o)).ref=t.ref,e.return=t,t.child=e)}function ki(e,t,n,o,r,i){return null!==e&&en(e.memoizedProps,o)&&e.ref===t.ref&&(Ei=!1,r<i)?Pi(e,t,i):Di(e,t,n,o,i)}function Si(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Di(e,t,n,o,r){var i=No(n)?Po:_o.current;return i=Oo(t,i),ji(t,r),n=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Pi(e,t,r))}function Mi(e,t,n,o,r){if(No(n)){var i=!0;zo(t)}else i=!1;if(ji(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),lr(t,n,o),cr(t,n,o,r),o=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,u=n.contextType;"object"==typeof u&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Po:_o.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate;d||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Vi=!1;var p=t.memoizedState;l=a.state=p;var h=t.updateQueue;null!==h&&(ta(t,h,o,a,r),l=t.memoizedState),s!==o||p!==l||Lo.current||Vi?("function"==typeof c&&(ir(t,n,c,o),l=t.memoizedState),(s=Vi||sr(t,n,s,o,p,l,u))?(d||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=o,t.memoizedState=l),a.props=o,a.state=l,a.context=u,o=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),o=!1)}else a=t.stateNode,s=t.memoizedProps,a.props=t.type===t.elementType?s:or(t.type,s),l=a.context,"object"==typeof(u=n.contextType)&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Po:_o.current),(d="function"==typeof(c=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Vi=!1,l=t.memoizedState,p=a.state=l,null!==(h=t.updateQueue)&&(ta(t,h,o,a,r),p=t.memoizedState),s!==o||l!==p||Lo.current||Vi?("function"==typeof c&&(ir(t,n,c,o),p=t.memoizedState),(c=Vi||sr(t,n,s,o,l,p,u))?(d||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(o,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(o,p,u)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=o,t.memoizedState=p),a.props=o,a.state=p,a.context=u,o=c):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),o=!1);return Ri(e,t,n,o,i,r)}function Ri(e,t,n,o,r,i){Si(e,t);var a=0!=(64&t.effectTag);if(!o&&!a)return r&&jo(t,n,!1),Pi(e,t,i);o=t.stateNode,wi.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:o.render();return t.effectTag|=1,null!==e&&a?(t.child=mr(t,e.child,null,i),t.child=mr(t,null,s,i)):Ci(e,t,s,i),t.memoizedState=o.state,r&&jo(t,n,!0),t.child}function _i(e){var t=e.stateNode;t.pendingContext?Io(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Io(0,t.context,!1),Cr(e,t.containerInfo)}function Li(e,t,n){var o=t.mode,r=t.pendingProps,i=t.memoizedState;if(0==(64&t.effectTag)){i=null;var a=!1}else i={timedOutAt:null!==i?i.timedOutAt:0},a=!0,t.effectTag&=-65;if(null===e)if(a){var s=r.fallback;e=Xo(null,o,0,null),0==(1&t.mode)&&(e.child=null!==t.memoizedState?t.child.child:t.child),o=Xo(s,o,n,null),e.sibling=o,(n=e).return=o.return=t}else n=o=gr(t,null,r.children,n);else null!==e.memoizedState?(s=(o=e.child).sibling,a?(n=r.fallback,r=Yo(o,o.pendingProps),0==(1&t.mode)&&((a=null!==t.memoizedState?t.child.child:t.child)!==o.child&&(r.child=a)),o=r.sibling=Yo(s,n,s.expirationTime),n=r,r.childExpirationTime=0,n.return=o.return=t):n=o=mr(t,o.child,r.children,n)):(s=e.child,a?(a=r.fallback,(r=Xo(null,o,0,null)).child=s,0==(1&t.mode)&&(r.child=null!==t.memoizedState?t.child.child:t.child),(o=r.sibling=Xo(a,o,n,null)).effectTag|=2,n=r,r.childExpirationTime=0,n.return=o.return=t):o=n=mr(t,s,r.children,n)),t.stateNode=e.stateNode;return t.memoizedState=i,t.child=n,o}function Pi(e,t,n){if(null!==e&&(t.contextDependencies=e.contextDependencies),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child&&a("153"),null!==t.child){for(n=Yo(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Yo(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function Oi(e,t,n){var o=t.expirationTime;if(null!==e){if(e.memoizedProps!==t.pendingProps||Lo.current)Ei=!0;else if(o<n){switch(Ei=!1,t.tag){case 3:_i(t),bi();break;case 5:Tr(t);break;case 1:No(t.type)&&zo(t);break;case 4:Cr(t,t.stateNode.containerInfo);break;case 10:Hi(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(o=t.child.childExpirationTime)&&o>=n?Li(e,t,n):null!==(t=Pi(e,t,n))?t.sibling:null}return Pi(e,t,n)}}else Ei=!1;switch(t.expirationTime=0,t.tag){case 2:o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps;var r=Oo(t,_o.current);if(ji(t,n),r=Kr(null,t,o,e,r,n),t.effectTag|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,Qr(),No(o)){var i=!0;zo(t)}else i=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null;var s=o.getDerivedStateFromProps;"function"==typeof s&&ir(t,o,s,e),r.updater=ar,t.stateNode=r,r._reactInternalFiber=t,cr(t,o,e,n),t=Ri(null,t,o,!0,i,n)}else t.tag=0,Ci(null,t,r,n),t=t.child;return t;case 16:switch(r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),i=t.pendingProps,e=function(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then(function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)},function(t){0===e._status&&(e._status=2,e._result=t)}),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}(r),t.type=e,r=t.tag=function(e){if("function"==typeof e)return Vo(e)?1:0;if(null!=e){if((e=e.$$typeof)===tt)return 11;if(e===ot)return 14}return 2}(e),i=or(e,i),s=void 0,r){case 0:s=Di(null,t,e,i,n);break;case 1:s=Mi(null,t,e,i,n);break;case 11:s=xi(null,t,e,i,n);break;case 14:s=Ti(null,t,e,or(e.type,i),o,n);break;default:a("306",e,"")}return s;case 0:return o=t.type,r=t.pendingProps,Di(e,t,o,r=t.elementType===o?r:or(o,r),n);case 1:return o=t.type,r=t.pendingProps,Mi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 3:return _i(t),null===(o=t.updateQueue)&&a("282"),r=null!==(r=t.memoizedState)?r.element:null,ta(t,o,t.pendingProps,null,n),(o=t.memoizedState.element)===r?(bi(),t=Pi(e,t,n)):(r=t.stateNode,(r=(null===e||null===e.child)&&r.hydrate)&&(pi=To(t.stateNode.containerInfo),di=t,r=hi=!0),r?(t.effectTag|=2,t.child=gr(t,null,o,n)):(Ci(e,t,o,n),bi()),t=t.child),t;case 5:return Tr(t),null===e&&gi(t),o=t.type,r=t.pendingProps,i=null!==e?e.memoizedProps:null,s=r.children,yo(o,r)?s=null:null!==i&&yo(o,i)&&(t.effectTag|=16),Si(e,t),1!==n&&1&t.mode&&r.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ci(e,t,s,n),t=t.child),t;case 6:return null===e&&gi(t),null;case 13:return Li(e,t,n);case 4:return Cr(t,t.stateNode.containerInfo),o=t.pendingProps,null===e?t.child=mr(t,null,o,n):Ci(e,t,o,n),t.child;case 11:return o=t.type,r=t.pendingProps,xi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 7:return Ci(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ci(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,r=t.pendingProps,s=t.memoizedProps,Hi(t,i=r.value),null!==s){var l=s.value;if(0===(i=Jt(l,i)?0:0|("function"==typeof o._calculateChangedBits?o._calculateChangedBits(l,i):1073741823))){if(s.children===r.children&&!Lo.current){t=Pi(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.contextDependencies;if(null!==u){s=l.child;for(var c=u.first;null!==c;){if(c.context===o&&0!=(c.observedBits&i)){1===l.tag&&((c=Xi(n)).tag=qi,Qi(l,c)),l.expirationTime<n&&(l.expirationTime=n),null!==(c=l.alternate)&&c.expirationTime<n&&(c.expirationTime=n),c=n;for(var d=l.return;null!==d;){var p=d.alternate;if(d.childExpirationTime<c)d.childExpirationTime=c,null!==p&&p.childExpirationTime<c&&(p.childExpirationTime=c);else{if(!(null!==p&&p.childExpirationTime<c))break;p.childExpirationTime=c}d=d.return}u.expirationTime<n&&(u.expirationTime=n);break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}}Ci(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,o=(i=t.pendingProps).children,ji(t,n),o=o(r=Bi(r,i.unstable_observedBits)),t.effectTag|=1,Ci(e,t,o,n),t.child;case 14:return i=or(r=t.type,t.pendingProps),Ti(e,t,r,i=or(r.type,i),o,n);case 15:return ki(e,t,t.type,t.pendingProps,o,n);case 17:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:or(o,r),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,No(o)?(e=!0,zo(t)):e=!1,ji(t,n),lr(t,o,r),cr(t,o,r,n),Ri(null,t,o,!0,e,n)}a("156")}var Ni={current:null},Fi=null,Ai=null,Ii=null;function Hi(e,t){var n=e.type._context;Mo(Ni,n._currentValue),n._currentValue=t}function zi(e){var t=Ni.current;Do(Ni),e.type._context._currentValue=t}function ji(e,t){Fi=e,Ii=Ai=null;var n=e.contextDependencies;null!==n&&n.expirationTime>=t&&(Ei=!0),e.contextDependencies=null}function Bi(e,t){return Ii!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(Ii=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ai?(null===Fi&&a("308"),Ai=t,Fi.contextDependencies={first:t,expirationTime:0}):Ai=Ai.next=t),e._currentValue}var Ui=0,Wi=1,qi=2,Gi=3,Vi=!1;function Yi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function $i(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Xi(e){return{expirationTime:e,tag:Ui,payload:null,callback:null,next:null,nextEffect:null}}function Ki(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Qi(e,t){var n=e.alternate;if(null===n){var o=e.updateQueue,r=null;null===o&&(o=e.updateQueue=Yi(e.memoizedState))}else o=e.updateQueue,r=n.updateQueue,null===o?null===r?(o=e.updateQueue=Yi(e.memoizedState),r=n.updateQueue=Yi(n.memoizedState)):o=e.updateQueue=$i(r):null===r&&(r=n.updateQueue=$i(o));null===r||o===r?Ki(o,t):null===o.lastUpdate||null===r.lastUpdate?(Ki(o,t),Ki(r,t)):(Ki(o,t),r.lastUpdate=t)}function Ji(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Yi(e.memoizedState):Zi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Zi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=$i(t)),t}function ea(e,t,n,o,i,a){switch(n.tag){case Wi:return"function"==typeof(e=n.payload)?e.call(a,o,i):e;case Gi:e.effectTag=-2049&e.effectTag|64;case Ui:if(null==(i="function"==typeof(e=n.payload)?e.call(a,o,i):e))break;return r({},o,i);case qi:Vi=!0}return o}function ta(e,t,n,o,r){Vi=!1;for(var i=(t=Zi(e,t)).baseState,a=null,s=0,l=t.firstUpdate,u=i;null!==l;){var c=l.expirationTime;c<r?(null===a&&(a=l,i=u),s<c&&(s=c)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=l:(t.lastEffect.nextEffect=l,t.lastEffect=l))),l=l.next}for(c=null,l=t.firstCapturedUpdate;null!==l;){var d=l.expirationTime;d<r?(null===c&&(c=l,null===a&&(i=u)),s<d&&(s=d)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=l:(t.lastCapturedEffect.nextEffect=l,t.lastCapturedEffect=l))),l=l.next}null===a&&(t.lastUpdate=null),null===c?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===c&&(i=u),t.baseState=i,t.firstUpdate=a,t.firstCapturedUpdate=c,e.expirationTime=s,e.memoizedState=u}function na(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),oa(t.firstEffect,n),t.firstEffect=t.lastEffect=null,oa(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function oa(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var o=t;"function"!=typeof n&&a("191",n),n.call(o)}e=e.nextEffect}}function ra(e,t){return{value:e,source:t,stack:lt(t)}}function ia(e){e.effectTag|=4}var aa=void 0,sa=void 0,la=void 0,ua=void 0;aa=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},sa=function(){},la=function(e,t,n,o,i){var a=e.memoizedProps;if(a!==o){var s=t.stateNode;switch(Er(yr.current),e=null,n){case"input":a=bt(s,a),o=bt(s,o),e=[];break;case"option":a=Yn(s,a),o=Yn(s,o),e=[];break;case"select":a=r({},a,{value:void 0}),o=r({},o,{value:void 0}),e=[];break;case"textarea":a=Xn(s,a),o=Xn(s,o),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof o.onClick&&(s.onclick=fo)}co(n,o),s=n=void 0;var l=null;for(n in a)if(!o.hasOwnProperty(n)&&a.hasOwnProperty(n)&&null!=a[n])if("style"===n){var u=a[n];for(s in u)u.hasOwnProperty(s)&&(l||(l={}),l[s]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(b.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in o){var c=o[n];if(u=null!=a?a[n]:void 0,o.hasOwnProperty(n)&&c!==u&&(null!=c||null!=u))if("style"===n)if(u){for(s in u)!u.hasOwnProperty(s)||c&&c.hasOwnProperty(s)||(l||(l={}),l[s]="");for(s in c)c.hasOwnProperty(s)&&u[s]!==c[s]&&(l||(l={}),l[s]=c[s])}else l||(e||(e=[]),e.push(n,l)),l=c;else"dangerouslySetInnerHTML"===n?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(e=e||[]).push(n,""+c)):"children"===n?u===c||"string"!=typeof c&&"number"!=typeof c||(e=e||[]).push(n,""+c):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(b.hasOwnProperty(n)?(null!=c&&ho(i,n),e||u===c||(e=[])):(e=e||[]).push(n,c))}l&&(e=e||[]).push("style",l),i=e,(t.updateQueue=i)&&ia(t)}},ua=function(e,t,n,o){n!==o&&ia(t)};var ca="function"==typeof WeakSet?WeakSet:Set;function da(e,t){var n=t.source,o=t.stack;null===o&&null!==n&&(o=lt(n)),null!==n&&st(n.type),t=t.value,null!==e&&1===e.tag&&st(e.type);try{console.error(t)}catch(e){setTimeout(function(){throw e})}}function pa(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ya(e,t)}else t.current=null}function ha(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var o=n=n.next;do{if((o.tag&e)!==Sr){var r=o.destroy;o.destroy=void 0,void 0!==r&&r()}(o.tag&t)!==Sr&&(r=o.create,o.destroy=r()),o=o.next}while(o!==n)}}function fa(e){switch("function"==typeof Uo&&Uo(e),e.tag){case 0:case 11:case 14:case 15:var t=e.updateQueue;if(null!==t&&null!==(t=t.lastEffect)){var n=t=t.next;do{var o=n.destroy;if(void 0!==o){var r=e;try{o()}catch(e){Ya(r,e)}}n=n.next}while(n!==t)}break;case 1:if(pa(e),"function"==typeof(t=e.stateNode).componentWillUnmount)try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ya(e,t)}break;case 5:pa(e);break;case 4:va(e)}}function ma(e){return 5===e.tag||3===e.tag||4===e.tag}function ga(e){e:{for(var t=e.return;null!==t;){if(ma(t)){var n=t;break e}t=t.return}a("160"),n=void 0}var o=t=void 0;switch(n.tag){case 5:t=n.stateNode,o=!1;break;case 3:case 4:t=n.stateNode.containerInfo,o=!0;break;default:a("161")}16&n.effectTag&&(ro(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ma(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var r=e;;){if(5===r.tag||6===r.tag)if(n)if(o){var i=t,s=r.stateNode,l=n;8===i.nodeType?i.parentNode.insertBefore(s,l):i.insertBefore(s,l)}else t.insertBefore(r.stateNode,n);else o?(s=t,l=r.stateNode,8===s.nodeType?(i=s.parentNode).insertBefore(l,s):(i=s).appendChild(l),null!=(s=s._reactRootContainer)||null!==i.onclick||(i.onclick=fo)):t.appendChild(r.stateNode);else if(4!==r.tag&&null!==r.child){r.child.return=r,r=r.child;continue}if(r===e)break;for(;null===r.sibling;){if(null===r.return||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function va(e){for(var t=e,n=!1,o=void 0,r=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&a("160"),n.tag){case 5:o=n.stateNode,r=!1;break e;case 3:case 4:o=n.stateNode.containerInfo,r=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag){e:for(var i=t,s=i;;)if(fa(s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===i)break;for(;null===s.sibling;){if(null===s.return||s.return===i)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}r?(i=o,s=t.stateNode,8===i.nodeType?i.parentNode.removeChild(s):i.removeChild(s)):o.removeChild(t.stateNode)}else if(4===t.tag){if(null!==t.child){o=t.stateNode.containerInfo,r=!0,t.child.return=t,t=t.child;continue}}else if(fa(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;4===(t=t.return).tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function ya(e,t){switch(t.tag){case 0:case 11:case 14:case 15:ha(Mr,Rr,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var o=t.memoizedProps;e=null!==e?e.memoizedProps:o;var r=t.type,i=t.updateQueue;t.updateQueue=null,null!==i&&function(e,t,n,o,r){e[N]=r,"input"===n&&"radio"===r.type&&null!=r.name&&Et(e,r),po(n,o),o=po(n,r);for(var i=0;i<t.length;i+=2){var a=t[i],s=t[i+1];"style"===a?lo(e,s):"dangerouslySetInnerHTML"===a?oo(e,s):"children"===a?ro(e,s):vt(e,a,s,o)}switch(n){case"input":Ct(e,r);break;case"textarea":Qn(e,r);break;case"select":t=e._wrapperState.wasMultiple,e._wrapperState.wasMultiple=!!r.multiple,null!=(n=r.value)?$n(e,!!r.multiple,n,!1):t!==!!r.multiple&&(null!=r.defaultValue?$n(e,!!r.multiple,r.defaultValue,!0):$n(e,!!r.multiple,r.multiple?[]:"",!1))}}(n,i,r,e,o)}break;case 6:null===t.stateNode&&a("162"),t.stateNode.nodeValue=t.memoizedProps;break;case 3:case 12:break;case 13:if(n=t.memoizedState,o=void 0,e=t,null===n?o=!1:(o=!0,e=t.child,0===n.timedOutAt&&(n.timedOutAt=Es())),null!==e&&function(e,t){for(var n=e;;){if(5===n.tag){var o=n.stateNode;if(t)o.style.display="none";else{o=n.stateNode;var r=n.memoizedProps.style;r=null!=r&&r.hasOwnProperty("display")?r.display:null,o.style.display=so("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else{if(13===n.tag&&null!==n.memoizedState){(o=n.child.sibling).return=n,n=o;continue}if(null!==n.child){n.child.return=n,n=n.child;continue}}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}(e,o),null!==(n=t.updateQueue)){t.updateQueue=null;var s=t.stateNode;null===s&&(s=t.stateNode=new ca),n.forEach(function(e){var n=function(e,t){var n=e.stateNode;null!==n&&n.delete(t),t=$a(t=Es(),e),null!==(e=Ka(e,t))&&(Zo(e,t),0!==(t=e.expirationTime)&&Cs(e,t))}.bind(null,t,e);s.has(e)||(s.add(e),e.then(n,n))})}break;case 17:break;default:a("163")}}var ba="function"==typeof WeakMap?WeakMap:Map;function wa(e,t,n){(n=Xi(n)).tag=Gi,n.payload={element:null};var o=t.value;return n.callback=function(){Ls(o),da(e,t)},n}function Ea(e,t,n){(n=Xi(n)).tag=Gi;var o=e.type.getDerivedStateFromError;if("function"==typeof o){var r=t.value;n.payload=function(){return o(r)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof o&&(null===Ia?Ia=new Set([this]):Ia.add(this));var n=t.value,r=t.stack;da(e,t),this.componentDidCatch(n,{componentStack:null!==r?r:""})}),n}function Ca(e){switch(e.tag){case 1:No(e.type)&&Fo();var t=e.effectTag;return 2048&t?(e.effectTag=-2049&t|64,e):null;case 3:return xr(),Ao(),0!=(64&(t=e.effectTag))&&a("285"),e.effectTag=-2049&t|64,e;case 5:return kr(e),null;case 13:return 2048&(t=e.effectTag)?(e.effectTag=-2049&t|64,e):null;case 18:return null;case 4:return xr(),null;case 10:return zi(e),null;default:return null}}var xa=qe.ReactCurrentDispatcher,Ta=qe.ReactCurrentOwner,ka=1073741822,Sa=!1,Da=null,Ma=null,Ra=0,_a=-1,La=!1,Pa=null,Oa=!1,Na=null,Fa=null,Aa=null,Ia=null;function Ha(){if(null!==Da)for(var e=Da.return;null!==e;){var t=e;switch(t.tag){case 1:var n=t.type.childContextTypes;null!=n&&Fo();break;case 3:xr(),Ao();break;case 5:kr(t);break;case 4:xr();break;case 10:zi(t)}e=e.return}Ma=null,Ra=0,_a=-1,La=!1,Da=null}function za(){for(;null!==Pa;){var e=Pa.effectTag;if(16&e&&ro(Pa.stateNode,""),128&e){var t=Pa.alternate;null!==t&&(null!==(t=t.ref)&&("function"==typeof t?t(null):t.current=null))}switch(14&e){case 2:ga(Pa),Pa.effectTag&=-3;break;case 6:ga(Pa),Pa.effectTag&=-3,ya(Pa.alternate,Pa);break;case 4:ya(Pa.alternate,Pa);break;case 8:va(e=Pa),e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,null!==(e=e.alternate)&&(e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null)}Pa=Pa.nextEffect}}function ja(){for(;null!==Pa;){if(256&Pa.effectTag)e:{var e=Pa.alternate,t=Pa;switch(t.tag){case 0:case 11:case 15:ha(Dr,Sr,t);break e;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,o=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:or(t.type,n),o),e.__reactInternalSnapshotBeforeUpdate=t}break e;case 3:case 5:case 6:case 4:case 17:break e;default:a("163")}}Pa=Pa.nextEffect}}function Ba(e,t){for(;null!==Pa;){var n=Pa.effectTag;if(36&n){var o=Pa.alternate,r=Pa,i=t;switch(r.tag){case 0:case 11:case 15:ha(_r,Lr,r);break;case 1:var s=r.stateNode;if(4&r.effectTag)if(null===o)s.componentDidMount();else{var l=r.elementType===r.type?o.memoizedProps:or(r.type,o.memoizedProps);s.componentDidUpdate(l,o.memoizedState,s.__reactInternalSnapshotBeforeUpdate)}null!==(o=r.updateQueue)&&na(0,o,s);break;case 3:if(null!==(o=r.updateQueue)){if(s=null,null!==r.child)switch(r.child.tag){case 5:s=r.child.stateNode;break;case 1:s=r.child.stateNode}na(0,o,s)}break;case 5:i=r.stateNode,null===o&&4&r.effectTag&&vo(r.type,r.memoizedProps)&&i.focus();break;case 6:case 4:case 12:case 13:case 17:break;default:a("163")}}128&n&&(null!==(r=Pa.ref)&&(i=Pa.stateNode,"function"==typeof r?r(i):r.current=i)),512&n&&(Na=e),Pa=Pa.nextEffect}}function Ua(){null!==Fa&&Co(Fa),null!==Aa&&Aa()}function Wa(e,t){Oa=Sa=!0,e.current===t&&a("177");var n=e.pendingCommitExpirationTime;0===n&&a("261"),e.pendingCommitExpirationTime=0;var o=t.expirationTime,r=t.childExpirationTime;for(function(e,t){if(e.didError=!1,0===t)e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0;else{t<e.latestPingedTime&&(e.latestPingedTime=0);var n=e.latestPendingTime;0!==n&&(n>t?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime>t&&(e.earliestPendingTime=e.latestPendingTime)),0===(n=e.earliestSuspendedTime)?Zo(e,t):t<e.latestSuspendedTime?(e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0,Zo(e,t)):t>n&&Zo(e,t)}nr(0,e)}(e,r>o?r:o),Ta.current=null,o=void 0,1<t.effectTag?null!==t.lastEffect?(t.lastEffect.nextEffect=t,o=t.firstEffect):o=t:o=t.firstEffect,mo=Tn,go=function(){var e=An();if(In(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{var n=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection();if(n&&0!==n.rangeCount){t=n.anchorNode;var o=n.anchorOffset,r=n.focusNode;n=n.focusOffset;try{t.nodeType,r.nodeType}catch(e){t=null;break e}var i=0,a=-1,s=-1,l=0,u=0,c=e,d=null;t:for(;;){for(var p;c!==t||0!==o&&3!==c.nodeType||(a=i+o),c!==r||0!==n&&3!==c.nodeType||(s=i+n),3===c.nodeType&&(i+=c.nodeValue.length),null!==(p=c.firstChild);)d=c,c=p;for(;;){if(c===e)break t;if(d===t&&++l===o&&(a=i),d===r&&++u===n&&(s=i),null!==(p=c.nextSibling))break;d=(c=d).parentNode}c=p}t=-1===a||-1===s?null:{start:a,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;return{focusedElem:e,selectionRange:t}}(),Tn=!1,Pa=o;null!==Pa;){r=!1;var s=void 0;try{ja()}catch(e){r=!0,s=e}r&&(null===Pa&&a("178"),Ya(Pa,s),null!==Pa&&(Pa=Pa.nextEffect))}for(Pa=o;null!==Pa;){r=!1,s=void 0;try{za()}catch(e){r=!0,s=e}r&&(null===Pa&&a("178"),Ya(Pa,s),null!==Pa&&(Pa=Pa.nextEffect))}for(Hn(go),go=null,Tn=!!mo,mo=null,e.current=t,Pa=o;null!==Pa;){r=!1,s=void 0;try{Ba(e,n)}catch(e){r=!0,s=e}r&&(null===Pa&&a("178"),Ya(Pa,s),null!==Pa&&(Pa=Pa.nextEffect))}if(null!==o&&null!==Na){var l=function(e,t){Aa=Fa=Na=null;var n=os;os=!0;do{if(512&t.effectTag){var o=!1,r=void 0;try{var i=t;ha(Or,Sr,i),ha(Sr,Pr,i)}catch(e){o=!0,r=e}o&&Ya(t,r)}t=t.nextEffect}while(null!==t);os=n,0!==(n=e.expirationTime)&&Cs(e,n),us||os||Ds(1073741823,!1)}.bind(null,e,o);Fa=i.unstable_runWithPriority(i.unstable_NormalPriority,function(){return Eo(l)}),Aa=l}Sa=Oa=!1,"function"==typeof Bo&&Bo(t.stateNode),n=t.expirationTime,0===(t=(t=t.childExpirationTime)>n?t:n)&&(Ia=null),function(e,t){e.expirationTime=t,e.finishedWork=null}(e,t)}function qa(e){for(;;){var t=e.alternate,n=e.return,o=e.sibling;if(0==(1024&e.effectTag)){Da=e;e:{var i=t,s=Ra,l=(t=e).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:No(t.type)&&Fo();break;case 3:xr(),Ao(),(l=t.stateNode).pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),null!==i&&null!==i.child||(yi(t),t.effectTag&=-3),sa(t);break;case 5:kr(t);var u=Er(wr.current);if(s=t.type,null!==i&&null!=t.stateNode)la(i,t,s,l,u),i.ref!==t.ref&&(t.effectTag|=128);else if(l){var c=Er(yr.current);if(yi(t)){i=(l=t).stateNode;var d=l.type,p=l.memoizedProps,h=u;switch(i[O]=l,i[N]=p,s=void 0,u=d){case"iframe":case"object":kn("load",i);break;case"video":case"audio":for(d=0;d<te.length;d++)kn(te[d],i);break;case"source":kn("error",i);break;case"img":case"image":case"link":kn("error",i),kn("load",i);break;case"form":kn("reset",i),kn("submit",i);break;case"details":kn("toggle",i);break;case"input":wt(i,p),kn("invalid",i),ho(h,"onChange");break;case"select":i._wrapperState={wasMultiple:!!p.multiple},kn("invalid",i),ho(h,"onChange");break;case"textarea":Kn(i,p),kn("invalid",i),ho(h,"onChange")}for(s in co(u,p),d=null,p)p.hasOwnProperty(s)&&(c=p[s],"children"===s?"string"==typeof c?i.textContent!==c&&(d=["children",c]):"number"==typeof c&&i.textContent!==""+c&&(d=["children",""+c]):b.hasOwnProperty(s)&&null!=c&&ho(h,s));switch(u){case"input":Ue(i),xt(i,p,!0);break;case"textarea":Ue(i),Jn(i);break;case"select":case"option":break;default:"function"==typeof p.onClick&&(i.onclick=fo)}s=d,l.updateQueue=s,(l=null!==s)&&ia(t)}else{p=t,h=s,i=l,d=9===u.nodeType?u:u.ownerDocument,c===Zn.html&&(c=eo(h)),c===Zn.html?"script"===h?((i=d.createElement("div")).innerHTML="<script><\/script>",d=i.removeChild(i.firstChild)):"string"==typeof i.is?d=d.createElement(h,{is:i.is}):(d=d.createElement(h),"select"===h&&(h=d,i.multiple?h.multiple=!0:i.size&&(h.size=i.size))):d=d.createElementNS(c,h),(i=d)[O]=p,i[N]=l,aa(i,t,!1,!1),h=i;var f=u,m=po(d=s,p=l);switch(d){case"iframe":case"object":kn("load",h),u=p;break;case"video":case"audio":for(u=0;u<te.length;u++)kn(te[u],h);u=p;break;case"source":kn("error",h),u=p;break;case"img":case"image":case"link":kn("error",h),kn("load",h),u=p;break;case"form":kn("reset",h),kn("submit",h),u=p;break;case"details":kn("toggle",h),u=p;break;case"input":wt(h,p),u=bt(h,p),kn("invalid",h),ho(f,"onChange");break;case"option":u=Yn(h,p);break;case"select":h._wrapperState={wasMultiple:!!p.multiple},u=r({},p,{value:void 0}),kn("invalid",h),ho(f,"onChange");break;case"textarea":Kn(h,p),u=Xn(h,p),kn("invalid",h),ho(f,"onChange");break;default:u=p}co(d,u),c=void 0;var g=d,v=h,y=u;for(c in y)if(y.hasOwnProperty(c)){var w=y[c];"style"===c?lo(v,w):"dangerouslySetInnerHTML"===c?null!=(w=w?w.__html:void 0)&&oo(v,w):"children"===c?"string"==typeof w?("textarea"!==g||""!==w)&&ro(v,w):"number"==typeof w&&ro(v,""+w):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(b.hasOwnProperty(c)?null!=w&&ho(f,c):null!=w&&vt(v,c,w,m))}switch(d){case"input":Ue(h),xt(h,p,!1);break;case"textarea":Ue(h),Jn(h);break;case"option":null!=p.value&&h.setAttribute("value",""+yt(p.value));break;case"select":(u=h).multiple=!!p.multiple,null!=(h=p.value)?$n(u,!!p.multiple,h,!1):null!=p.defaultValue&&$n(u,!!p.multiple,p.defaultValue,!0);break;default:"function"==typeof u.onClick&&(h.onclick=fo)}(l=vo(s,l))&&ia(t),t.stateNode=i}null!==t.ref&&(t.effectTag|=128)}else null===t.stateNode&&a("166");break;case 6:i&&null!=t.stateNode?ua(i,t,i.memoizedProps,l):("string"!=typeof l&&(null===t.stateNode&&a("166")),i=Er(wr.current),Er(yr.current),yi(t)?(s=(l=t).stateNode,i=l.memoizedProps,s[O]=l,(l=s.nodeValue!==i)&&ia(t)):(s=t,(l=(9===i.nodeType?i:i.ownerDocument).createTextNode(l))[O]=t,s.stateNode=l));break;case 11:break;case 13:if(l=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=s,Da=t;break e}l=null!==l,s=null!==i&&null!==i.memoizedState,null!==i&&!l&&s&&(null!==(i=i.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=i,i.nextEffect=u):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),(l||s)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:xr(),sa(t);break;case 10:zi(t);break;case 9:case 14:break;case 17:No(t.type)&&Fo();break;case 18:break;default:a("156")}Da=null}if(t=e,1===Ra||1!==t.childExpirationTime){for(l=0,s=t.child;null!==s;)(i=s.expirationTime)>l&&(l=i),(u=s.childExpirationTime)>l&&(l=u),s=s.sibling;t.childExpirationTime=l}if(null!==Da)return Da;null!==n&&0==(1024&n.effectTag)&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1<e.effectTag&&(null!==n.lastEffect?n.lastEffect.nextEffect=e:n.firstEffect=e,n.lastEffect=e))}else{if(null!==(e=Ca(e)))return e.effectTag&=1023,e;null!==n&&(n.firstEffect=n.lastEffect=null,n.effectTag|=1024)}if(null!==o)return o;if(null===n)break;e=n}return null}function Ga(e){var t=Oi(e.alternate,e,Ra);return e.memoizedProps=e.pendingProps,null===t&&(t=qa(e)),Ta.current=null,t}function Va(e,t){Sa&&a("243"),Ua(),Sa=!0;var n=xa.current;xa.current=li;var o=e.nextExpirationTimeToWorkOn;o===Ra&&e===Ma&&null!==Da||(Ha(),Ra=o,Da=Yo((Ma=e).current,null),e.pendingCommitExpirationTime=0);for(var r=!1;;){try{if(t)for(;null!==Da&&!ks();)Da=Ga(Da);else for(;null!==Da;)Da=Ga(Da)}catch(t){if(Ii=Ai=Fi=null,Qr(),null===Da)r=!0,Ls(t);else{null===Da&&a("271");var i=Da,s=i.return;if(null!==s){e:{var l=e,u=s,c=i,d=t;if(s=Ra,c.effectTag|=1024,c.firstEffect=c.lastEffect=null,null!==d&&"object"==typeof d&&"function"==typeof d.then){var p=d;d=u;var h=-1,f=-1;do{if(13===d.tag){var m=d.alternate;if(null!==m&&null!==(m=m.memoizedState)){f=10*(1073741822-m.timedOutAt);break}"number"==typeof(m=d.pendingProps.maxDuration)&&(0>=m?h=0:(-1===h||m<h)&&(h=m))}d=d.return}while(null!==d);d=u;do{if((m=13===d.tag)&&(m=void 0!==d.memoizedProps.fallback&&null===d.memoizedState),m){if(null===(u=d.updateQueue)?((u=new Set).add(p),d.updateQueue=u):u.add(p),0==(1&d.mode)){d.effectTag|=64,c.effectTag&=-1957,1===c.tag&&(null===c.alternate?c.tag=17:((s=Xi(1073741823)).tag=qi,Qi(c,s))),c.expirationTime=1073741823;break e}u=s;var g=(c=l).pingCache;null===g?(g=c.pingCache=new ba,m=new Set,g.set(p,m)):void 0===(m=g.get(p))&&(m=new Set,g.set(p,m)),m.has(u)||(m.add(u),c=Xa.bind(null,c,p,u),p.then(c,c)),-1===h?l=1073741823:(-1===f&&(f=10*(1073741822-tr(l,s))-5e3),l=f+h),0<=l&&_a<l&&(_a=l),d.effectTag|=2048,d.expirationTime=s;break e}d=d.return}while(null!==d);d=Error((st(c.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+lt(c))}La=!0,d=ra(d,c),l=u;do{switch(l.tag){case 3:l.effectTag|=2048,l.expirationTime=s,Ji(l,s=wa(l,d,s));break e;case 1:if(h=d,f=l.type,c=l.stateNode,0==(64&l.effectTag)&&("function"==typeof f.getDerivedStateFromError||null!==c&&"function"==typeof c.componentDidCatch&&(null===Ia||!Ia.has(c)))){l.effectTag|=2048,l.expirationTime=s,Ji(l,s=Ea(l,h,s));break e}}l=l.return}while(null!==l)}Da=qa(i);continue}r=!0,Ls(t)}}break}if(Sa=!1,xa.current=n,Ii=Ai=Fi=null,Qr(),r)Ma=null,e.finishedWork=null;else if(null!==Da)e.finishedWork=null;else{if(null===(n=e.current.alternate)&&a("281"),Ma=null,La){if(r=e.latestPendingTime,i=e.latestSuspendedTime,s=e.latestPingedTime,0!==r&&r<o||0!==i&&i<o||0!==s&&s<o)return er(e,o),void ws(e,n,o,e.expirationTime,-1);if(!e.didError&&t)return e.didError=!0,o=e.nextExpirationTimeToWorkOn=o,t=e.expirationTime=1073741823,void ws(e,n,o,t,-1)}t&&-1!==_a?(er(e,o),(t=10*(1073741822-tr(e,o)))<_a&&(_a=t),t=10*(1073741822-Es()),t=_a-t,ws(e,n,o,e.expirationTime,0>t?0:t)):(e.pendingCommitExpirationTime=o,e.finishedWork=n)}}function Ya(e,t){for(var n=e.return;null!==n;){switch(n.tag){case 1:var o=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof o.componentDidCatch&&(null===Ia||!Ia.has(o)))return Qi(n,e=Ea(n,e=ra(t,e),1073741823)),void Qa(n,1073741823);break;case 3:return Qi(n,e=wa(n,e=ra(t,e),1073741823)),void Qa(n,1073741823)}n=n.return}3===e.tag&&(Qi(e,n=wa(e,n=ra(t,e),1073741823)),Qa(e,1073741823))}function $a(e,t){var n=i.unstable_getCurrentPriorityLevel(),o=void 0;if(0==(1&t.mode))o=1073741823;else if(Sa&&!Oa)o=Ra;else{switch(n){case i.unstable_ImmediatePriority:o=1073741823;break;case i.unstable_UserBlockingPriority:o=1073741822-10*(1+((1073741822-e+15)/10|0));break;case i.unstable_NormalPriority:o=1073741822-25*(1+((1073741822-e+500)/25|0));break;case i.unstable_LowPriority:case i.unstable_IdlePriority:o=1;break;default:a("313")}null!==Ma&&o===Ra&&--o}return n===i.unstable_UserBlockingPriority&&(0===as||o<as)&&(as=o),o}function Xa(e,t,n){var o=e.pingCache;null!==o&&o.delete(t),null!==Ma&&Ra===n?Ma=null:(t=e.earliestSuspendedTime,o=e.latestSuspendedTime,0!==t&&n<=t&&n>=o&&(e.didError=!1,(0===(t=e.latestPingedTime)||t>n)&&(e.latestPingedTime=n),nr(n,e),0!==(n=e.expirationTime)&&Cs(e,n)))}function Ka(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var o=e.return,r=null;if(null===o&&3===e.tag)r=e.stateNode;else for(;null!==o;){if(n=o.alternate,o.childExpirationTime<t&&(o.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===o.return&&3===o.tag){r=o.stateNode;break}o=o.return}return r}function Qa(e,t){null!==(e=Ka(e,t))&&(!Sa&&0!==Ra&&t>Ra&&Ha(),Zo(e,t),Sa&&!Oa&&Ma===e||Cs(e,e.expirationTime),gs>ms&&(gs=0,a("185")))}function Ja(e,t,n,o,r){return i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){return e(t,n,o,r)})}var Za=null,es=null,ts=0,ns=void 0,os=!1,rs=null,is=0,as=0,ss=!1,ls=null,us=!1,cs=!1,ds=null,ps=i.unstable_now(),hs=1073741822-(ps/10|0),fs=hs,ms=50,gs=0,vs=null;function ys(){hs=1073741822-((i.unstable_now()-ps)/10|0)}function bs(e,t){if(0!==ts){if(t<ts)return;null!==ns&&i.unstable_cancelCallback(ns)}ts=t,e=i.unstable_now()-ps,ns=i.unstable_scheduleCallback(Ss,{timeout:10*(1073741822-t)-e})}function ws(e,t,n,o,r){e.expirationTime=o,0!==r||ks()?0<r&&(e.timeoutHandle=bo(function(e,t,n){e.pendingCommitExpirationTime=n,e.finishedWork=t,ys(),fs=hs,Ms(e,n)}.bind(null,e,t,n),r)):(e.pendingCommitExpirationTime=n,e.finishedWork=t)}function Es(){return os?fs:(xs(),0!==is&&1!==is||(ys(),fs=hs),fs)}function Cs(e,t){null===e.nextScheduledRoot?(e.expirationTime=t,null===es?(Za=es=e,e.nextScheduledRoot=e):(es=es.nextScheduledRoot=e).nextScheduledRoot=Za):t>e.expirationTime&&(e.expirationTime=t),os||(us?cs&&(rs=e,is=1073741823,Rs(e,1073741823,!1)):1073741823===t?Ds(1073741823,!1):bs(e,t))}function xs(){var e=0,t=null;if(null!==es)for(var n=es,o=Za;null!==o;){var r=o.expirationTime;if(0===r){if((null===n||null===es)&&a("244"),o===o.nextScheduledRoot){Za=es=o.nextScheduledRoot=null;break}if(o===Za)Za=r=o.nextScheduledRoot,es.nextScheduledRoot=r,o.nextScheduledRoot=null;else{if(o===es){(es=n).nextScheduledRoot=Za,o.nextScheduledRoot=null;break}n.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=n.nextScheduledRoot}else{if(r>e&&(e=r,t=o),o===es)break;if(1073741823===e)break;n=o,o=o.nextScheduledRoot}}rs=t,is=e}var Ts=!1;function ks(){return!!Ts||!!i.unstable_shouldYield()&&(Ts=!0)}function Ss(){try{if(!ks()&&null!==Za){ys();var e=Za;do{var t=e.expirationTime;0!==t&&hs<=t&&(e.nextExpirationTimeToWorkOn=hs),e=e.nextScheduledRoot}while(e!==Za)}Ds(0,!0)}finally{Ts=!1}}function Ds(e,t){if(xs(),t)for(ys(),fs=hs;null!==rs&&0!==is&&e<=is&&!(Ts&&hs>is);)Rs(rs,is,hs>is),xs(),ys(),fs=hs;else for(;null!==rs&&0!==is&&e<=is;)Rs(rs,is,!1),xs();if(t&&(ts=0,ns=null),0!==is&&bs(rs,is),gs=0,vs=null,null!==ds)for(e=ds,ds=null,t=0;t<e.length;t++){var n=e[t];try{n._onComplete()}catch(e){ss||(ss=!0,ls=e)}}if(ss)throw e=ls,ls=null,ss=!1,e}function Ms(e,t){os&&a("253"),rs=e,is=t,Rs(e,t,!1),Ds(1073741823,!1)}function Rs(e,t,n){if(os&&a("245"),os=!0,n){var o=e.finishedWork;null!==o?_s(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Va(e,n),null!==(o=e.finishedWork)&&(ks()?e.finishedWork=o:_s(e,o,t)))}else null!==(o=e.finishedWork)?_s(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Va(e,n),null!==(o=e.finishedWork)&&_s(e,o,t));os=!1}function _s(e,t,n){var o=e.firstBatch;if(null!==o&&o._expirationTime>=n&&(null===ds?ds=[o]:ds.push(o),o._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===vs?gs++:(vs=e,gs=0),i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){Wa(e,t)})}function Ls(e){null===rs&&a("246"),rs.expirationTime=0,ss||(ss=!0,ls=e)}function Ps(e,t){var n=us;us=!0;try{return e(t)}finally{(us=n)||os||Ds(1073741823,!1)}}function Os(e,t){if(us&&!cs){cs=!0;try{return e(t)}finally{cs=!1}}return e(t)}function Ns(e,t,n){us||os||0===as||(Ds(as,!1),as=0);var o=us;us=!0;try{return i.unstable_runWithPriority(i.unstable_UserBlockingPriority,function(){return e(t,n)})}finally{(us=o)||os||Ds(1073741823,!1)}}function Fs(e,t,n,o,r){var i=t.current;e:if(n){t:{2===tn(n=n._reactInternalFiber)&&1===n.tag||a("170");var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(No(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);a("171"),s=void 0}if(1===n.tag){var l=n.type;if(No(l)){n=Ho(n,l,s);break e}}n=s}else n=Ro;return null===t.context?t.context=n:t.pendingContext=n,t=r,(r=Xi(o)).payload={element:e},null!==(t=void 0===t?null:t)&&(r.callback=t),Ua(),Qi(i,r),Qa(i,o),o}function As(e,t,n,o){var r=t.current;return Fs(e,t,n,r=$a(Es(),r),o)}function Is(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Hs(e){var t=1073741822-25*(1+((1073741822-Es()+500)/25|0));t>=ka&&(t=ka-1),this._expirationTime=ka=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function zs(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function js(e,t,n){e={current:t=Go(3,null,null,t?3:0),containerInfo:e,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function Bs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Us(e,t,n,o,r){var i=n._reactRootContainer;if(i){if("function"==typeof r){var a=r;r=function(){var e=Is(i._internalRoot);a.call(e)}}null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new js(e,!1,t)}(n,o),"function"==typeof r){var s=r;r=function(){var e=Is(i._internalRoot);s.call(e)}}Os(function(){null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)})}return Is(i._internalRoot)}function Ws(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return Bs(t)||a("200"),function(e,t,n){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$e,key:null==o?null:""+o,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Se=function(e,t,n){switch(t){case"input":if(Ct(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var o=n[t];if(o!==e&&o.form===e.form){var r=H(o);r||a("90"),We(o),Ct(o,r)}}}break;case"textarea":Qn(e,n);break;case"select":null!=(t=n.value)&&$n(e,!!n.multiple,t,!1)}},Hs.prototype.render=function(e){this._defer||a("250"),this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,o=new zs;return Fs(e,t,null,n,o._onCommit),o},Hs.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Hs.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(this._defer&&null!==t||a("251"),this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var o=null,r=t;r!==this;)o=r,r=r._next;null===o&&a("251"),o._next=r._next,this._next=t,e.firstBatch=this}this._defer=!1,Ms(e,n),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},Hs.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},zs.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},zs.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];"function"!=typeof n&&a("191",n),n()}}},js.prototype.render=function(e,t){var n=this._internalRoot,o=new zs;return null!==(t=void 0===t?null:t)&&o.then(t),As(e,n,null,o._onCommit),o},js.prototype.unmount=function(e){var t=this._internalRoot,n=new zs;return null!==(e=void 0===e?null:e)&&n.then(e),As(null,t,null,n._onCommit),n},js.prototype.legacy_renderSubtreeIntoContainer=function(e,t,n){var o=this._internalRoot,r=new zs;return null!==(n=void 0===n?null:n)&&r.then(n),As(t,o,e,r._onCommit),r},js.prototype.createBatch=function(){var e=new Hs(this),t=e._expirationTime,n=this._internalRoot,o=n.firstBatch;if(null===o)n.firstBatch=e,e._next=null;else{for(n=null;null!==o&&o._expirationTime>=t;)n=o,o=o._next;e._next=o,null!==n&&(n._next=e)}return e},Pe=Ps,Oe=Ns,Ne=function(){os||0===as||(Ds(as,!1),as=0)};var qs,Gs,Vs={createPortal:Ws,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?a("188"):a("268",Object.keys(e))),e=null===(e=on(t))?null:e.stateNode},hydrate:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!0,n)},render:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,o){return Bs(n)||a("200"),(null==e||void 0===e._reactInternalFiber)&&a("38"),Us(e,t,n,!1,o)},unmountComponentAtNode:function(e){return Bs(e)||a("40"),!!e._reactRootContainer&&(Os(function(){Us(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return Ws.apply(void 0,arguments)},unstable_batchedUpdates:Ps,unstable_interactiveUpdates:Ns,flushSync:function(e,t){os&&a("187");var n=us;us=!0;try{return Ja(e,t)}finally{us=n,Ds(1073741823,!1)}},unstable_createRoot:function(e,t){return Bs(e)||a("299","unstable_createRoot"),new js(e,!0,null!=t&&!0===t.hydrate)},unstable_flushControlled:function(e){var t=us;us=!0;try{Ja(e)}finally{(us=t)||os||Ds(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[A,I,H,R.injectEventPluginsByName,y,q,function(e){S(e,W)},_e,Le,Mn,L]}};Gs=(qs={findFiberByHostInstance:F,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Bo=Wo(function(e){return t.onCommitFiberRoot(n,e)}),Uo=Wo(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}}(r({},qs,{overrideProps:null,currentDispatcherRef:qe.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=on(e))?null:e.stateNode},findFiberByHostInstance:function(e){return Gs?Gs(e):null}}));var Ys={default:Vs},$s=Ys&&Vs||Ys;e.exports=$s.default||$s},function(e,t,n){"use strict";e.exports=n(47)},function(e,t,n){"use strict";(function(e){
/** @license React v0.13.6
* scheduler.production.min.js
*
@@ -49,7 +49,7 @@ object-assign
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-Object.defineProperty(t,"__esModule",{value:!0});var n=null,o=!1,r=3,i=-1,a=-1,s=!1,l=!1;function u(){if(!s){var e=n.expirationTime;l?x():l=!0,C(p,e)}}function c(){var e=n,t=n.next;if(n===t)n=null;else{var o=n.previous;n=o.next=t,t.previous=o}e.next=e.previous=null,o=e.callback,t=e.expirationTime,e=e.priorityLevel;var i=r,s=a;r=e,a=t;try{var l=o()}finally{r=i,a=s}if("function"==typeof l)if(l={callback:l,priorityLevel:e,expirationTime:t,next:null,previous:null},null===n)n=l.next=l.previous=l;else{o=null,e=n;do{if(e.expirationTime>=t){o=e;break}e=e.next}while(e!==n);null===o?o=n:o===n&&(n=l,u()),(t=o.previous).next=o.previous=l,l.next=o,l.previous=t}}function d(){if(-1===i&&null!==n&&1===n.priorityLevel){s=!0;try{do{c()}while(null!==n&&1===n.priorityLevel)}finally{s=!1,null!==n?u():l=!1}}}function p(e){s=!0;var r=o;o=e;try{if(e)for(;null!==n;){var i=t.unstable_now();if(!(n.expirationTime<=i))break;do{c()}while(null!==n&&n.expirationTime<=i)}else if(null!==n)do{c()}while(null!==n&&!T())}finally{s=!1,o=r,null!==n?u():l=!1,d()}}var h,f,m=Date,g="function"==typeof setTimeout?setTimeout:void 0,v="function"==typeof clearTimeout?clearTimeout:void 0,y="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){h=y(function(t){v(f),e(t)}),f=g(function(){b(h),e(t.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var E=performance;t.unstable_now=function(){return E.now()}}else t.unstable_now=function(){return m.now()};var C,x,T,k=null;if("undefined"!=typeof window?k=window:void 0!==e&&(k=e),k&&k._schedMock){var S=k._schedMock;C=S[0],x=S[1],T=S[2],t.unstable_now=S[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var D=null,M=function(e){if(null!==D)try{D(e)}finally{D=null}};C=function(e){null!==D?setTimeout(C,0,e):(D=e,setTimeout(M,0,!1))},x=function(){D=null},T=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof y&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var R=null,P=!1,_=-1,L=!1,O=!1,N=0,F=33,A=33;T=function(){return N<=t.unstable_now()};var I=new MessageChannel,H=I.port2;I.port1.onmessage=function(){P=!1;var e=R,n=_;R=null,_=-1;var o=t.unstable_now(),r=!1;if(0>=N-o){if(!(-1!==n&&n<=o))return L||(L=!0,w(z)),R=e,void(_=n);r=!0}if(null!==e){O=!0;try{e(r)}finally{O=!1}}};var z=function(e){if(null!==R){w(z);var t=e-N+A;t<A&&F<A?(8>t&&(t=8),A=t<F?F:t):F=t,N=e+A,P||(P=!0,H.postMessage(void 0))}else L=!1};C=function(e,t){R=e,_=t,O||0>t?H.postMessage(void 0):L||(L=!0,w(z))},x=function(){R=null,P=!1,_=-1}}t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var o=r,a=i;r=e,i=t.unstable_now();try{return n()}finally{r=o,i=a,d()}},t.unstable_next=function(e){switch(r){case 1:case 2:case 3:var n=3;break;default:n=r}var o=r,a=i;r=n,i=t.unstable_now();try{return e()}finally{r=o,i=a,d()}},t.unstable_scheduleCallback=function(e,o){var a=-1!==i?i:t.unstable_now();if("object"==typeof o&&null!==o&&"number"==typeof o.timeout)o=a+o.timeout;else switch(r){case 1:o=a+-1;break;case 2:o=a+250;break;case 5:o=a+1073741823;break;case 4:o=a+1e4;break;default:o=a+5e3}if(e={callback:e,priorityLevel:r,expirationTime:o,next:null,previous:null},null===n)n=e.next=e.previous=e,u();else{a=null;var s=n;do{if(s.expirationTime>o){a=s;break}s=s.next}while(s!==n);null===a?a=n:a===n&&(n=e,u()),(o=a.previous).next=a.previous=e,e.next=a,e.previous=o}return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var o=e.previous;o.next=t,t.previous=o}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var n=r;return function(){var o=r,a=i;r=n,i=t.unstable_now();try{return e.apply(this,arguments)}finally{r=o,i=a,d()}}},t.unstable_getCurrentPriorityLevel=function(){return r},t.unstable_shouldYield=function(){return!o&&(null!==n&&n.expirationTime<a||T())},t.unstable_continueExecution=function(){null!==n&&u()},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return n}}).call(this,n(48))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e)return void console.error("Autobind error: No context provided.");var t=Object.getPrototypeOf(e);r=arguments.length>1?Array.prototype.slice.call(arguments,1):Object.getOwnPropertyNames(t);r.forEach(function(e){var n=Object.getOwnPropertyDescriptor(t,e);void 0!==n?-1===o.indexOf(e)&&"function"==typeof n.value&&Object.defineProperty(t,e,function(e,t,n){var o=n.value;return{configurable:!0,get:function(){if(this===e||this.hasOwnProperty(t))return o;var n=o.bind(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n}}}(t,e,n)):console.warn('Autobind: "'+e+'" method not found in class.')})};var o=["constructor","render","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount"],r=[];e.exports=t.default},function(e,t,n){"use strict";var o=n(51);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,a){if(a!==o){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var o;
+Object.defineProperty(t,"__esModule",{value:!0});var n=null,o=!1,r=3,i=-1,a=-1,s=!1,l=!1;function u(){if(!s){var e=n.expirationTime;l?x():l=!0,C(p,e)}}function c(){var e=n,t=n.next;if(n===t)n=null;else{var o=n.previous;n=o.next=t,t.previous=o}e.next=e.previous=null,o=e.callback,t=e.expirationTime,e=e.priorityLevel;var i=r,s=a;r=e,a=t;try{var l=o()}finally{r=i,a=s}if("function"==typeof l)if(l={callback:l,priorityLevel:e,expirationTime:t,next:null,previous:null},null===n)n=l.next=l.previous=l;else{o=null,e=n;do{if(e.expirationTime>=t){o=e;break}e=e.next}while(e!==n);null===o?o=n:o===n&&(n=l,u()),(t=o.previous).next=o.previous=l,l.next=o,l.previous=t}}function d(){if(-1===i&&null!==n&&1===n.priorityLevel){s=!0;try{do{c()}while(null!==n&&1===n.priorityLevel)}finally{s=!1,null!==n?u():l=!1}}}function p(e){s=!0;var r=o;o=e;try{if(e)for(;null!==n;){var i=t.unstable_now();if(!(n.expirationTime<=i))break;do{c()}while(null!==n&&n.expirationTime<=i)}else if(null!==n)do{c()}while(null!==n&&!T())}finally{s=!1,o=r,null!==n?u():l=!1,d()}}var h,f,m=Date,g="function"==typeof setTimeout?setTimeout:void 0,v="function"==typeof clearTimeout?clearTimeout:void 0,y="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){h=y(function(t){v(f),e(t)}),f=g(function(){b(h),e(t.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var E=performance;t.unstable_now=function(){return E.now()}}else t.unstable_now=function(){return m.now()};var C,x,T,k=null;if("undefined"!=typeof window?k=window:void 0!==e&&(k=e),k&&k._schedMock){var S=k._schedMock;C=S[0],x=S[1],T=S[2],t.unstable_now=S[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var D=null,M=function(e){if(null!==D)try{D(e)}finally{D=null}};C=function(e){null!==D?setTimeout(C,0,e):(D=e,setTimeout(M,0,!1))},x=function(){D=null},T=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof y&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var R=null,_=!1,L=-1,P=!1,O=!1,N=0,F=33,A=33;T=function(){return N<=t.unstable_now()};var I=new MessageChannel,H=I.port2;I.port1.onmessage=function(){_=!1;var e=R,n=L;R=null,L=-1;var o=t.unstable_now(),r=!1;if(0>=N-o){if(!(-1!==n&&n<=o))return P||(P=!0,w(z)),R=e,void(L=n);r=!0}if(null!==e){O=!0;try{e(r)}finally{O=!1}}};var z=function(e){if(null!==R){w(z);var t=e-N+A;t<A&&F<A?(8>t&&(t=8),A=t<F?F:t):F=t,N=e+A,_||(_=!0,H.postMessage(void 0))}else P=!1};C=function(e,t){R=e,L=t,O||0>t?H.postMessage(void 0):P||(P=!0,w(z))},x=function(){R=null,_=!1,L=-1}}t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var o=r,a=i;r=e,i=t.unstable_now();try{return n()}finally{r=o,i=a,d()}},t.unstable_next=function(e){switch(r){case 1:case 2:case 3:var n=3;break;default:n=r}var o=r,a=i;r=n,i=t.unstable_now();try{return e()}finally{r=o,i=a,d()}},t.unstable_scheduleCallback=function(e,o){var a=-1!==i?i:t.unstable_now();if("object"==typeof o&&null!==o&&"number"==typeof o.timeout)o=a+o.timeout;else switch(r){case 1:o=a+-1;break;case 2:o=a+250;break;case 5:o=a+1073741823;break;case 4:o=a+1e4;break;default:o=a+5e3}if(e={callback:e,priorityLevel:r,expirationTime:o,next:null,previous:null},null===n)n=e.next=e.previous=e,u();else{a=null;var s=n;do{if(s.expirationTime>o){a=s;break}s=s.next}while(s!==n);null===a?a=n:a===n&&(n=e,u()),(o=a.previous).next=a.previous=e,e.next=a,e.previous=o}return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var o=e.previous;o.next=t,t.previous=o}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var n=r;return function(){var o=r,a=i;r=n,i=t.unstable_now();try{return e.apply(this,arguments)}finally{r=o,i=a,d()}}},t.unstable_getCurrentPriorityLevel=function(){return r},t.unstable_shouldYield=function(){return!o&&(null!==n&&n.expirationTime<a||T())},t.unstable_continueExecution=function(){null!==n&&u()},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return n}}).call(this,n(48))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e)return void console.error("Autobind error: No context provided.");var t=Object.getPrototypeOf(e);r=arguments.length>1?Array.prototype.slice.call(arguments,1):Object.getOwnPropertyNames(t);r.forEach(function(e){var n=Object.getOwnPropertyDescriptor(t,e);void 0!==n?-1===o.indexOf(e)&&"function"==typeof n.value&&Object.defineProperty(t,e,function(e,t,n){var o=n.value;return{configurable:!0,get:function(){if(this===e||this.hasOwnProperty(t))return o;var n=o.bind(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n}}}(t,e,n)):console.warn('Autobind: "'+e+'" method not found in class.')})};var o=["constructor","render","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount"],r=[];e.exports=t.default},function(e,t,n){"use strict";var o=n(51);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,a){if(a!==o){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var o;
/*!
* jQuery JavaScript Library v3.4.1
* https://jquery.com/
@@ -87,21 +87,21 @@ Object.defineProperty(t,"__esModule",{value:!0});var n=null,o=!1,r=3,i=-1,a=-1,s
*
* Date: 2019-04-08
*/
-function(e){var t,n,o,r,i,a,s,l,u,c,d,p,h,f,m,g,v,y,b,w="sizzle"+1*new Date,E=e.document,C=0,x=0,T=le(),k=le(),S=le(),D=le(),M=function(e,t){return e===t&&(d=!0),0},R={}.hasOwnProperty,P=[],_=P.pop,L=P.push,O=P.push,N=P.slice,F=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},A="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",I="[\\x20\\t\\r\\n\\f]",H="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+I+"*("+H+")(?:"+I+"*([*^$|!~]?=)"+I+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+I+"*\\]",j=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",B=new RegExp(I+"+","g"),U=new RegExp("^"+I+"+|((?:^|[^\\\\])(?:\\\\.)*)"+I+"+$","g"),W=new RegExp("^"+I+"*,"+I+"*"),q=new RegExp("^"+I+"*([>+~]|"+I+")"+I+"*"),V=new RegExp(I+"|>"),G=new RegExp(j),Y=new RegExp("^"+H+"$"),$={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+j),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+A+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ne=function(e,t,n){var o="0x"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},oe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){p()},ae=we(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(P=N.call(E.childNodes),E.childNodes),P[E.childNodes.length].nodeType}catch(e){O={apply:P.length?function(e,t){L.apply(e,N.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function se(e,t,o,r){var i,s,u,c,d,f,v,y=t&&t.ownerDocument,C=t?t.nodeType:9;if(o=o||[],"string"!=typeof e||!e||1!==C&&9!==C&&11!==C)return o;if(!r&&((t?t.ownerDocument||t:E)!==h&&p(t),t=t||h,m)){if(11!==C&&(d=Z.exec(e)))if(i=d[1]){if(9===C){if(!(u=t.getElementById(i)))return o;if(u.id===i)return o.push(u),o}else if(y&&(u=y.getElementById(i))&&b(t,u)&&u.id===i)return o.push(u),o}else{if(d[2])return O.apply(o,t.getElementsByTagName(e)),o;if((i=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(o,t.getElementsByClassName(i)),o}if(n.qsa&&!D[e+" "]&&(!g||!g.test(e))&&(1!==C||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===C&&V.test(e)){for((c=t.getAttribute("id"))?c=c.replace(oe,re):t.setAttribute("id",c=w),s=(f=a(e)).length;s--;)f[s]="#"+c+" "+be(f[s]);v=f.join(","),y=ee.test(e)&&ve(t.parentNode)||t}try{return O.apply(o,y.querySelectorAll(v)),o}catch(t){D(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return l(e.replace(U,"$1"),t,o,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>o.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ue(e){return e[w]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),r=n.length;r--;)o.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return ue(function(t){return t=+t,ue(function(n,o){for(var r,i=e([],n.length,t),a=i.length;a--;)n[r=i[a]]&&(n[r]=!(o[r]=n[r]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},p=se.setDocument=function(e){var t,r,a=e?e.ownerDocument||e:E;return a!==h&&9===a.nodeType&&a.documentElement?(f=(h=a).documentElement,m=!i(h),E!==h&&(r=h.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",ie,!1):r.attachEvent&&r.attachEvent("onunload",ie)),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(h.getElementsByClassName),n.getById=ce(function(e){return f.appendChild(e).id=w,!h.getElementsByName||!h.getElementsByName(w).length}),n.getById?(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),o.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},o.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(h.querySelectorAll))&&(ce(function(e){f.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+I+"*(?:value|"+A+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(n.matchesSelector=J.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",j)}),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(f.compareDocumentPosition),b=t||J.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},M=t?function(e,t){if(e===t)return d=!0,0;var o=!e.compareDocumentPosition-!t.compareDocumentPosition;return o||(1&(o=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===o?e===h||e.ownerDocument===E&&b(E,e)?-1:t===h||t.ownerDocument===E&&b(E,t)?1:c?F(c,e)-F(c,t):0:4&o?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!r||!i)return e===h?-1:t===h?1:r?-1:i?1:c?F(c,e)-F(c,t):0;if(r===i)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[o]===s[o];)o++;return o?pe(a[o],s[o]):a[o]===E?-1:s[o]===E?1:0},h):h},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==h&&p(e),n.matchesSelector&&m&&!D[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var o=y.call(e,t);if(o||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return o}catch(e){D(t,!0)}return se(t,h,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==h&&p(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==h&&p(e);var r=o.attrHandle[t.toLowerCase()],i=r&&R.call(o.attrHandle,t.toLowerCase())?r(e,t,!m):void 0;return void 0!==i?i:n.attributes||!m?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},se.escape=function(e){return(e+"").replace(oe,re)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,o=[],r=0,i=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(M),d){for(;t=e[i++];)t===e[i]&&(r=o.push(i));for(;r--;)e.splice(o[r],1)}return c=null,e},r=se.getText=function(e){var t,n="",o=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=r(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[o++];)n+=r(t);return n},(o=se.selectors={cacheLength:50,createPseudo:ue,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(o){var r=se.attr(o,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&r.indexOf(n)>-1:"$="===t?n&&r.slice(-n.length)===n:"~="===t?(" "+r.replace(B," ")+" ").indexOf(n)>-1:"|="===t&&(r===n||r.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,o,r){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===o&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,p,h,f,m=i!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(i){for(;m;){for(p=t;p=p[m];)if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(b=(h=(u=(c=(d=(p=g)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1])&&u[2],p=h&&g.childNodes[h];p=++h&&p&&p[m]||(b=h=0)||f.pop();)if(1===p.nodeType&&++b&&p===t){c[e]=[C,h,b];break}}else if(y&&(b=h=(u=(c=(d=(p=t)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1]),!1===b)for(;(p=++h&&p&&p[m]||(b=h=0)||f.pop())&&((s?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++b||(y&&((c=(d=p[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]=[C,b]),p!==t)););return(b-=r)===o||b%o==0&&b/o>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return r[w]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){for(var o,i=r(e,t),a=i.length;a--;)e[o=F(e,i[a])]=!(n[o]=i[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ue(function(e){var t=[],n=[],o=s(e.replace(U,"$1"));return o[w]?ue(function(e,t,n,r){for(var i,a=o(e,null,r,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return se(e,t).length>0}}),contains:ue(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||r(t)).indexOf(e)>-1}}),lang:ue(function(e){return Y.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===h.activeElement&&(!h.hasFocus||h.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge(function(){return[0]}),last:ge(function(e,t){return[t-1]}),eq:ge(function(e,t,n){return[n<0?n+t:n]}),even:ge(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ge(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ge(function(e,t,n){for(var o=n<0?n+t:n>t?t:n;--o>=0;)e.push(o);return e}),gt:ge(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=o.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[t]=he(t);for(t in{submit:!0,reset:!0})o.pseudos[t]=fe(t);function ye(){}function be(e){for(var t=0,n=e.length,o="";t<n;t++)o+=e[t].value;return o}function we(e,t,n){var o=t.dir,r=t.next,i=r||o,a=n&&"parentNode"===i,s=x++;return t.first?function(t,n,r){for(;t=t[o];)if(1===t.nodeType||a)return e(t,n,r);return!1}:function(t,n,l){var u,c,d,p=[C,s];if(l){for(;t=t[o];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[o];)if(1===t.nodeType||a)if(c=(d=t[w]||(t[w]={}))[t.uniqueID]||(d[t.uniqueID]={}),r&&r===t.nodeName.toLowerCase())t=t[o]||t;else{if((u=c[i])&&u[0]===C&&u[1]===s)return p[2]=u[2];if(c[i]=p,p[2]=e(t,n,l))return!0}return!1}}function Ee(e){return e.length>1?function(t,n,o){for(var r=e.length;r--;)if(!e[r](t,n,o))return!1;return!0}:e[0]}function Ce(e,t,n,o,r){for(var i,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(i=e[s])&&(n&&!n(i,o,r)||(a.push(i),u&&t.push(s)));return a}function xe(e,t,n,o,r,i){return o&&!o[w]&&(o=xe(o)),r&&!r[w]&&(r=xe(r,i)),ue(function(i,a,s,l){var u,c,d,p=[],h=[],f=a.length,m=i||function(e,t,n){for(var o=0,r=t.length;o<r;o++)se(e,t[o],n);return n}(t||"*",s.nodeType?[s]:s,[]),g=!e||!i&&t?m:Ce(m,p,e,s,l),v=n?r||(i?e:f||o)?[]:a:g;if(n&&n(g,v,s,l),o)for(u=Ce(v,h),o(u,[],s,l),c=u.length;c--;)(d=u[c])&&(v[h[c]]=!(g[h[c]]=d));if(i){if(r||e){if(r){for(u=[],c=v.length;c--;)(d=v[c])&&u.push(g[c]=d);r(null,v=[],u,l)}for(c=v.length;c--;)(d=v[c])&&(u=r?F(i,d):p[c])>-1&&(i[u]=!(a[u]=d))}}else v=Ce(v===a?v.splice(f,v.length):v),r?r(null,a,v,l):O.apply(a,v)})}function Te(e){for(var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=we(function(e){return e===t},s,!0),d=we(function(e){return F(t,e)>-1},s,!0),p=[function(e,n,o){var r=!a&&(o||n!==u)||((t=n).nodeType?c(e,n,o):d(e,n,o));return t=null,r}];l<i;l++)if(n=o.relative[e[l].type])p=[we(Ee(p),n)];else{if((n=o.filter[e[l].type].apply(null,e[l].matches))[w]){for(r=++l;r<i&&!o.relative[e[r].type];r++);return xe(l>1&&Ee(p),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(U,"$1"),n,l<r&&Te(e.slice(l,r)),r<i&&Te(e=e.slice(r)),r<i&&be(e))}p.push(n)}return Ee(p)}return ye.prototype=o.filters=o.pseudos,o.setFilters=new ye,a=se.tokenize=function(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);for(s=e,l=[],u=o.preFilter;s;){for(a in n&&!(r=W.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=q.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(U," ")}),s=s.slice(n.length)),o.filter)!(r=$[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):k(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],i=[],s=S[e+" "];if(!s){for(t||(t=a(e)),n=t.length;n--;)(s=Te(t[n]))[w]?r.push(s):i.push(s);(s=S(e,function(e,t){var n=t.length>0,r=e.length>0,i=function(i,a,s,l,c){var d,f,g,v=0,y="0",b=i&&[],w=[],E=u,x=i||r&&o.find.TAG("*",c),T=C+=null==E?1:Math.random()||.1,k=x.length;for(c&&(u=a===h||a||c);y!==k&&null!=(d=x[y]);y++){if(r&&d){for(f=0,a||d.ownerDocument===h||(p(d),s=!m);g=e[f++];)if(g(d,a||h,s)){l.push(d);break}c&&(C=T)}n&&((d=!g&&d)&&v--,i&&b.push(d))}if(v+=y,n&&y!==v){for(f=0;g=t[f++];)g(b,w,a,s);if(i){if(v>0)for(;y--;)b[y]||w[y]||(w[y]=_.call(l));w=Ce(w)}O.apply(l,w),c&&!i&&w.length>0&&v+t.length>1&&se.uniqueSort(l)}return c&&(C=T,u=E),b};return n?ue(i):i}(i,r))).selector=e}return s},l=se.select=function(e,t,n,r){var i,l,u,c,d,p="function"==typeof e&&e,h=!r&&a(e=p.selector||e);if(n=n||[],1===h.length){if((l=h[0]=h[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&m&&o.relative[l[1].type]){if(!(t=(o.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(i=$.needsContext.test(e)?0:l.length;i--&&(u=l[i],!o.relative[c=u.type]);)if((d=o.find[c])&&(r=d(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(i,1),!(e=r.length&&be(l)))return O.apply(n,r),n;break}}return(p||s(e,h))(r,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(M).join("")===w,n.detectDuplicates=!!d,p(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(h.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||de("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||de("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||de(A,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),se}(n);x.find=S,x.expr=S.selectors,x.expr[":"]=x.expr.pseudos,x.uniqueSort=x.unique=S.uniqueSort,x.text=S.getText,x.isXMLDoc=S.isXML,x.contains=S.contains,x.escapeSelector=S.escape;var D=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&x(e).is(n))break;o.push(e)}return o},M=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},R=x.expr.match.needsContext;function P(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var _=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return y(t)?x.grep(e,function(e,o){return!!t.call(e,o,e)!==n}):t.nodeType?x.grep(e,function(e){return e===t!==n}):"string"!=typeof t?x.grep(e,function(e){return d.call(t,e)>-1!==n}):x.filter(t,e,n)}x.filter=function(e,t,n){var o=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===o.nodeType?x.find.matchesSelector(o,e)?[o]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},x.fn.extend({find:function(e){var t,n,o=this.length,r=this;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;t<o;t++)if(x.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)x.find(e,r[t],n);return o>1?x.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&R.test(e)?x(e):e||[],!1).length}});var O,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(x.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||O,"string"==typeof e){if(!(o="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),_.test(o[1])&&x.isPlainObject(t))for(o in t)y(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=a.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this)}).prototype=x.fn,O=x(a);var F=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function I(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(x.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],a="string"!=typeof e&&x(e);if(!R.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?x.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?d.call(x(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(x.uniqueSort(x.merge(this.get(),x(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return D(e,"parentNode")},parentsUntil:function(e,t,n){return D(e,"parentNode",n)},next:function(e){return I(e,"nextSibling")},prev:function(e){return I(e,"previousSibling")},nextAll:function(e){return D(e,"nextSibling")},prevAll:function(e){return D(e,"previousSibling")},nextUntil:function(e,t,n){return D(e,"nextSibling",n)},prevUntil:function(e,t,n){return D(e,"previousSibling",n)},siblings:function(e){return M((e.parentNode||{}).firstChild,e)},children:function(e){return M(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(P(e,"template")&&(e=e.content||e),x.merge([],e.childNodes))}},function(e,t){x.fn[e]=function(n,o){var r=x.map(this,t,n);return"Until"!==e.slice(-5)&&(o=n),o&&"string"==typeof o&&(r=x.filter(o,r)),this.length>1&&(A[e]||x.uniqueSort(r),F.test(e)&&r.reverse()),this.pushStack(r)}});var H=/[^\x20\t\r\n\f]+/g;function z(e){return e}function j(e){throw e}function B(e,t,n,o){var r;try{e&&y(r=e.promise)?r.call(e).done(t).fail(n):e&&y(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}x.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return x.each(e.match(H)||[],function(e,n){t[n]=!0}),t}(e):x.extend({},e);var t,n,o,r,i=[],a=[],s=-1,l=function(){for(r=r||e.once,o=t=!0;a.length;s=-1)for(n=a.shift();++s<i.length;)!1===i[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=i.length,n=!1);e.memory||(n=!1),t=!1,r&&(i=n?[]:"")},u={add:function(){return i&&(n&&!t&&(s=i.length-1,a.push(n)),function t(n){x.each(n,function(n,o){y(o)?e.unique&&u.has(o)||i.push(o):o&&o.length&&"string"!==C(o)&&t(o)})}(arguments),n&&!t&&l()),this},remove:function(){return x.each(arguments,function(e,t){for(var n;(n=x.inArray(t,i,n))>-1;)i.splice(n,1),n<=s&&s--}),this},has:function(e){return e?x.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return r=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return r=a=[],n||t||(i=n=""),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!o}};return u},x.extend({Deferred:function(e){var t=[["notify","progress",x.Callbacks("memory"),x.Callbacks("memory"),2],["resolve","done",x.Callbacks("once memory"),x.Callbacks("once memory"),0,"resolved"],["reject","fail",x.Callbacks("once memory"),x.Callbacks("once memory"),1,"rejected"]],o="pending",r={state:function(){return o},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var r=y(e[o[4]])&&e[o[4]];i[o[1]](function(){var e=r&&r.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this,r?[e]:arguments)})}),e=null}).promise()},then:function(e,o,r){var i=0;function a(e,t,o,r){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e<i)){if((n=o.apply(s,l))===t.promise())throw new TypeError("Thenable self-resolution");u=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(u)?r?u.call(n,a(i,t,z,r),a(i,t,j,r)):(i++,u.call(n,a(i,t,z,r),a(i,t,j,r),a(i,t,z,t.notifyWith))):(o!==z&&(s=void 0,l=[n]),(r||t.resolveWith)(s,l))}},c=r?u:function(){try{u()}catch(n){x.Deferred.exceptionHook&&x.Deferred.exceptionHook(n,c.stackTrace),e+1>=i&&(o!==j&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(x.Deferred.getStackHook&&(c.stackTrace=x.Deferred.getStackHook()),n.setTimeout(c))}}return x.Deferred(function(n){t[0][3].add(a(0,n,y(r)?r:z,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:z)),t[2][3].add(a(0,n,y(o)?o:j))}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return x.each(t,function(e,n){var a=n[2],s=n[5];r[n[1]]=a.add,s&&a.add(function(){o=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),i[n[0]]=function(){return i[n[0]+"With"](this===i?void 0:this,arguments),this},i[n[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=arguments.length,n=t,o=Array(n),r=l.call(arguments),i=x.Deferred(),a=function(e){return function(n){o[e]=this,r[e]=arguments.length>1?l.call(arguments):n,--t||i.resolveWith(o,r)}};if(t<=1&&(B(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||y(r[n]&&r[n].then)))return i.then();for(;n--;)B(r[n],a(n),i.reject);return i.promise()}});var U=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;x.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&U.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},x.readyException=function(e){n.setTimeout(function(){throw e})};var W=x.Deferred();function q(){a.removeEventListener("DOMContentLoaded",q),n.removeEventListener("load",q),x.ready()}x.fn.ready=function(e){return W.then(e).catch(function(e){x.readyException(e)}),this},x.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==e&&--x.readyWait>0||W.resolveWith(a,[x]))}}),x.ready.then=W.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(x.ready):(a.addEventListener("DOMContentLoaded",q),n.addEventListener("load",q));var V=function(e,t,n,o,r,i,a){var s=0,l=e.length,u=null==n;if("object"===C(n))for(s in r=!0,n)V(e,t,s,n[s],!0,i,a);else if(void 0!==o&&(r=!0,y(o)||(a=!0),u&&(a?(t.call(e,o),t=null):(u=t,t=function(e,t,n){return u.call(x(e),n)})),t))for(;s<l;s++)t(e[s],n,a?o:o.call(e[s],s,t(e[s],n)));return r?e:u?t.call(e):l?t(e[0],n):i},G=/^-ms-/,Y=/-([a-z])/g;function $(e,t){return t.toUpperCase()}function X(e){return e.replace(G,"ms-").replace(Y,$)}var K=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=x.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},K(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if("string"==typeof t)r[X(t)]=n;else for(o in t)r[X(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in o?[t]:t.match(H)||[]).length;for(;n--;)delete o[t[n]]}(void 0===t||x.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!x.isEmptyObject(t)}};var J=new Q,Z=new Q,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(o))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}x.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,o,r,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(r=Z.get(i),1===i.nodeType&&!J.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(o=a[n].name).indexOf("data-")&&(o=X(o.slice(5)),ne(i,o,r[o]));J.set(i,"hasDataAttrs",!0)}return r}return"object"==typeof e?this.each(function(){Z.set(this,e)}):V(this,function(t){var n;if(i&&void 0===t)return void 0!==(n=Z.get(i,e))?n:void 0!==(n=ne(i,e))?n:void 0;this.each(function(){Z.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),x.extend({queue:function(e,t,n){var o;if(e)return t=(t||"fx")+"queue",o=J.get(e,t),n&&(!o||Array.isArray(n)?o=J.access(e,t,x.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),o=n.length,r=n.shift(),i=x._queueHooks(e,t);"inprogress"===r&&(r=n.shift(),o--),r&&("fx"===t&&n.unshift("inprogress"),delete i.stop,r.call(e,function(){x.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:x.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?x.queue(this[0],e):void 0===t?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,o=1,r=x.Deferred(),i=this,a=this.length,s=function(){--o||r.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)(n=J.get(i[a],e+"queueHooks"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var oe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,re=new RegExp("^(?:([+-])=|)("+oe+")([a-z%]*)$","i"),ie=["Top","Right","Bottom","Left"],ae=a.documentElement,se=function(e){return x.contains(e.ownerDocument,e)},le={composed:!0};ae.getRootNode&&(se=function(e){return x.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ue=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&se(e)&&"none"===x.css(e,"display")},ce=function(e,t,n,o){var r,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=a[i];return r};function de(e,t,n,o){var r,i,a=20,s=o?function(){return o.cur()}:function(){return x.css(e,t,"")},l=s(),u=n&&n[3]||(x.cssNumber[t]?"":"px"),c=e.nodeType&&(x.cssNumber[t]||"px"!==u&&+l)&&re.exec(x.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)x.style(e,t,c+u),(1-i)*(1-(i=s()/l||.5))<=0&&(a=0),c/=i;c*=2,x.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],o&&(o.unit=u,o.start=c,o.end=r)),r}var pe={};function he(e){var t,n=e.ownerDocument,o=e.nodeName,r=pe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=x.css(t,"display"),t.parentNode.removeChild(t),"none"===r&&(r="block"),pe[o]=r,r)}function fe(e,t){for(var n,o,r=[],i=0,a=e.length;i<a;i++)(o=e[i]).style&&(n=o.style.display,t?("none"===n&&(r[i]=J.get(o,"display")||null,r[i]||(o.style.display="")),""===o.style.display&&ue(o)&&(r[i]=he(o))):"none"!==n&&(r[i]="none",J.set(o,"display",n)));for(i=0;i<a;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}x.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ue(this)?x(this).show():x(this).hide()})}});var me=/^(?:checkbox|radio)$/i,ge=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ve=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&P(e,t)?x.merge([e],n):n}function we(e,t){for(var n=0,o=e.length;n<o;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var Ee,Ce,xe=/<|&#?\w+;/;function Te(e,t,n,o,r){for(var i,a,s,l,u,c,d=t.createDocumentFragment(),p=[],h=0,f=e.length;h<f;h++)if((i=e[h])||0===i)if("object"===C(i))x.merge(p,i.nodeType?[i]:i);else if(xe.test(i)){for(a=a||d.appendChild(t.createElement("div")),s=(ge.exec(i)||["",""])[1].toLowerCase(),l=ye[s]||ye._default,a.innerHTML=l[1]+x.htmlPrefilter(i)+l[2],c=l[0];c--;)a=a.lastChild;x.merge(p,a.childNodes),(a=d.firstChild).textContent=""}else p.push(t.createTextNode(i));for(d.textContent="",h=0;i=p[h++];)if(o&&x.inArray(i,o)>-1)r&&r.push(i);else if(u=se(i),a=be(d.appendChild(i),"script"),u&&we(a),n)for(c=0;i=a[c++];)ve.test(i.type||"")&&n.push(i);return d}Ee=a.createDocumentFragment().appendChild(a.createElement("div")),(Ce=a.createElement("input")).setAttribute("type","radio"),Ce.setAttribute("checked","checked"),Ce.setAttribute("name","t"),Ee.appendChild(Ce),v.checkClone=Ee.cloneNode(!0).cloneNode(!0).lastChild.checked,Ee.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!Ee.cloneNode(!0).lastChild.defaultValue;var ke=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,De=/^([^.]*)(?:\.(.+)|)/;function Me(){return!0}function Re(){return!1}function Pe(e,t){return e===function(){try{return a.activeElement}catch(e){}}()==("focus"===t)}function _e(e,t,n,o,r,i){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(o=o||n,n=void 0),t)_e(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&("string"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=Re;else if(!r)return e;return 1===i&&(a=r,(r=function(e){return x().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=x.guid++)),e.each(function(){x.event.add(this,t,r,o,n)})}function Le(e,t,n){n?(J.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var o,r,i=J.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=l.call(arguments),J.set(this,t,i),o=n(this,t),this[t](),i!==(r=J.get(this,t))||o?J.set(this,t,!1):r={},i!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else i.length&&(J.set(this,t,{value:x.event.trigger(x.extend(i[0],x.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&x.event.add(e,t,Me)}x.event={global:{},add:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.get(e);if(g)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&x.find.matchesSelector(ae,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==x&&x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(H)||[""]).length;u--;)h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h&&(d=x.event.special[h]||{},h=(r?d.delegateType:d.bindType)||h,d=x.event.special[h]||{},c=x.extend({type:h,origType:m,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:f.join(".")},i),(p=l[h])||((p=l[h]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,o,f,a)||e.addEventListener&&e.addEventListener(h,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,c):p.push(c),x.event.global[h]=!0)},remove:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.hasData(e)&&J.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(H)||[""]).length;u--;)if(h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h){for(d=x.event.special[h]||{},p=l[h=(o?d.delegateType:d.bindType)||h]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=p.length;i--;)c=p[i],!r&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||o&&o!==c.selector&&("**"!==o||!c.selector)||(p.splice(i,1),c.selector&&p.delegateCount--,d.remove&&d.remove.call(e,c));a&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,f,g.handle)||x.removeEvent(e,h,g.handle),delete l[h])}else for(h in l)x.event.remove(e,h+t[u],n,o,!0);x.isEmptyObject(l)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,o,r,i,a,s=x.event.fix(e),l=new Array(arguments.length),u=(J.get(this,"events")||{})[s.type]||[],c=x.event.special[s.type]||{};for(l[0]=s,t=1;t<arguments.length;t++)l[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){for(a=x.event.handlers.call(this,s,u),t=0;(r=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==i.namespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((x.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,l))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,a,s=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!("click"===e.type&&e.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(i=[],a={},n=0;n<l;n++)void 0===a[r=(o=t[n]).selector+" "]&&(a[r]=o.needsContext?x(r,this).index(u)>-1:x.find(r,this,null,[u]).length),a[r]&&i.push(o);i.length&&s.push({elem:u,handlers:i})}return u=this,l<t.length&&s.push({elem:u,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(x.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[x.expando]?e:new x.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&P(t,"input")&&Le(t,"click",Me),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&P(t,"input")&&Le(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&P(t,"input")&&J.get(t,"click")||P(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},x.Event=function(e,t){if(!(this instanceof x.Event))return new x.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Me:Re,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[x.expando]=!0},x.Event.prototype={constructor:x.Event,isDefaultPrevented:Re,isPropagationStopped:Re,isImmediatePropagationStopped:Re,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Me,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Me,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Me,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},x.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&ke.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Se.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},x.event.addProp),x.each({focus:"focusin",blur:"focusout"},function(e,t){x.event.special[e]={setup:function(){return Le(this,e,Pe),!1},trigger:function(){return Le(this,e),!0},delegateType:t}}),x.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,o=this,r=e.relatedTarget,i=e.handleObj;return r&&(r===o||x.contains(o,r))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),x.fn.extend({on:function(e,t,n,o){return _e(this,e,t,n,o)},one:function(e,t,n,o){return _e(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,x(e.delegateTarget).off(o.namespace?o.origType+"."+o.namespace:o.origType,o.selector,o.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Re),this.each(function(){x.event.remove(this,e,n,t)})}});var Oe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/<script|<style|<link/i,Fe=/checked\s*(?:[^=]|=\s*.checked.)/i,Ae=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ie(e,t){return P(e,"table")&&P(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ze(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,o,r,i,a,s,l,u;if(1===t.nodeType){if(J.hasData(e)&&(i=J.access(e),a=J.set(t,i),u=i.events))for(r in delete a.handle,a.events={},u)for(n=0,o=u[r].length;n<o;n++)x.event.add(t,r,u[r][n]);Z.hasData(e)&&(s=Z.access(e),l=x.extend({},s),Z.set(t,l))}}function Be(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Ue(e,t,n,o){t=u.apply([],t);var r,i,a,s,l,c,d=0,p=e.length,h=p-1,f=t[0],m=y(f);if(m||p>1&&"string"==typeof f&&!v.checkClone&&Fe.test(f))return e.each(function(r){var i=e.eq(r);m&&(t[0]=f.call(this,r,i.html())),Ue(i,t,n,o)});if(p&&(i=(r=Te(t,e[0].ownerDocument,!1,e,o)).firstChild,1===r.childNodes.length&&(r=i),i||o)){for(s=(a=x.map(be(r,"script"),He)).length;d<p;d++)l=r,d!==h&&(l=x.clone(l,!0,!0),s&&x.merge(a,be(l,"script"))),n.call(e[d],l,d);if(s)for(c=a[a.length-1].ownerDocument,x.map(a,ze),d=0;d<s;d++)l=a[d],ve.test(l.type||"")&&!J.access(l,"globalEval")&&x.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?x._evalUrl&&!l.noModule&&x._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):E(l.textContent.replace(Ae,""),l,c))}return e}function We(e,t,n){for(var o,r=t?x.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||x.cleanData(be(o)),o.parentNode&&(n&&se(o)&&we(be(o,"script")),o.parentNode.removeChild(o));return e}x.extend({htmlPrefilter:function(e){return e.replace(Oe,"<$1></$2>")},clone:function(e,t,n){var o,r,i,a,s=e.cloneNode(!0),l=se(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(a=be(s),o=0,r=(i=be(e)).length;o<r;o++)Be(i[o],a[o]);if(t)if(n)for(i=i||be(e),a=a||be(s),o=0,r=i.length;o<r;o++)je(i[o],a[o]);else je(e,s);return(a=be(s,"script")).length>0&&we(a,!l&&be(e,"script")),s},cleanData:function(e){for(var t,n,o,r=x.event.special,i=0;void 0!==(n=e[i]);i++)if(K(n)){if(t=n[J.expando]){if(t.events)for(o in t.events)r[o]?x.event.remove(n,o):x.removeEvent(n,o,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),x.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return V(this,function(e){return void 0===e?x.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ue(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ie(this,e).appendChild(e)})},prepend:function(){return Ue(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ie(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return V(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ye[(ge.exec(e)||["",""])[1].toLowerCase()]){e=x.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(x.cleanData(be(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Ue(this,arguments,function(t){var n=this.parentNode;x.inArray(this,e)<0&&(x.cleanData(be(this)),n&&n.replaceChild(t,this))},e)}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){for(var n,o=[],r=x(e),i=r.length-1,a=0;a<=i;a++)n=a===i?this:this.clone(!0),x(r[a])[t](n),c.apply(o,n.get());return this.pushStack(o)}});var qe=new RegExp("^("+oe+")(?!px)[a-z%]+$","i"),Ve=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ge=new RegExp(ie.join("|"),"i");function Ye(e,t,n){var o,r,i,a,s=e.style;return(n=n||Ve(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||se(e)||(a=x.style(e,t)),!v.pixelBoxStyles()&&qe.test(a)&&Ge.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ae.appendChild(u).appendChild(c);var e=n.getComputedStyle(c);o="1%"!==e.top,l=12===t(e.marginLeft),c.style.right="60%",s=36===t(e.right),r=36===t(e.width),c.style.position="absolute",i=12===t(c.offsetWidth/3),ae.removeChild(u),c=null}}function t(e){return Math.round(parseFloat(e))}var o,r,i,s,l,u=a.createElement("div"),c=a.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===c.style.backgroundClip,x.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),o},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),i}}))}();var Xe=["Webkit","Moz","ms"],Ke=a.createElement("div").style,Qe={};function Je(e){var t=x.cssProps[e]||Qe[e];return t||(e in Ke?e:Qe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Ke)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function ot(e,t,n){var o=re.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||"px"):t}function rt(e,t,n,o,r,i){var a="width"===t?1:0,s=0,l=0;if(n===(o?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=x.css(e,n+ie[a],!0,r)),o?("content"===n&&(l-=x.css(e,"padding"+ie[a],!0,r)),"margin"!==n&&(l-=x.css(e,"border"+ie[a]+"Width",!0,r))):(l+=x.css(e,"padding"+ie[a],!0,r),"padding"!==n?l+=x.css(e,"border"+ie[a]+"Width",!0,r):s+=x.css(e,"border"+ie[a]+"Width",!0,r));return!o&&i>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-l-s-.5))||0),l}function it(e,t,n){var o=Ve(e),r=(!v.boxSizingReliable()||n)&&"border-box"===x.css(e,"boxSizing",!1,o),i=r,a=Ye(e,t,o),s="offset"+t[0].toUpperCase()+t.slice(1);if(qe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&r||"auto"===a||!parseFloat(a)&&"inline"===x.css(e,"display",!1,o))&&e.getClientRects().length&&(r="border-box"===x.css(e,"boxSizing",!1,o),(i=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+rt(e,t,n||(r?"border":"content"),i,o,a)+"px"}function at(e,t,n,o,r){return new at.prototype.init(e,t,n,o,r)}x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ye(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,a,s=X(t),l=et.test(t),u=e.style;if(l||(t=Je(s)),a=x.cssHooks[t]||x.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,o))?r:u[t];"string"===(i=typeof n)&&(r=re.exec(n))&&r[1]&&(n=de(e,t,r),i="number"),null!=n&&n==n&&("number"!==i||l||(n+=r&&r[3]||(x.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,o))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,o){var r,i,a,s=X(t);return et.test(t)||(t=Je(s)),(a=x.cssHooks[t]||x.cssHooks[s])&&"get"in a&&(r=a.get(e,!0,n)),void 0===r&&(r=Ye(e,t,o)),"normal"===r&&t in nt&&(r=nt[t]),""===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,o){if(n)return!Ze.test(x.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?it(e,t,o):ce(e,tt,function(){return it(e,t,o)})},set:function(e,n,o){var r,i=Ve(e),a=!v.scrollboxSize()&&"absolute"===i.position,s=(a||o)&&"border-box"===x.css(e,"boxSizing",!1,i),l=o?rt(e,t,o,s,i):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-rt(e,t,"border",!1,i)-.5)),l&&(r=re.exec(n))&&"px"!==(r[3]||"px")&&(e.style[t]=n,n=x.css(e,t)),ot(0,n,l)}}}),x.cssHooks.marginLeft=$e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ye(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){for(var o=0,r={},i="string"==typeof n?n.split(" "):[n];o<4;o++)r[e+ie[o]+t]=i[o]||i[o-2]||i[0];return r}},"margin"!==e&&(x.cssHooks[e+t].set=ot)}),x.fn.extend({css:function(e,t){return V(this,function(e,t,n){var o,r,i={},a=0;if(Array.isArray(t)){for(o=Ve(e),r=t.length;a<r;a++)i[t[a]]=x.css(e,t[a],!1,o);return i}return void 0!==n?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)}}),x.Tween=at,at.prototype={constructor:at,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||x.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(x.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=x.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):1!==e.elem.nodeType||!x.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:x.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},x.fx=at.prototype.init,x.fx.step={};var st,lt,ut=/^(?:toggle|show|hide)$/,ct=/queueHooks$/;function dt(){lt&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,x.fx.interval),x.fx.tick())}function pt(){return n.setTimeout(function(){st=void 0}),st=Date.now()}function ht(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)r["margin"+(n=ie[o])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function ft(e,t,n){for(var o,r=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),i=0,a=r.length;i<a;i++)if(o=r[i].call(n,t,e))return o}function mt(e,t,n){var o,r,i=0,a=mt.prefilters.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=st||pt(),n=Math.max(0,u.startTime+u.duration-t),o=1-(n/u.duration||0),i=0,a=u.tweens.length;i<a;i++)u.tweens[i].run(o);return s.notifyWith(e,[u,o,n]),o<1&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{},easing:x.easing._default},n),originalProperties:t,originalOptions:n,startTime:st||pt(),duration:n.duration,tweens:[],createTween:function(t,n){var o=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(o),o},stop:function(t){var n=0,o=t?u.tweens.length:0;if(r)return this;for(r=!0;n<o;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(!function(e,t){var n,o,r,i,a;for(n in e)if(r=t[o=X(n)],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(a=x.cssHooks[o])&&"expand"in a)for(n in i=a.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(c,u.opts.specialEasing);i<a;i++)if(o=mt.prefilters[i].call(u,e,c,u.opts))return y(o.stop)&&(x._queueHooks(u.elem,u.opts.queue).stop=o.stop.bind(o)),o;return x.map(c,ft,u),y(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}x.Animation=x.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return de(n.elem,e,re.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(H);for(var n,o=0,r=e.length;o<r;o++)n=e[o],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,a,s,l,u,c,d="width"in t||"height"in t,p=this,h={},f=e.style,m=e.nodeType&&ue(e),g=J.get(e,"fxshow");for(o in n.queue||(null==(a=x._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),t)if(r=t[o],ut.test(r)){if(delete t[o],i=i||"toggle"===r,r===(m?"hide":"show")){if("show"!==r||!g||void 0===g[o])continue;m=!0}h[o]=g&&g[o]||x.style(e,o)}if((l=!x.isEmptyObject(t))||!x.isEmptyObject(h))for(o in d&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(u=g&&g.display)&&(u=J.get(e,"display")),"none"===(c=x.css(e,"display"))&&(u?c=u:(fe([e],!0),u=e.style.display||u,c=x.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===x.css(e,"float")&&(l||(p.done(function(){f.display=u}),null==u&&(c=f.display,u="none"===c?"":c)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",p.always(function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]})),l=!1,h)l||(g?"hidden"in g&&(m=g.hidden):g=J.access(e,"fxshow",{display:u}),i&&(g.hidden=!m),m&&fe([e],!0),p.done(function(){for(o in m||fe([e]),J.remove(e,"fxshow"),h)x.style(e,o,h[o])})),l=ft(m?g[o]:0,o,p),o in g||(g[o]=l.start,m&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),x.speed=function(e,t,n){var o=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return x.fx.off?o.duration=0:"number"!=typeof o.duration&&(o.duration in x.fx.speeds?o.duration=x.fx.speeds[o.duration]:o.duration=x.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue="fx"),o.old=o.complete,o.complete=function(){y(o.old)&&o.old.call(this),o.queue&&x.dequeue(this,o.queue)},o},x.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ue).css("opacity",0).show().end().animate({opacity:t},e,n,o)},animate:function(e,t,n,o){var r=x.isEmptyObject(e),i=x.speed(t,n,o),a=function(){var t=mt(this,x.extend({},e),i);(r||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,r||!1===i.queue?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var o=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",i=x.timers,a=J.get(this);if(r)a[r]&&a[r].stop&&o(a[r]);else for(r in a)a[r]&&a[r].stop&&ct.test(r)&&o(a[r]);for(r=i.length;r--;)i[r].elem!==this||null!=e&&i[r].queue!==e||(i[r].anim.stop(n),t=!1,i.splice(r,1));!t&&n||x.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),o=n[e+"queue"],r=n[e+"queueHooks"],i=x.timers,a=o?o.length:0;for(n.finish=!0,x.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<a;t++)o[t]&&o[t].finish&&o[t].finish.call(this);delete n.finish})}}),x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,o,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ht(t,!0),e,o,r)}}),x.each({slideDown:ht("show"),slideUp:ht("hide"),slideToggle:ht("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,o){return this.animate(t,e,n,o)}}),x.timers=[],x.fx.tick=function(){var e,t=0,n=x.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||x.fx.stop(),st=void 0},x.fx.timer=function(e){x.timers.push(e),x.fx.start()},x.fx.interval=13,x.fx.start=function(){lt||(lt=!0,dt())},x.fx.stop=function(){lt=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fn.delay=function(e,t){return e=x.fx&&x.fx.speeds[e]||e,t=t||"fx",this.queue(t,function(t,o){var r=n.setTimeout(t,e);o.stop=function(){n.clearTimeout(r)}})},function(){var e=a.createElement("input"),t=a.createElement("select").appendChild(a.createElement("option"));e.type="checkbox",v.checkOn=""!==e.value,v.optSelected=t.selected,(e=a.createElement("input")).value="t",e.type="radio",v.radioValue="t"===e.value}();var gt,vt=x.expr.attrHandle;x.fn.extend({attr:function(e,t){return V(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})}}),x.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?x.prop(e,t,n):(1===i&&x.isXMLDoc(e)||(r=x.attrHooks[t.toLowerCase()]||(x.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void x.removeAttr(e,t):r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(o=r.get(e,t))?o:null==(o=x.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&P(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(H);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=vt[t]||x.find.attr;vt[t]=function(e,t,o){var r,i,a=t.toLowerCase();return o||(i=vt[a],vt[a]=r,r=null!=n(e,t,o)?a:null,vt[a]=i),r}});var yt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function wt(e){return(e.match(H)||[]).join(" ")}function Et(e){return e.getAttribute&&e.getAttribute("class")||""}function Ct(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}x.fn.extend({prop:function(e,t){return V(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})}}),x.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&x.isXMLDoc(e)||(t=x.propFix[t]||t,r=x.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&"get"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.fn.extend({addClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).addClass(e.call(this,t,Et(this)))});if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)o.indexOf(" "+i+" ")<0&&(o+=i+" ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).removeClass(e.call(this,t,Et(this)))});if(!arguments.length)return this.attr("class","");if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)for(;o.indexOf(" "+i+" ")>-1;)o=o.replace(" "+i+" "," ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,o="string"===n||Array.isArray(e);return"boolean"==typeof t&&o?t?this.addClass(e):this.removeClass(e):y(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,Et(this),t),t)}):this.each(function(){var t,r,i,a;if(o)for(r=0,i=x(this),a=Ct(e);t=a[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=Et(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,o=0;for(t=" "+e+" ";n=this[o++];)if(1===n.nodeType&&(" "+wt(Et(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;x.fn.extend({val:function(e){var t,n,o,r=this[0];return arguments.length?(o=y(e),this.each(function(n){var r;1===this.nodeType&&(null==(r=o?e.call(this,n,x(this).val()):e)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=x.map(r,function(e){return null==e?"":e+""})),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))})):r?(t=x.valHooks[r.type]||x.valHooks[r.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:"string"==typeof(n=r.value)?n.replace(xt,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:wt(x.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?i+1:r.length;for(o=i<0?l:a?i:0;o<l;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!P(n.parentNode,"optgroup"))){if(t=x(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=x.makeArray(t),a=r.length;a--;)((o=r[a]).selected=x.inArray(x.valHooks.option.get(o),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=x.inArray(x(e).val(),t)>-1}},v.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in n;var Tt=/^(?:focusinfocus|focusoutblur)$/,kt=function(e){e.stopPropagation()};x.extend(x.event,{trigger:function(e,t,o,r){var i,s,l,u,c,d,p,h,m=[o||a],g=f.call(e,"type")?e.type:e,v=f.call(e,"namespace")?e.namespace.split("."):[];if(s=h=l=o=o||a,3!==o.nodeType&&8!==o.nodeType&&!Tt.test(g+x.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),c=g.indexOf(":")<0&&"on"+g,(e=e[x.expando]?e:new x.Event(g,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=o),t=null==t?[e]:x.makeArray(t,[e]),p=x.event.special[g]||{},r||!p.trigger||!1!==p.trigger.apply(o,t))){if(!r&&!p.noBubble&&!b(o)){for(u=p.delegateType||g,Tt.test(u+g)||(s=s.parentNode);s;s=s.parentNode)m.push(s),l=s;l===(o.ownerDocument||a)&&m.push(l.defaultView||l.parentWindow||n)}for(i=0;(s=m[i++])&&!e.isPropagationStopped();)h=s,e.type=i>1?u:p.bindType||g,(d=(J.get(s,"events")||{})[e.type]&&J.get(s,"handle"))&&d.apply(s,t),(d=c&&s[c])&&d.apply&&K(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=g,r||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(m.pop(),t)||!K(o)||c&&y(o[g])&&!b(o)&&((l=o[c])&&(o[c]=null),x.event.triggered=g,e.isPropagationStopped()&&h.addEventListener(g,kt),o[g](),e.isPropagationStopped()&&h.removeEventListener(g,kt),x.event.triggered=void 0,l&&(o[c]=l)),e.result}},simulate:function(e,t,n){var o=x.extend(new x.Event,n,{type:e,isSimulated:!0});x.event.trigger(o,null,t)}}),x.fn.extend({trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return x.event.trigger(e,t,n,!0)}}),v.focusin||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){x.event.simulate(t,e.target,x.event.fix(e))};x.event.special[t]={setup:function(){var o=this.ownerDocument||this,r=J.access(o,t);r||o.addEventListener(e,n,!0),J.access(o,t,(r||0)+1)},teardown:function(){var o=this.ownerDocument||this,r=J.access(o,t)-1;r?J.access(o,t,r):(o.removeEventListener(e,n,!0),J.remove(o,t))}}});var St=n.location,Dt=Date.now(),Mt=/\?/;x.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+e),t};var Rt=/\[\]$/,Pt=/\r?\n/g,_t=/^(?:submit|button|image|reset|file)$/i,Lt=/^(?:input|select|textarea|keygen)/i;function Ot(e,t,n,o){var r;if(Array.isArray(t))x.each(t,function(t,r){n||Rt.test(e)?o(e,r):Ot(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,o)});else if(n||"object"!==C(t))o(e,t);else for(r in t)Ot(e+"["+r+"]",t[r],n,o)}x.param=function(e,t){var n,o=[],r=function(e,t){var n=y(t)?t():t;o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){r(this.name,this.value)});else for(n in e)Ot(n,e[n],t,r);return o.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&Lt.test(this.nodeName)&&!_t.test(e)&&(this.checked||!me.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Pt,"\r\n")}}):{name:t.name,value:n.replace(Pt,"\r\n")}}).get()}});var Nt=/%20/g,Ft=/#.*$/,At=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,zt=/^\/\//,jt={},Bt={},Ut="*/".concat("*"),Wt=a.createElement("a");function qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var o,r=0,i=t.toLowerCase().match(H)||[];if(y(n))for(;o=i[r++];)"+"===o[0]?(o=o.slice(1)||"*",(e[o]=e[o]||[]).unshift(n)):(e[o]=e[o]||[]).push(n)}}function Vt(e,t,n,o){var r={},i=e===Bt;function a(s){var l;return r[s]=!0,x.each(e[s]||[],function(e,s){var u=s(t,n,o);return"string"!=typeof u||i||r[u]?i?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)}),l}return a(t.dataTypes[0])||!r["*"]&&a("*")}function Gt(e,t){var n,o,r=x.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&x.extend(!0,e,o),e}Wt.href=St.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:St.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(St.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ut,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,x.ajaxSettings),t):Gt(x.ajaxSettings,e)},ajaxPrefilter:qt(jt),ajaxTransport:qt(Bt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var o,r,i,s,l,u,c,d,p,h,f=x.ajaxSetup({},t),m=f.context||f,g=f.context&&(m.nodeType||m.jquery)?x(m):x.event,v=x.Deferred(),y=x.Callbacks("once memory"),b=f.statusCode||{},w={},E={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=It.exec(i);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?i:null},setRequestHeader:function(e,t){return null==c&&(e=E[e.toLowerCase()]=E[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return o&&o.abort(t),k(0,t),this}};if(v.promise(T),f.url=((e||f.url||St.href)+"").replace(zt,St.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){u=a.createElement("a");try{u.href=f.url,u.href=u.href,f.crossDomain=Wt.protocol+"//"+Wt.host!=u.protocol+"//"+u.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=x.param(f.data,f.traditional)),Vt(jt,f,t,T),c)return T;for(p in(d=x.event&&f.global)&&0==x.active++&&x.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),r=f.url.replace(Ft,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Nt,"+")):(h=f.url.slice(r.length),f.data&&(f.processData||"string"==typeof f.data)&&(r+=(Mt.test(r)?"&":"?")+f.data,delete f.data),!1===f.cache&&(r=r.replace(At,"$1"),h=(Mt.test(r)?"&":"?")+"_="+Dt+++h),f.url=r+h),f.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&T.setRequestHeader("Content-Type",f.contentType),T.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Ut+"; q=0.01":""):f.accepts["*"]),f.headers)T.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(m,T,f)||c))return T.abort();if(C="abort",y.add(f.complete),T.done(f.success),T.fail(f.error),o=Vt(Bt,f,t,T)){if(T.readyState=1,d&&g.trigger("ajaxSend",[T,f]),c)return T;f.async&&f.timeout>0&&(l=n.setTimeout(function(){T.abort("timeout")},f.timeout));try{c=!1,o.send(w,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(e,t,a,s){var u,p,h,w,E,C=t;c||(c=!0,l&&n.clearTimeout(l),o=void 0,i=s||"",T.readyState=e>0?4:0,u=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var o,r,i,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader("Content-Type"));if(o)for(r in s)if(s[r]&&s[r].test(o)){l.unshift(r);break}if(l[0]in n)i=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){i=r;break}a||(a=r)}i=i||a}if(i)return i!==l[0]&&l.unshift(i),n[i]}(f,T,a)),w=function(e,t,n,o){var r,i,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!l&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=i,i=c.shift())if("*"===i)i=l;else if("*"!==l&&l!==i){if(!(a=u[l+" "+i]||u["* "+i]))for(r in u)if((s=r.split(" "))[1]===i&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[r]:!0!==u[r]&&(i=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+i}}}return{state:"success",data:t}}(f,w,T,u),u?(f.ifModified&&((E=T.getResponseHeader("Last-Modified"))&&(x.lastModified[r]=E),(E=T.getResponseHeader("etag"))&&(x.etag[r]=E)),204===e||"HEAD"===f.type?C="nocontent":304===e?C="notmodified":(C=w.state,p=w.data,u=!(h=w.error))):(h=C,!e&&C||(C="error",e<0&&(e=0))),T.status=e,T.statusText=(t||C)+"",u?v.resolveWith(m,[p,C,T]):v.rejectWith(m,[T,C,h]),T.statusCode(b),b=void 0,d&&g.trigger(u?"ajaxSuccess":"ajaxError",[T,f,u?p:h]),y.fireWith(m,[T,C]),d&&(g.trigger("ajaxComplete",[T,f]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,void 0,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,o,r){return y(n)&&(r=r||o,o=n,n=void 0),x.ajax(x.extend({url:e,type:t,dataType:r,data:n,success:o},x.isPlainObject(e)&&e))}}),x._evalUrl=function(e,t){return x.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){x.globalEval(e,t)}})},x.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return y(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=y(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){x(this).replaceWith(this.childNodes)}),this}}),x.expr.pseudos.hidden=function(e){return!x.expr.pseudos.visible(e)},x.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},$t=x.ajaxSettings.xhr();v.cors=!!$t&&"withCredentials"in $t,v.ajax=$t=!!$t,x.ajaxTransport(function(e){var t,o;if(v.cors||$t&&!e.crossDomain)return{send:function(r,i){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest"),r)s.setRequestHeader(a,r[a]);t=function(e){return function(){t&&(t=o=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(Yt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),o=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=o:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&o()})},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),x.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(o,r){t=x("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),a.head.appendChild(t[0])},abort:function(){n&&n()}}});var Xt,Kt=[],Qt=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||x.expando+"_"+Dt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(e,t,o){var r,i,a,s=!1!==e.jsonp&&(Qt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Qt,"$1"+r):!1!==e.jsonp&&(e.url+=(Mt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||x.error(r+" was not called"),a[0]},e.dataTypes[0]="json",i=n[r],n[r]=function(){a=arguments},o.always(function(){void 0===i?x(n).removeProp(r):n[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),a&&y(i)&&i(a[0]),a=i=void 0}),"script"}),v.createHTMLDocument=((Xt=a.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Xt.childNodes.length),x.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((o=(t=a.implementation.createHTMLDocument("")).createElement("base")).href=a.location.href,t.head.appendChild(o)):t=a),i=!n&&[],(r=_.exec(e))?[t.createElement(r[1])]:(r=Te([e],t,i),i&&i.length&&x(i).remove(),x.merge([],r.childNodes)));var o,r,i},x.fn.load=function(e,t,n){var o,r,i,a=this,s=e.indexOf(" ");return s>-1&&(o=wt(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&x.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(o?x("<div>").append(x.parseHTML(e)).find(o):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.expr.pseudos.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length},x.offset={setOffset:function(e,t,n){var o,r,i,a,s,l,u=x.css(e,"position"),c=x(e),d={};"static"===u&&(e.style.position="relative"),s=c.offset(),i=x.css(e,"top"),l=x.css(e,"left"),("absolute"===u||"fixed"===u)&&(i+l).indexOf("auto")>-1?(a=(o=c.position()).top,r=o.left):(a=parseFloat(i)||0,r=parseFloat(l)||0),y(t)&&(t=t.call(e,n,x.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+r),"using"in t?t.using.call(e,d):c.css(d)}},x.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,o=this[0];return o?o.getClientRects().length?(t=o.getBoundingClientRect(),n=o.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,o=this[0],r={top:0,left:0};if("fixed"===x.css(o,"position"))t=o.getBoundingClientRect();else{for(t=this.offset(),n=o.ownerDocument,e=o.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===x.css(e,"position");)e=e.parentNode;e&&e!==o&&1===e.nodeType&&((r=x(e).offset()).top+=x.css(e,"borderTopWidth",!0),r.left+=x.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-x.css(o,"marginTop",!0),left:t.left-r.left-x.css(o,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===x.css(e,"position");)e=e.offsetParent;return e||ae})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;x.fn[e]=function(o){return V(this,function(e,o,r){var i;if(b(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===r)return i?i[t]:e[o];i?i.scrollTo(n?i.pageXOffset:r,n?r:i.pageYOffset):e[o]=r},e,o,arguments.length)}}),x.each(["top","left"],function(e,t){x.cssHooks[t]=$e(v.pixelPosition,function(e,n){if(n)return n=Ye(e,t),qe.test(n)?x(e).position()[t]+"px":n})}),x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,o){x.fn[o]=function(r,i){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===i?"margin":"border");return V(this,function(t,n,r){var i;return b(t)?0===o.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?x.css(t,n,s):x.style(t,n,r,s)},t,a?r:void 0,a)}})}),x.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),x.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),x.proxy=function(e,t){var n,o,r;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return o=l.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(l.call(arguments)))}).guid=e.guid=e.guid||x.guid++,r},x.holdReady=function(e){e?x.readyWait++:x.ready(!0)},x.isArray=Array.isArray,x.parseJSON=JSON.parse,x.nodeName=P,x.isFunction=y,x.isWindow=b,x.camelCase=X,x.type=C,x.now=Date.now,x.isNumeric=function(e){var t=x.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(o=function(){return x}.apply(t,[]))||(e.exports=o);var Jt=n.jQuery,Zt=n.$;return x.noConflict=function(e){return n.$===x&&(n.$=Zt),e&&n.jQuery===x&&(n.jQuery=Jt),x},r||(n.jQuery=n.$=x),x})},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,n){"use strict";e.exports=n(55)},function(e,t,n){"use strict";
+function(e){var t,n,o,r,i,a,s,l,u,c,d,p,h,f,m,g,v,y,b,w="sizzle"+1*new Date,E=e.document,C=0,x=0,T=le(),k=le(),S=le(),D=le(),M=function(e,t){return e===t&&(d=!0),0},R={}.hasOwnProperty,_=[],L=_.pop,P=_.push,O=_.push,N=_.slice,F=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},A="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",I="[\\x20\\t\\r\\n\\f]",H="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+I+"*("+H+")(?:"+I+"*([*^$|!~]?=)"+I+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+I+"*\\]",j=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",B=new RegExp(I+"+","g"),U=new RegExp("^"+I+"+|((?:^|[^\\\\])(?:\\\\.)*)"+I+"+$","g"),W=new RegExp("^"+I+"*,"+I+"*"),q=new RegExp("^"+I+"*([>+~]|"+I+")"+I+"*"),G=new RegExp(I+"|>"),V=new RegExp(j),Y=new RegExp("^"+H+"$"),$={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+j),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+A+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ne=function(e,t,n){var o="0x"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},oe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){p()},ae=we(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(_=N.call(E.childNodes),E.childNodes),_[E.childNodes.length].nodeType}catch(e){O={apply:_.length?function(e,t){P.apply(e,N.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function se(e,t,o,r){var i,s,u,c,d,f,v,y=t&&t.ownerDocument,C=t?t.nodeType:9;if(o=o||[],"string"!=typeof e||!e||1!==C&&9!==C&&11!==C)return o;if(!r&&((t?t.ownerDocument||t:E)!==h&&p(t),t=t||h,m)){if(11!==C&&(d=Z.exec(e)))if(i=d[1]){if(9===C){if(!(u=t.getElementById(i)))return o;if(u.id===i)return o.push(u),o}else if(y&&(u=y.getElementById(i))&&b(t,u)&&u.id===i)return o.push(u),o}else{if(d[2])return O.apply(o,t.getElementsByTagName(e)),o;if((i=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(o,t.getElementsByClassName(i)),o}if(n.qsa&&!D[e+" "]&&(!g||!g.test(e))&&(1!==C||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===C&&G.test(e)){for((c=t.getAttribute("id"))?c=c.replace(oe,re):t.setAttribute("id",c=w),s=(f=a(e)).length;s--;)f[s]="#"+c+" "+be(f[s]);v=f.join(","),y=ee.test(e)&&ve(t.parentNode)||t}try{return O.apply(o,y.querySelectorAll(v)),o}catch(t){D(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return l(e.replace(U,"$1"),t,o,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>o.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ue(e){return e[w]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),r=n.length;r--;)o.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return ue(function(t){return t=+t,ue(function(n,o){for(var r,i=e([],n.length,t),a=i.length;a--;)n[r=i[a]]&&(n[r]=!(o[r]=n[r]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},p=se.setDocument=function(e){var t,r,a=e?e.ownerDocument||e:E;return a!==h&&9===a.nodeType&&a.documentElement?(f=(h=a).documentElement,m=!i(h),E!==h&&(r=h.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",ie,!1):r.attachEvent&&r.attachEvent("onunload",ie)),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(h.getElementsByClassName),n.getById=ce(function(e){return f.appendChild(e).id=w,!h.getElementsByName||!h.getElementsByName(w).length}),n.getById?(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),o.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},o.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(h.querySelectorAll))&&(ce(function(e){f.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+I+"*(?:value|"+A+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(n.matchesSelector=J.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",j)}),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(f.compareDocumentPosition),b=t||J.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},M=t?function(e,t){if(e===t)return d=!0,0;var o=!e.compareDocumentPosition-!t.compareDocumentPosition;return o||(1&(o=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===o?e===h||e.ownerDocument===E&&b(E,e)?-1:t===h||t.ownerDocument===E&&b(E,t)?1:c?F(c,e)-F(c,t):0:4&o?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!r||!i)return e===h?-1:t===h?1:r?-1:i?1:c?F(c,e)-F(c,t):0;if(r===i)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[o]===s[o];)o++;return o?pe(a[o],s[o]):a[o]===E?-1:s[o]===E?1:0},h):h},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==h&&p(e),n.matchesSelector&&m&&!D[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var o=y.call(e,t);if(o||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return o}catch(e){D(t,!0)}return se(t,h,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==h&&p(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==h&&p(e);var r=o.attrHandle[t.toLowerCase()],i=r&&R.call(o.attrHandle,t.toLowerCase())?r(e,t,!m):void 0;return void 0!==i?i:n.attributes||!m?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},se.escape=function(e){return(e+"").replace(oe,re)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,o=[],r=0,i=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(M),d){for(;t=e[i++];)t===e[i]&&(r=o.push(i));for(;r--;)e.splice(o[r],1)}return c=null,e},r=se.getText=function(e){var t,n="",o=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=r(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[o++];)n+=r(t);return n},(o=se.selectors={cacheLength:50,createPseudo:ue,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(o){var r=se.attr(o,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&r.indexOf(n)>-1:"$="===t?n&&r.slice(-n.length)===n:"~="===t?(" "+r.replace(B," ")+" ").indexOf(n)>-1:"|="===t&&(r===n||r.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,o,r){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===o&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,p,h,f,m=i!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(i){for(;m;){for(p=t;p=p[m];)if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(b=(h=(u=(c=(d=(p=g)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1])&&u[2],p=h&&g.childNodes[h];p=++h&&p&&p[m]||(b=h=0)||f.pop();)if(1===p.nodeType&&++b&&p===t){c[e]=[C,h,b];break}}else if(y&&(b=h=(u=(c=(d=(p=t)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1]),!1===b)for(;(p=++h&&p&&p[m]||(b=h=0)||f.pop())&&((s?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++b||(y&&((c=(d=p[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]=[C,b]),p!==t)););return(b-=r)===o||b%o==0&&b/o>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return r[w]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){for(var o,i=r(e,t),a=i.length;a--;)e[o=F(e,i[a])]=!(n[o]=i[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ue(function(e){var t=[],n=[],o=s(e.replace(U,"$1"));return o[w]?ue(function(e,t,n,r){for(var i,a=o(e,null,r,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return se(e,t).length>0}}),contains:ue(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||r(t)).indexOf(e)>-1}}),lang:ue(function(e){return Y.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===h.activeElement&&(!h.hasFocus||h.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge(function(){return[0]}),last:ge(function(e,t){return[t-1]}),eq:ge(function(e,t,n){return[n<0?n+t:n]}),even:ge(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ge(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ge(function(e,t,n){for(var o=n<0?n+t:n>t?t:n;--o>=0;)e.push(o);return e}),gt:ge(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=o.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[t]=he(t);for(t in{submit:!0,reset:!0})o.pseudos[t]=fe(t);function ye(){}function be(e){for(var t=0,n=e.length,o="";t<n;t++)o+=e[t].value;return o}function we(e,t,n){var o=t.dir,r=t.next,i=r||o,a=n&&"parentNode"===i,s=x++;return t.first?function(t,n,r){for(;t=t[o];)if(1===t.nodeType||a)return e(t,n,r);return!1}:function(t,n,l){var u,c,d,p=[C,s];if(l){for(;t=t[o];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[o];)if(1===t.nodeType||a)if(c=(d=t[w]||(t[w]={}))[t.uniqueID]||(d[t.uniqueID]={}),r&&r===t.nodeName.toLowerCase())t=t[o]||t;else{if((u=c[i])&&u[0]===C&&u[1]===s)return p[2]=u[2];if(c[i]=p,p[2]=e(t,n,l))return!0}return!1}}function Ee(e){return e.length>1?function(t,n,o){for(var r=e.length;r--;)if(!e[r](t,n,o))return!1;return!0}:e[0]}function Ce(e,t,n,o,r){for(var i,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(i=e[s])&&(n&&!n(i,o,r)||(a.push(i),u&&t.push(s)));return a}function xe(e,t,n,o,r,i){return o&&!o[w]&&(o=xe(o)),r&&!r[w]&&(r=xe(r,i)),ue(function(i,a,s,l){var u,c,d,p=[],h=[],f=a.length,m=i||function(e,t,n){for(var o=0,r=t.length;o<r;o++)se(e,t[o],n);return n}(t||"*",s.nodeType?[s]:s,[]),g=!e||!i&&t?m:Ce(m,p,e,s,l),v=n?r||(i?e:f||o)?[]:a:g;if(n&&n(g,v,s,l),o)for(u=Ce(v,h),o(u,[],s,l),c=u.length;c--;)(d=u[c])&&(v[h[c]]=!(g[h[c]]=d));if(i){if(r||e){if(r){for(u=[],c=v.length;c--;)(d=v[c])&&u.push(g[c]=d);r(null,v=[],u,l)}for(c=v.length;c--;)(d=v[c])&&(u=r?F(i,d):p[c])>-1&&(i[u]=!(a[u]=d))}}else v=Ce(v===a?v.splice(f,v.length):v),r?r(null,a,v,l):O.apply(a,v)})}function Te(e){for(var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=we(function(e){return e===t},s,!0),d=we(function(e){return F(t,e)>-1},s,!0),p=[function(e,n,o){var r=!a&&(o||n!==u)||((t=n).nodeType?c(e,n,o):d(e,n,o));return t=null,r}];l<i;l++)if(n=o.relative[e[l].type])p=[we(Ee(p),n)];else{if((n=o.filter[e[l].type].apply(null,e[l].matches))[w]){for(r=++l;r<i&&!o.relative[e[r].type];r++);return xe(l>1&&Ee(p),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(U,"$1"),n,l<r&&Te(e.slice(l,r)),r<i&&Te(e=e.slice(r)),r<i&&be(e))}p.push(n)}return Ee(p)}return ye.prototype=o.filters=o.pseudos,o.setFilters=new ye,a=se.tokenize=function(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);for(s=e,l=[],u=o.preFilter;s;){for(a in n&&!(r=W.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=q.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(U," ")}),s=s.slice(n.length)),o.filter)!(r=$[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):k(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],i=[],s=S[e+" "];if(!s){for(t||(t=a(e)),n=t.length;n--;)(s=Te(t[n]))[w]?r.push(s):i.push(s);(s=S(e,function(e,t){var n=t.length>0,r=e.length>0,i=function(i,a,s,l,c){var d,f,g,v=0,y="0",b=i&&[],w=[],E=u,x=i||r&&o.find.TAG("*",c),T=C+=null==E?1:Math.random()||.1,k=x.length;for(c&&(u=a===h||a||c);y!==k&&null!=(d=x[y]);y++){if(r&&d){for(f=0,a||d.ownerDocument===h||(p(d),s=!m);g=e[f++];)if(g(d,a||h,s)){l.push(d);break}c&&(C=T)}n&&((d=!g&&d)&&v--,i&&b.push(d))}if(v+=y,n&&y!==v){for(f=0;g=t[f++];)g(b,w,a,s);if(i){if(v>0)for(;y--;)b[y]||w[y]||(w[y]=L.call(l));w=Ce(w)}O.apply(l,w),c&&!i&&w.length>0&&v+t.length>1&&se.uniqueSort(l)}return c&&(C=T,u=E),b};return n?ue(i):i}(i,r))).selector=e}return s},l=se.select=function(e,t,n,r){var i,l,u,c,d,p="function"==typeof e&&e,h=!r&&a(e=p.selector||e);if(n=n||[],1===h.length){if((l=h[0]=h[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&m&&o.relative[l[1].type]){if(!(t=(o.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(i=$.needsContext.test(e)?0:l.length;i--&&(u=l[i],!o.relative[c=u.type]);)if((d=o.find[c])&&(r=d(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(i,1),!(e=r.length&&be(l)))return O.apply(n,r),n;break}}return(p||s(e,h))(r,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(M).join("")===w,n.detectDuplicates=!!d,p(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(h.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||de("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||de("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||de(A,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),se}(n);x.find=S,x.expr=S.selectors,x.expr[":"]=x.expr.pseudos,x.uniqueSort=x.unique=S.uniqueSort,x.text=S.getText,x.isXMLDoc=S.isXML,x.contains=S.contains,x.escapeSelector=S.escape;var D=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&x(e).is(n))break;o.push(e)}return o},M=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},R=x.expr.match.needsContext;function _(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var L=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function P(e,t,n){return y(t)?x.grep(e,function(e,o){return!!t.call(e,o,e)!==n}):t.nodeType?x.grep(e,function(e){return e===t!==n}):"string"!=typeof t?x.grep(e,function(e){return d.call(t,e)>-1!==n}):x.filter(t,e,n)}x.filter=function(e,t,n){var o=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===o.nodeType?x.find.matchesSelector(o,e)?[o]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},x.fn.extend({find:function(e){var t,n,o=this.length,r=this;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;t<o;t++)if(x.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)x.find(e,r[t],n);return o>1?x.uniqueSort(n):n},filter:function(e){return this.pushStack(P(this,e||[],!1))},not:function(e){return this.pushStack(P(this,e||[],!0))},is:function(e){return!!P(this,"string"==typeof e&&R.test(e)?x(e):e||[],!1).length}});var O,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(x.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||O,"string"==typeof e){if(!(o="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),L.test(o[1])&&x.isPlainObject(t))for(o in t)y(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=a.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this)}).prototype=x.fn,O=x(a);var F=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function I(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(x.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],a="string"!=typeof e&&x(e);if(!R.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?x.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?d.call(x(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(x.uniqueSort(x.merge(this.get(),x(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return D(e,"parentNode")},parentsUntil:function(e,t,n){return D(e,"parentNode",n)},next:function(e){return I(e,"nextSibling")},prev:function(e){return I(e,"previousSibling")},nextAll:function(e){return D(e,"nextSibling")},prevAll:function(e){return D(e,"previousSibling")},nextUntil:function(e,t,n){return D(e,"nextSibling",n)},prevUntil:function(e,t,n){return D(e,"previousSibling",n)},siblings:function(e){return M((e.parentNode||{}).firstChild,e)},children:function(e){return M(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(_(e,"template")&&(e=e.content||e),x.merge([],e.childNodes))}},function(e,t){x.fn[e]=function(n,o){var r=x.map(this,t,n);return"Until"!==e.slice(-5)&&(o=n),o&&"string"==typeof o&&(r=x.filter(o,r)),this.length>1&&(A[e]||x.uniqueSort(r),F.test(e)&&r.reverse()),this.pushStack(r)}});var H=/[^\x20\t\r\n\f]+/g;function z(e){return e}function j(e){throw e}function B(e,t,n,o){var r;try{e&&y(r=e.promise)?r.call(e).done(t).fail(n):e&&y(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}x.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return x.each(e.match(H)||[],function(e,n){t[n]=!0}),t}(e):x.extend({},e);var t,n,o,r,i=[],a=[],s=-1,l=function(){for(r=r||e.once,o=t=!0;a.length;s=-1)for(n=a.shift();++s<i.length;)!1===i[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=i.length,n=!1);e.memory||(n=!1),t=!1,r&&(i=n?[]:"")},u={add:function(){return i&&(n&&!t&&(s=i.length-1,a.push(n)),function t(n){x.each(n,function(n,o){y(o)?e.unique&&u.has(o)||i.push(o):o&&o.length&&"string"!==C(o)&&t(o)})}(arguments),n&&!t&&l()),this},remove:function(){return x.each(arguments,function(e,t){for(var n;(n=x.inArray(t,i,n))>-1;)i.splice(n,1),n<=s&&s--}),this},has:function(e){return e?x.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return r=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return r=a=[],n||t||(i=n=""),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!o}};return u},x.extend({Deferred:function(e){var t=[["notify","progress",x.Callbacks("memory"),x.Callbacks("memory"),2],["resolve","done",x.Callbacks("once memory"),x.Callbacks("once memory"),0,"resolved"],["reject","fail",x.Callbacks("once memory"),x.Callbacks("once memory"),1,"rejected"]],o="pending",r={state:function(){return o},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var r=y(e[o[4]])&&e[o[4]];i[o[1]](function(){var e=r&&r.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this,r?[e]:arguments)})}),e=null}).promise()},then:function(e,o,r){var i=0;function a(e,t,o,r){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e<i)){if((n=o.apply(s,l))===t.promise())throw new TypeError("Thenable self-resolution");u=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(u)?r?u.call(n,a(i,t,z,r),a(i,t,j,r)):(i++,u.call(n,a(i,t,z,r),a(i,t,j,r),a(i,t,z,t.notifyWith))):(o!==z&&(s=void 0,l=[n]),(r||t.resolveWith)(s,l))}},c=r?u:function(){try{u()}catch(n){x.Deferred.exceptionHook&&x.Deferred.exceptionHook(n,c.stackTrace),e+1>=i&&(o!==j&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(x.Deferred.getStackHook&&(c.stackTrace=x.Deferred.getStackHook()),n.setTimeout(c))}}return x.Deferred(function(n){t[0][3].add(a(0,n,y(r)?r:z,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:z)),t[2][3].add(a(0,n,y(o)?o:j))}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return x.each(t,function(e,n){var a=n[2],s=n[5];r[n[1]]=a.add,s&&a.add(function(){o=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),i[n[0]]=function(){return i[n[0]+"With"](this===i?void 0:this,arguments),this},i[n[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=arguments.length,n=t,o=Array(n),r=l.call(arguments),i=x.Deferred(),a=function(e){return function(n){o[e]=this,r[e]=arguments.length>1?l.call(arguments):n,--t||i.resolveWith(o,r)}};if(t<=1&&(B(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||y(r[n]&&r[n].then)))return i.then();for(;n--;)B(r[n],a(n),i.reject);return i.promise()}});var U=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;x.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&U.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},x.readyException=function(e){n.setTimeout(function(){throw e})};var W=x.Deferred();function q(){a.removeEventListener("DOMContentLoaded",q),n.removeEventListener("load",q),x.ready()}x.fn.ready=function(e){return W.then(e).catch(function(e){x.readyException(e)}),this},x.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==e&&--x.readyWait>0||W.resolveWith(a,[x]))}}),x.ready.then=W.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(x.ready):(a.addEventListener("DOMContentLoaded",q),n.addEventListener("load",q));var G=function(e,t,n,o,r,i,a){var s=0,l=e.length,u=null==n;if("object"===C(n))for(s in r=!0,n)G(e,t,s,n[s],!0,i,a);else if(void 0!==o&&(r=!0,y(o)||(a=!0),u&&(a?(t.call(e,o),t=null):(u=t,t=function(e,t,n){return u.call(x(e),n)})),t))for(;s<l;s++)t(e[s],n,a?o:o.call(e[s],s,t(e[s],n)));return r?e:u?t.call(e):l?t(e[0],n):i},V=/^-ms-/,Y=/-([a-z])/g;function $(e,t){return t.toUpperCase()}function X(e){return e.replace(V,"ms-").replace(Y,$)}var K=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=x.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},K(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if("string"==typeof t)r[X(t)]=n;else for(o in t)r[X(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in o?[t]:t.match(H)||[]).length;for(;n--;)delete o[t[n]]}(void 0===t||x.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!x.isEmptyObject(t)}};var J=new Q,Z=new Q,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(o))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}x.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,o,r,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(r=Z.get(i),1===i.nodeType&&!J.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(o=a[n].name).indexOf("data-")&&(o=X(o.slice(5)),ne(i,o,r[o]));J.set(i,"hasDataAttrs",!0)}return r}return"object"==typeof e?this.each(function(){Z.set(this,e)}):G(this,function(t){var n;if(i&&void 0===t)return void 0!==(n=Z.get(i,e))?n:void 0!==(n=ne(i,e))?n:void 0;this.each(function(){Z.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),x.extend({queue:function(e,t,n){var o;if(e)return t=(t||"fx")+"queue",o=J.get(e,t),n&&(!o||Array.isArray(n)?o=J.access(e,t,x.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),o=n.length,r=n.shift(),i=x._queueHooks(e,t);"inprogress"===r&&(r=n.shift(),o--),r&&("fx"===t&&n.unshift("inprogress"),delete i.stop,r.call(e,function(){x.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:x.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?x.queue(this[0],e):void 0===t?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,o=1,r=x.Deferred(),i=this,a=this.length,s=function(){--o||r.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)(n=J.get(i[a],e+"queueHooks"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var oe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,re=new RegExp("^(?:([+-])=|)("+oe+")([a-z%]*)$","i"),ie=["Top","Right","Bottom","Left"],ae=a.documentElement,se=function(e){return x.contains(e.ownerDocument,e)},le={composed:!0};ae.getRootNode&&(se=function(e){return x.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ue=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&se(e)&&"none"===x.css(e,"display")},ce=function(e,t,n,o){var r,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=a[i];return r};function de(e,t,n,o){var r,i,a=20,s=o?function(){return o.cur()}:function(){return x.css(e,t,"")},l=s(),u=n&&n[3]||(x.cssNumber[t]?"":"px"),c=e.nodeType&&(x.cssNumber[t]||"px"!==u&&+l)&&re.exec(x.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)x.style(e,t,c+u),(1-i)*(1-(i=s()/l||.5))<=0&&(a=0),c/=i;c*=2,x.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],o&&(o.unit=u,o.start=c,o.end=r)),r}var pe={};function he(e){var t,n=e.ownerDocument,o=e.nodeName,r=pe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=x.css(t,"display"),t.parentNode.removeChild(t),"none"===r&&(r="block"),pe[o]=r,r)}function fe(e,t){for(var n,o,r=[],i=0,a=e.length;i<a;i++)(o=e[i]).style&&(n=o.style.display,t?("none"===n&&(r[i]=J.get(o,"display")||null,r[i]||(o.style.display="")),""===o.style.display&&ue(o)&&(r[i]=he(o))):"none"!==n&&(r[i]="none",J.set(o,"display",n)));for(i=0;i<a;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}x.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ue(this)?x(this).show():x(this).hide()})}});var me=/^(?:checkbox|radio)$/i,ge=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ve=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&_(e,t)?x.merge([e],n):n}function we(e,t){for(var n=0,o=e.length;n<o;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var Ee,Ce,xe=/<|&#?\w+;/;function Te(e,t,n,o,r){for(var i,a,s,l,u,c,d=t.createDocumentFragment(),p=[],h=0,f=e.length;h<f;h++)if((i=e[h])||0===i)if("object"===C(i))x.merge(p,i.nodeType?[i]:i);else if(xe.test(i)){for(a=a||d.appendChild(t.createElement("div")),s=(ge.exec(i)||["",""])[1].toLowerCase(),l=ye[s]||ye._default,a.innerHTML=l[1]+x.htmlPrefilter(i)+l[2],c=l[0];c--;)a=a.lastChild;x.merge(p,a.childNodes),(a=d.firstChild).textContent=""}else p.push(t.createTextNode(i));for(d.textContent="",h=0;i=p[h++];)if(o&&x.inArray(i,o)>-1)r&&r.push(i);else if(u=se(i),a=be(d.appendChild(i),"script"),u&&we(a),n)for(c=0;i=a[c++];)ve.test(i.type||"")&&n.push(i);return d}Ee=a.createDocumentFragment().appendChild(a.createElement("div")),(Ce=a.createElement("input")).setAttribute("type","radio"),Ce.setAttribute("checked","checked"),Ce.setAttribute("name","t"),Ee.appendChild(Ce),v.checkClone=Ee.cloneNode(!0).cloneNode(!0).lastChild.checked,Ee.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!Ee.cloneNode(!0).lastChild.defaultValue;var ke=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,De=/^([^.]*)(?:\.(.+)|)/;function Me(){return!0}function Re(){return!1}function _e(e,t){return e===function(){try{return a.activeElement}catch(e){}}()==("focus"===t)}function Le(e,t,n,o,r,i){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(o=o||n,n=void 0),t)Le(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&("string"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=Re;else if(!r)return e;return 1===i&&(a=r,(r=function(e){return x().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=x.guid++)),e.each(function(){x.event.add(this,t,r,o,n)})}function Pe(e,t,n){n?(J.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var o,r,i=J.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=l.call(arguments),J.set(this,t,i),o=n(this,t),this[t](),i!==(r=J.get(this,t))||o?J.set(this,t,!1):r={},i!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else i.length&&(J.set(this,t,{value:x.event.trigger(x.extend(i[0],x.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&x.event.add(e,t,Me)}x.event={global:{},add:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.get(e);if(g)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&x.find.matchesSelector(ae,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==x&&x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(H)||[""]).length;u--;)h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h&&(d=x.event.special[h]||{},h=(r?d.delegateType:d.bindType)||h,d=x.event.special[h]||{},c=x.extend({type:h,origType:m,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:f.join(".")},i),(p=l[h])||((p=l[h]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,o,f,a)||e.addEventListener&&e.addEventListener(h,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,c):p.push(c),x.event.global[h]=!0)},remove:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.hasData(e)&&J.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(H)||[""]).length;u--;)if(h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h){for(d=x.event.special[h]||{},p=l[h=(o?d.delegateType:d.bindType)||h]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=p.length;i--;)c=p[i],!r&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||o&&o!==c.selector&&("**"!==o||!c.selector)||(p.splice(i,1),c.selector&&p.delegateCount--,d.remove&&d.remove.call(e,c));a&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,f,g.handle)||x.removeEvent(e,h,g.handle),delete l[h])}else for(h in l)x.event.remove(e,h+t[u],n,o,!0);x.isEmptyObject(l)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,o,r,i,a,s=x.event.fix(e),l=new Array(arguments.length),u=(J.get(this,"events")||{})[s.type]||[],c=x.event.special[s.type]||{};for(l[0]=s,t=1;t<arguments.length;t++)l[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){for(a=x.event.handlers.call(this,s,u),t=0;(r=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==i.namespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((x.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,l))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,a,s=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!("click"===e.type&&e.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(i=[],a={},n=0;n<l;n++)void 0===a[r=(o=t[n]).selector+" "]&&(a[r]=o.needsContext?x(r,this).index(u)>-1:x.find(r,this,null,[u]).length),a[r]&&i.push(o);i.length&&s.push({elem:u,handlers:i})}return u=this,l<t.length&&s.push({elem:u,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(x.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[x.expando]?e:new x.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&_(t,"input")&&Pe(t,"click",Me),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&_(t,"input")&&Pe(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&_(t,"input")&&J.get(t,"click")||_(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},x.Event=function(e,t){if(!(this instanceof x.Event))return new x.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Me:Re,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[x.expando]=!0},x.Event.prototype={constructor:x.Event,isDefaultPrevented:Re,isPropagationStopped:Re,isImmediatePropagationStopped:Re,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Me,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Me,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Me,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},x.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&ke.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Se.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},x.event.addProp),x.each({focus:"focusin",blur:"focusout"},function(e,t){x.event.special[e]={setup:function(){return Pe(this,e,_e),!1},trigger:function(){return Pe(this,e),!0},delegateType:t}}),x.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,o=this,r=e.relatedTarget,i=e.handleObj;return r&&(r===o||x.contains(o,r))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),x.fn.extend({on:function(e,t,n,o){return Le(this,e,t,n,o)},one:function(e,t,n,o){return Le(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,x(e.delegateTarget).off(o.namespace?o.origType+"."+o.namespace:o.origType,o.selector,o.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Re),this.each(function(){x.event.remove(this,e,n,t)})}});var Oe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/<script|<style|<link/i,Fe=/checked\s*(?:[^=]|=\s*.checked.)/i,Ae=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ie(e,t){return _(e,"table")&&_(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ze(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,o,r,i,a,s,l,u;if(1===t.nodeType){if(J.hasData(e)&&(i=J.access(e),a=J.set(t,i),u=i.events))for(r in delete a.handle,a.events={},u)for(n=0,o=u[r].length;n<o;n++)x.event.add(t,r,u[r][n]);Z.hasData(e)&&(s=Z.access(e),l=x.extend({},s),Z.set(t,l))}}function Be(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Ue(e,t,n,o){t=u.apply([],t);var r,i,a,s,l,c,d=0,p=e.length,h=p-1,f=t[0],m=y(f);if(m||p>1&&"string"==typeof f&&!v.checkClone&&Fe.test(f))return e.each(function(r){var i=e.eq(r);m&&(t[0]=f.call(this,r,i.html())),Ue(i,t,n,o)});if(p&&(i=(r=Te(t,e[0].ownerDocument,!1,e,o)).firstChild,1===r.childNodes.length&&(r=i),i||o)){for(s=(a=x.map(be(r,"script"),He)).length;d<p;d++)l=r,d!==h&&(l=x.clone(l,!0,!0),s&&x.merge(a,be(l,"script"))),n.call(e[d],l,d);if(s)for(c=a[a.length-1].ownerDocument,x.map(a,ze),d=0;d<s;d++)l=a[d],ve.test(l.type||"")&&!J.access(l,"globalEval")&&x.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?x._evalUrl&&!l.noModule&&x._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):E(l.textContent.replace(Ae,""),l,c))}return e}function We(e,t,n){for(var o,r=t?x.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||x.cleanData(be(o)),o.parentNode&&(n&&se(o)&&we(be(o,"script")),o.parentNode.removeChild(o));return e}x.extend({htmlPrefilter:function(e){return e.replace(Oe,"<$1></$2>")},clone:function(e,t,n){var o,r,i,a,s=e.cloneNode(!0),l=se(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(a=be(s),o=0,r=(i=be(e)).length;o<r;o++)Be(i[o],a[o]);if(t)if(n)for(i=i||be(e),a=a||be(s),o=0,r=i.length;o<r;o++)je(i[o],a[o]);else je(e,s);return(a=be(s,"script")).length>0&&we(a,!l&&be(e,"script")),s},cleanData:function(e){for(var t,n,o,r=x.event.special,i=0;void 0!==(n=e[i]);i++)if(K(n)){if(t=n[J.expando]){if(t.events)for(o in t.events)r[o]?x.event.remove(n,o):x.removeEvent(n,o,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),x.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return G(this,function(e){return void 0===e?x.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ue(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ie(this,e).appendChild(e)})},prepend:function(){return Ue(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ie(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return G(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ye[(ge.exec(e)||["",""])[1].toLowerCase()]){e=x.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(x.cleanData(be(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Ue(this,arguments,function(t){var n=this.parentNode;x.inArray(this,e)<0&&(x.cleanData(be(this)),n&&n.replaceChild(t,this))},e)}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){for(var n,o=[],r=x(e),i=r.length-1,a=0;a<=i;a++)n=a===i?this:this.clone(!0),x(r[a])[t](n),c.apply(o,n.get());return this.pushStack(o)}});var qe=new RegExp("^("+oe+")(?!px)[a-z%]+$","i"),Ge=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ve=new RegExp(ie.join("|"),"i");function Ye(e,t,n){var o,r,i,a,s=e.style;return(n=n||Ge(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||se(e)||(a=x.style(e,t)),!v.pixelBoxStyles()&&qe.test(a)&&Ve.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ae.appendChild(u).appendChild(c);var e=n.getComputedStyle(c);o="1%"!==e.top,l=12===t(e.marginLeft),c.style.right="60%",s=36===t(e.right),r=36===t(e.width),c.style.position="absolute",i=12===t(c.offsetWidth/3),ae.removeChild(u),c=null}}function t(e){return Math.round(parseFloat(e))}var o,r,i,s,l,u=a.createElement("div"),c=a.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===c.style.backgroundClip,x.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),o},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),i}}))}();var Xe=["Webkit","Moz","ms"],Ke=a.createElement("div").style,Qe={};function Je(e){var t=x.cssProps[e]||Qe[e];return t||(e in Ke?e:Qe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Ke)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function ot(e,t,n){var o=re.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||"px"):t}function rt(e,t,n,o,r,i){var a="width"===t?1:0,s=0,l=0;if(n===(o?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=x.css(e,n+ie[a],!0,r)),o?("content"===n&&(l-=x.css(e,"padding"+ie[a],!0,r)),"margin"!==n&&(l-=x.css(e,"border"+ie[a]+"Width",!0,r))):(l+=x.css(e,"padding"+ie[a],!0,r),"padding"!==n?l+=x.css(e,"border"+ie[a]+"Width",!0,r):s+=x.css(e,"border"+ie[a]+"Width",!0,r));return!o&&i>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-l-s-.5))||0),l}function it(e,t,n){var o=Ge(e),r=(!v.boxSizingReliable()||n)&&"border-box"===x.css(e,"boxSizing",!1,o),i=r,a=Ye(e,t,o),s="offset"+t[0].toUpperCase()+t.slice(1);if(qe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&r||"auto"===a||!parseFloat(a)&&"inline"===x.css(e,"display",!1,o))&&e.getClientRects().length&&(r="border-box"===x.css(e,"boxSizing",!1,o),(i=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+rt(e,t,n||(r?"border":"content"),i,o,a)+"px"}function at(e,t,n,o,r){return new at.prototype.init(e,t,n,o,r)}x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ye(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,a,s=X(t),l=et.test(t),u=e.style;if(l||(t=Je(s)),a=x.cssHooks[t]||x.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,o))?r:u[t];"string"===(i=typeof n)&&(r=re.exec(n))&&r[1]&&(n=de(e,t,r),i="number"),null!=n&&n==n&&("number"!==i||l||(n+=r&&r[3]||(x.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,o))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,o){var r,i,a,s=X(t);return et.test(t)||(t=Je(s)),(a=x.cssHooks[t]||x.cssHooks[s])&&"get"in a&&(r=a.get(e,!0,n)),void 0===r&&(r=Ye(e,t,o)),"normal"===r&&t in nt&&(r=nt[t]),""===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,o){if(n)return!Ze.test(x.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?it(e,t,o):ce(e,tt,function(){return it(e,t,o)})},set:function(e,n,o){var r,i=Ge(e),a=!v.scrollboxSize()&&"absolute"===i.position,s=(a||o)&&"border-box"===x.css(e,"boxSizing",!1,i),l=o?rt(e,t,o,s,i):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-rt(e,t,"border",!1,i)-.5)),l&&(r=re.exec(n))&&"px"!==(r[3]||"px")&&(e.style[t]=n,n=x.css(e,t)),ot(0,n,l)}}}),x.cssHooks.marginLeft=$e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ye(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){for(var o=0,r={},i="string"==typeof n?n.split(" "):[n];o<4;o++)r[e+ie[o]+t]=i[o]||i[o-2]||i[0];return r}},"margin"!==e&&(x.cssHooks[e+t].set=ot)}),x.fn.extend({css:function(e,t){return G(this,function(e,t,n){var o,r,i={},a=0;if(Array.isArray(t)){for(o=Ge(e),r=t.length;a<r;a++)i[t[a]]=x.css(e,t[a],!1,o);return i}return void 0!==n?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)}}),x.Tween=at,at.prototype={constructor:at,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||x.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(x.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=x.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):1!==e.elem.nodeType||!x.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:x.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},x.fx=at.prototype.init,x.fx.step={};var st,lt,ut=/^(?:toggle|show|hide)$/,ct=/queueHooks$/;function dt(){lt&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,x.fx.interval),x.fx.tick())}function pt(){return n.setTimeout(function(){st=void 0}),st=Date.now()}function ht(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)r["margin"+(n=ie[o])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function ft(e,t,n){for(var o,r=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),i=0,a=r.length;i<a;i++)if(o=r[i].call(n,t,e))return o}function mt(e,t,n){var o,r,i=0,a=mt.prefilters.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=st||pt(),n=Math.max(0,u.startTime+u.duration-t),o=1-(n/u.duration||0),i=0,a=u.tweens.length;i<a;i++)u.tweens[i].run(o);return s.notifyWith(e,[u,o,n]),o<1&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{},easing:x.easing._default},n),originalProperties:t,originalOptions:n,startTime:st||pt(),duration:n.duration,tweens:[],createTween:function(t,n){var o=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(o),o},stop:function(t){var n=0,o=t?u.tweens.length:0;if(r)return this;for(r=!0;n<o;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(!function(e,t){var n,o,r,i,a;for(n in e)if(r=t[o=X(n)],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(a=x.cssHooks[o])&&"expand"in a)for(n in i=a.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(c,u.opts.specialEasing);i<a;i++)if(o=mt.prefilters[i].call(u,e,c,u.opts))return y(o.stop)&&(x._queueHooks(u.elem,u.opts.queue).stop=o.stop.bind(o)),o;return x.map(c,ft,u),y(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}x.Animation=x.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return de(n.elem,e,re.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(H);for(var n,o=0,r=e.length;o<r;o++)n=e[o],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,a,s,l,u,c,d="width"in t||"height"in t,p=this,h={},f=e.style,m=e.nodeType&&ue(e),g=J.get(e,"fxshow");for(o in n.queue||(null==(a=x._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),t)if(r=t[o],ut.test(r)){if(delete t[o],i=i||"toggle"===r,r===(m?"hide":"show")){if("show"!==r||!g||void 0===g[o])continue;m=!0}h[o]=g&&g[o]||x.style(e,o)}if((l=!x.isEmptyObject(t))||!x.isEmptyObject(h))for(o in d&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(u=g&&g.display)&&(u=J.get(e,"display")),"none"===(c=x.css(e,"display"))&&(u?c=u:(fe([e],!0),u=e.style.display||u,c=x.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===x.css(e,"float")&&(l||(p.done(function(){f.display=u}),null==u&&(c=f.display,u="none"===c?"":c)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",p.always(function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]})),l=!1,h)l||(g?"hidden"in g&&(m=g.hidden):g=J.access(e,"fxshow",{display:u}),i&&(g.hidden=!m),m&&fe([e],!0),p.done(function(){for(o in m||fe([e]),J.remove(e,"fxshow"),h)x.style(e,o,h[o])})),l=ft(m?g[o]:0,o,p),o in g||(g[o]=l.start,m&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),x.speed=function(e,t,n){var o=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return x.fx.off?o.duration=0:"number"!=typeof o.duration&&(o.duration in x.fx.speeds?o.duration=x.fx.speeds[o.duration]:o.duration=x.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue="fx"),o.old=o.complete,o.complete=function(){y(o.old)&&o.old.call(this),o.queue&&x.dequeue(this,o.queue)},o},x.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ue).css("opacity",0).show().end().animate({opacity:t},e,n,o)},animate:function(e,t,n,o){var r=x.isEmptyObject(e),i=x.speed(t,n,o),a=function(){var t=mt(this,x.extend({},e),i);(r||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,r||!1===i.queue?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var o=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",i=x.timers,a=J.get(this);if(r)a[r]&&a[r].stop&&o(a[r]);else for(r in a)a[r]&&a[r].stop&&ct.test(r)&&o(a[r]);for(r=i.length;r--;)i[r].elem!==this||null!=e&&i[r].queue!==e||(i[r].anim.stop(n),t=!1,i.splice(r,1));!t&&n||x.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),o=n[e+"queue"],r=n[e+"queueHooks"],i=x.timers,a=o?o.length:0;for(n.finish=!0,x.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<a;t++)o[t]&&o[t].finish&&o[t].finish.call(this);delete n.finish})}}),x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,o,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ht(t,!0),e,o,r)}}),x.each({slideDown:ht("show"),slideUp:ht("hide"),slideToggle:ht("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,o){return this.animate(t,e,n,o)}}),x.timers=[],x.fx.tick=function(){var e,t=0,n=x.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||x.fx.stop(),st=void 0},x.fx.timer=function(e){x.timers.push(e),x.fx.start()},x.fx.interval=13,x.fx.start=function(){lt||(lt=!0,dt())},x.fx.stop=function(){lt=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fn.delay=function(e,t){return e=x.fx&&x.fx.speeds[e]||e,t=t||"fx",this.queue(t,function(t,o){var r=n.setTimeout(t,e);o.stop=function(){n.clearTimeout(r)}})},function(){var e=a.createElement("input"),t=a.createElement("select").appendChild(a.createElement("option"));e.type="checkbox",v.checkOn=""!==e.value,v.optSelected=t.selected,(e=a.createElement("input")).value="t",e.type="radio",v.radioValue="t"===e.value}();var gt,vt=x.expr.attrHandle;x.fn.extend({attr:function(e,t){return G(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})}}),x.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?x.prop(e,t,n):(1===i&&x.isXMLDoc(e)||(r=x.attrHooks[t.toLowerCase()]||(x.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void x.removeAttr(e,t):r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(o=r.get(e,t))?o:null==(o=x.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&_(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(H);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=vt[t]||x.find.attr;vt[t]=function(e,t,o){var r,i,a=t.toLowerCase();return o||(i=vt[a],vt[a]=r,r=null!=n(e,t,o)?a:null,vt[a]=i),r}});var yt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function wt(e){return(e.match(H)||[]).join(" ")}function Et(e){return e.getAttribute&&e.getAttribute("class")||""}function Ct(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}x.fn.extend({prop:function(e,t){return G(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})}}),x.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&x.isXMLDoc(e)||(t=x.propFix[t]||t,r=x.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&"get"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.fn.extend({addClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).addClass(e.call(this,t,Et(this)))});if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)o.indexOf(" "+i+" ")<0&&(o+=i+" ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).removeClass(e.call(this,t,Et(this)))});if(!arguments.length)return this.attr("class","");if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)for(;o.indexOf(" "+i+" ")>-1;)o=o.replace(" "+i+" "," ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,o="string"===n||Array.isArray(e);return"boolean"==typeof t&&o?t?this.addClass(e):this.removeClass(e):y(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,Et(this),t),t)}):this.each(function(){var t,r,i,a;if(o)for(r=0,i=x(this),a=Ct(e);t=a[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=Et(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,o=0;for(t=" "+e+" ";n=this[o++];)if(1===n.nodeType&&(" "+wt(Et(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;x.fn.extend({val:function(e){var t,n,o,r=this[0];return arguments.length?(o=y(e),this.each(function(n){var r;1===this.nodeType&&(null==(r=o?e.call(this,n,x(this).val()):e)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=x.map(r,function(e){return null==e?"":e+""})),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))})):r?(t=x.valHooks[r.type]||x.valHooks[r.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:"string"==typeof(n=r.value)?n.replace(xt,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:wt(x.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?i+1:r.length;for(o=i<0?l:a?i:0;o<l;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!_(n.parentNode,"optgroup"))){if(t=x(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=x.makeArray(t),a=r.length;a--;)((o=r[a]).selected=x.inArray(x.valHooks.option.get(o),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=x.inArray(x(e).val(),t)>-1}},v.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in n;var Tt=/^(?:focusinfocus|focusoutblur)$/,kt=function(e){e.stopPropagation()};x.extend(x.event,{trigger:function(e,t,o,r){var i,s,l,u,c,d,p,h,m=[o||a],g=f.call(e,"type")?e.type:e,v=f.call(e,"namespace")?e.namespace.split("."):[];if(s=h=l=o=o||a,3!==o.nodeType&&8!==o.nodeType&&!Tt.test(g+x.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),c=g.indexOf(":")<0&&"on"+g,(e=e[x.expando]?e:new x.Event(g,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=o),t=null==t?[e]:x.makeArray(t,[e]),p=x.event.special[g]||{},r||!p.trigger||!1!==p.trigger.apply(o,t))){if(!r&&!p.noBubble&&!b(o)){for(u=p.delegateType||g,Tt.test(u+g)||(s=s.parentNode);s;s=s.parentNode)m.push(s),l=s;l===(o.ownerDocument||a)&&m.push(l.defaultView||l.parentWindow||n)}for(i=0;(s=m[i++])&&!e.isPropagationStopped();)h=s,e.type=i>1?u:p.bindType||g,(d=(J.get(s,"events")||{})[e.type]&&J.get(s,"handle"))&&d.apply(s,t),(d=c&&s[c])&&d.apply&&K(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=g,r||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(m.pop(),t)||!K(o)||c&&y(o[g])&&!b(o)&&((l=o[c])&&(o[c]=null),x.event.triggered=g,e.isPropagationStopped()&&h.addEventListener(g,kt),o[g](),e.isPropagationStopped()&&h.removeEventListener(g,kt),x.event.triggered=void 0,l&&(o[c]=l)),e.result}},simulate:function(e,t,n){var o=x.extend(new x.Event,n,{type:e,isSimulated:!0});x.event.trigger(o,null,t)}}),x.fn.extend({trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return x.event.trigger(e,t,n,!0)}}),v.focusin||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){x.event.simulate(t,e.target,x.event.fix(e))};x.event.special[t]={setup:function(){var o=this.ownerDocument||this,r=J.access(o,t);r||o.addEventListener(e,n,!0),J.access(o,t,(r||0)+1)},teardown:function(){var o=this.ownerDocument||this,r=J.access(o,t)-1;r?J.access(o,t,r):(o.removeEventListener(e,n,!0),J.remove(o,t))}}});var St=n.location,Dt=Date.now(),Mt=/\?/;x.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+e),t};var Rt=/\[\]$/,_t=/\r?\n/g,Lt=/^(?:submit|button|image|reset|file)$/i,Pt=/^(?:input|select|textarea|keygen)/i;function Ot(e,t,n,o){var r;if(Array.isArray(t))x.each(t,function(t,r){n||Rt.test(e)?o(e,r):Ot(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,o)});else if(n||"object"!==C(t))o(e,t);else for(r in t)Ot(e+"["+r+"]",t[r],n,o)}x.param=function(e,t){var n,o=[],r=function(e,t){var n=y(t)?t():t;o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){r(this.name,this.value)});else for(n in e)Ot(n,e[n],t,r);return o.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&Pt.test(this.nodeName)&&!Lt.test(e)&&(this.checked||!me.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(_t,"\r\n")}}):{name:t.name,value:n.replace(_t,"\r\n")}}).get()}});var Nt=/%20/g,Ft=/#.*$/,At=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,zt=/^\/\//,jt={},Bt={},Ut="*/".concat("*"),Wt=a.createElement("a");function qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var o,r=0,i=t.toLowerCase().match(H)||[];if(y(n))for(;o=i[r++];)"+"===o[0]?(o=o.slice(1)||"*",(e[o]=e[o]||[]).unshift(n)):(e[o]=e[o]||[]).push(n)}}function Gt(e,t,n,o){var r={},i=e===Bt;function a(s){var l;return r[s]=!0,x.each(e[s]||[],function(e,s){var u=s(t,n,o);return"string"!=typeof u||i||r[u]?i?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)}),l}return a(t.dataTypes[0])||!r["*"]&&a("*")}function Vt(e,t){var n,o,r=x.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&x.extend(!0,e,o),e}Wt.href=St.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:St.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(St.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ut,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Vt(Vt(e,x.ajaxSettings),t):Vt(x.ajaxSettings,e)},ajaxPrefilter:qt(jt),ajaxTransport:qt(Bt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var o,r,i,s,l,u,c,d,p,h,f=x.ajaxSetup({},t),m=f.context||f,g=f.context&&(m.nodeType||m.jquery)?x(m):x.event,v=x.Deferred(),y=x.Callbacks("once memory"),b=f.statusCode||{},w={},E={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=It.exec(i);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?i:null},setRequestHeader:function(e,t){return null==c&&(e=E[e.toLowerCase()]=E[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return o&&o.abort(t),k(0,t),this}};if(v.promise(T),f.url=((e||f.url||St.href)+"").replace(zt,St.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){u=a.createElement("a");try{u.href=f.url,u.href=u.href,f.crossDomain=Wt.protocol+"//"+Wt.host!=u.protocol+"//"+u.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=x.param(f.data,f.traditional)),Gt(jt,f,t,T),c)return T;for(p in(d=x.event&&f.global)&&0==x.active++&&x.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),r=f.url.replace(Ft,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Nt,"+")):(h=f.url.slice(r.length),f.data&&(f.processData||"string"==typeof f.data)&&(r+=(Mt.test(r)?"&":"?")+f.data,delete f.data),!1===f.cache&&(r=r.replace(At,"$1"),h=(Mt.test(r)?"&":"?")+"_="+Dt+++h),f.url=r+h),f.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&T.setRequestHeader("Content-Type",f.contentType),T.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Ut+"; q=0.01":""):f.accepts["*"]),f.headers)T.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(m,T,f)||c))return T.abort();if(C="abort",y.add(f.complete),T.done(f.success),T.fail(f.error),o=Gt(Bt,f,t,T)){if(T.readyState=1,d&&g.trigger("ajaxSend",[T,f]),c)return T;f.async&&f.timeout>0&&(l=n.setTimeout(function(){T.abort("timeout")},f.timeout));try{c=!1,o.send(w,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(e,t,a,s){var u,p,h,w,E,C=t;c||(c=!0,l&&n.clearTimeout(l),o=void 0,i=s||"",T.readyState=e>0?4:0,u=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var o,r,i,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader("Content-Type"));if(o)for(r in s)if(s[r]&&s[r].test(o)){l.unshift(r);break}if(l[0]in n)i=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){i=r;break}a||(a=r)}i=i||a}if(i)return i!==l[0]&&l.unshift(i),n[i]}(f,T,a)),w=function(e,t,n,o){var r,i,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!l&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=i,i=c.shift())if("*"===i)i=l;else if("*"!==l&&l!==i){if(!(a=u[l+" "+i]||u["* "+i]))for(r in u)if((s=r.split(" "))[1]===i&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[r]:!0!==u[r]&&(i=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+i}}}return{state:"success",data:t}}(f,w,T,u),u?(f.ifModified&&((E=T.getResponseHeader("Last-Modified"))&&(x.lastModified[r]=E),(E=T.getResponseHeader("etag"))&&(x.etag[r]=E)),204===e||"HEAD"===f.type?C="nocontent":304===e?C="notmodified":(C=w.state,p=w.data,u=!(h=w.error))):(h=C,!e&&C||(C="error",e<0&&(e=0))),T.status=e,T.statusText=(t||C)+"",u?v.resolveWith(m,[p,C,T]):v.rejectWith(m,[T,C,h]),T.statusCode(b),b=void 0,d&&g.trigger(u?"ajaxSuccess":"ajaxError",[T,f,u?p:h]),y.fireWith(m,[T,C]),d&&(g.trigger("ajaxComplete",[T,f]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,void 0,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,o,r){return y(n)&&(r=r||o,o=n,n=void 0),x.ajax(x.extend({url:e,type:t,dataType:r,data:n,success:o},x.isPlainObject(e)&&e))}}),x._evalUrl=function(e,t){return x.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){x.globalEval(e,t)}})},x.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return y(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=y(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){x(this).replaceWith(this.childNodes)}),this}}),x.expr.pseudos.hidden=function(e){return!x.expr.pseudos.visible(e)},x.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},$t=x.ajaxSettings.xhr();v.cors=!!$t&&"withCredentials"in $t,v.ajax=$t=!!$t,x.ajaxTransport(function(e){var t,o;if(v.cors||$t&&!e.crossDomain)return{send:function(r,i){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest"),r)s.setRequestHeader(a,r[a]);t=function(e){return function(){t&&(t=o=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(Yt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),o=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=o:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&o()})},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),x.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(o,r){t=x("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),a.head.appendChild(t[0])},abort:function(){n&&n()}}});var Xt,Kt=[],Qt=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||x.expando+"_"+Dt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(e,t,o){var r,i,a,s=!1!==e.jsonp&&(Qt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Qt,"$1"+r):!1!==e.jsonp&&(e.url+=(Mt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||x.error(r+" was not called"),a[0]},e.dataTypes[0]="json",i=n[r],n[r]=function(){a=arguments},o.always(function(){void 0===i?x(n).removeProp(r):n[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),a&&y(i)&&i(a[0]),a=i=void 0}),"script"}),v.createHTMLDocument=((Xt=a.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Xt.childNodes.length),x.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((o=(t=a.implementation.createHTMLDocument("")).createElement("base")).href=a.location.href,t.head.appendChild(o)):t=a),i=!n&&[],(r=L.exec(e))?[t.createElement(r[1])]:(r=Te([e],t,i),i&&i.length&&x(i).remove(),x.merge([],r.childNodes)));var o,r,i},x.fn.load=function(e,t,n){var o,r,i,a=this,s=e.indexOf(" ");return s>-1&&(o=wt(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&x.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(o?x("<div>").append(x.parseHTML(e)).find(o):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.expr.pseudos.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length},x.offset={setOffset:function(e,t,n){var o,r,i,a,s,l,u=x.css(e,"position"),c=x(e),d={};"static"===u&&(e.style.position="relative"),s=c.offset(),i=x.css(e,"top"),l=x.css(e,"left"),("absolute"===u||"fixed"===u)&&(i+l).indexOf("auto")>-1?(a=(o=c.position()).top,r=o.left):(a=parseFloat(i)||0,r=parseFloat(l)||0),y(t)&&(t=t.call(e,n,x.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+r),"using"in t?t.using.call(e,d):c.css(d)}},x.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,o=this[0];return o?o.getClientRects().length?(t=o.getBoundingClientRect(),n=o.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,o=this[0],r={top:0,left:0};if("fixed"===x.css(o,"position"))t=o.getBoundingClientRect();else{for(t=this.offset(),n=o.ownerDocument,e=o.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===x.css(e,"position");)e=e.parentNode;e&&e!==o&&1===e.nodeType&&((r=x(e).offset()).top+=x.css(e,"borderTopWidth",!0),r.left+=x.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-x.css(o,"marginTop",!0),left:t.left-r.left-x.css(o,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===x.css(e,"position");)e=e.offsetParent;return e||ae})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;x.fn[e]=function(o){return G(this,function(e,o,r){var i;if(b(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===r)return i?i[t]:e[o];i?i.scrollTo(n?i.pageXOffset:r,n?r:i.pageYOffset):e[o]=r},e,o,arguments.length)}}),x.each(["top","left"],function(e,t){x.cssHooks[t]=$e(v.pixelPosition,function(e,n){if(n)return n=Ye(e,t),qe.test(n)?x(e).position()[t]+"px":n})}),x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,o){x.fn[o]=function(r,i){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===i?"margin":"border");return G(this,function(t,n,r){var i;return b(t)?0===o.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?x.css(t,n,s):x.style(t,n,r,s)},t,a?r:void 0,a)}})}),x.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),x.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),x.proxy=function(e,t){var n,o,r;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return o=l.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(l.call(arguments)))}).guid=e.guid=e.guid||x.guid++,r},x.holdReady=function(e){e?x.readyWait++:x.ready(!0)},x.isArray=Array.isArray,x.parseJSON=JSON.parse,x.nodeName=_,x.isFunction=y,x.isWindow=b,x.camelCase=X,x.type=C,x.now=Date.now,x.isNumeric=function(e){var t=x.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(o=function(){return x}.apply(t,[]))||(e.exports=o);var Jt=n.jQuery,Zt=n.$;return x.noConflict=function(e){return n.$===x&&(n.$=Zt),e&&n.jQuery===x&&(n.jQuery=Jt),x},r||(n.jQuery=n.$=x),x})},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e,t){return function(n){var o=n.currentTarget,a=n.target,s=(0,i.default)(o,e);s.some(function(e){return(0,r.default)(e,a)})&&t.call(this,n)}};var r=o(n(29)),i=o(n(11));e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e){void 0===e&&(e=(0,r.default)());try{return e.activeElement}catch(e){}};var r=o(n(12));e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=a(n(0)),r=n(57),i=a(n(22));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t];return o.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`,expected an element type (a string , component class, or function component)."):(0,r.isValidElementType)(s)?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected an element type (a string , component class, or function component).")}),e.exports=t.default},function(e,t,n){"use strict";e.exports=n(58)},function(e,t,n){"use strict";
/** @license React v16.8.6
- * react-dom-server.browser.production.min.js
+ * react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var o=n(22),r=n(0);function i(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var a="function"==typeof Symbol&&Symbol.for,s=a?Symbol.for("react.portal"):60106,l=a?Symbol.for("react.fragment"):60107,u=a?Symbol.for("react.strict_mode"):60108,c=a?Symbol.for("react.profiler"):60114,d=a?Symbol.for("react.provider"):60109,p=a?Symbol.for("react.context"):60110,h=a?Symbol.for("react.concurrent_mode"):60111,f=a?Symbol.for("react.forward_ref"):60112,m=a?Symbol.for("react.suspense"):60113,g=a?Symbol.for("react.memo"):60115,v=a?Symbol.for("react.lazy"):60116;function y(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case h:return"ConcurrentMode";case l:return"Fragment";case s:return"Portal";case c:return"Profiler";case u:return"StrictMode";case m:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case p:return"Context.Consumer";case d:return"Context.Provider";case f:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case g:return y(e.type);case v:if(e=1===e._status?e._result:null)return y(e)}return null}var b=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;b.hasOwnProperty("ReactCurrentDispatcher")||(b.ReactCurrentDispatcher={current:null});var w={};function E(e,t){for(var n=0|e._threadCount;n<=t;n++)e[n]=e._currentValue2,e._threadCount=n+1}for(var C=new Uint16Array(16),x=0;15>x;x++)C[x]=x+1;C[15]=0;var T=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k=Object.prototype.hasOwnProperty,S={},D={};function M(e){return!!k.call(D,e)||!k.call(S,e)&&(T.test(e)?D[e]=!0:(S[e]=!0,!1))}function R(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function P(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new P(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new P(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new P(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new P(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new P(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new P(e,3,!0,e,null)}),["capture","download"].forEach(function(e){_[e]=new P(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){_[e]=new P(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){_[e]=new P(e,5,!1,e.toLowerCase(),null)});var L=/[\-:]([a-z])/g;function O(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new P(e,1,!1,e.toLowerCase(),null)});var N=/["'&<>]/;function F(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=N.exec(e);if(t){var n,o="",r=0;for(n=t.index;n<e.length;n++){switch(e.charCodeAt(n)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}r!==n&&(o+=e.substring(r,n)),r=n+1,o+=t}e=r!==n?o+e.substring(r,n):o}return e}var A=null,I=null,H=null,z=!1,j=!1,B=null,U=0;function W(){return null===A&&i("321"),A}function q(){return 0<U&&i("312"),{memoizedState:null,queue:null,next:null}}function V(){return null===H?null===I?(z=!1,I=H=q()):(z=!0,H=I):null===H.next?(z=!1,H=H.next=q()):(z=!0,H=H.next),H}function G(e,t,n,o){for(;j;)j=!1,U+=1,H=null,n=e(t,o);return I=A=null,U=0,H=B=null,n}function Y(e,t){return"function"==typeof t?t(e):t}function $(e,t,n){if(A=W(),H=V(),z){var o=H.queue;if(t=o.dispatch,null!==B&&void 0!==(n=B.get(o))){B.delete(o),o=H.memoizedState;do{o=e(o,n.action),n=n.next}while(null!==n);return H.memoizedState=o,[o,t]}return[H.memoizedState,t]}return e=e===Y?"function"==typeof t?t():t:void 0!==n?n(t):t,H.memoizedState=e,e=(e=H.queue={last:null,dispatch:null}).dispatch=function(e,t,n){if(25>U||i("301"),e===A)if(j=!0,e={action:n,next:null},null===B&&(B=new Map),void 0===(n=B.get(t)))B.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}.bind(null,A,e),[H.memoizedState,e]}function X(){}var K=0,Q={readContext:function(e){var t=K;return E(e,t),e[t]},useContext:function(e){W();var t=K;return E(e,t),e[t]},useMemo:function(e,t){if(A=W(),t=void 0===t?null:t,null!==(H=V())){var n=H.memoizedState;if(null!==n&&null!==t){e:{var o=n[1];if(null===o)o=!1;else{for(var r=0;r<o.length&&r<t.length;r++){var i=t[r],a=o[r];if((i!==a||0===i&&1/i!=1/a)&&(i==i||a==a)){o=!1;break e}}o=!0}}if(o)return n[0]}}return e=e(),H.memoizedState=[e,t],e},useReducer:$,useRef:function(e){A=W();var t=(H=V()).memoizedState;return null===t?(e={current:e},H.memoizedState=e):t},useState:function(e){return $(Y,e)},useLayoutEffect:function(){},useCallback:function(e){return e},useImperativeHandle:X,useEffect:X,useDebugValue:X},J={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Z(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}var ee={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},te=o({menuitem:!0},ee),ne={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},oe=["Webkit","ms","Moz","O"];Object.keys(ne).forEach(function(e){oe.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ne[t]=ne[e]})});var re=/([A-Z])/g,ie=/^ms-/,ae=r.Children.toArray,se=b.ReactCurrentDispatcher,le={listing:!0,pre:!0,textarea:!0},ue=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ce={},de={};var pe=Object.prototype.hasOwnProperty,he={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function fe(e,t){void 0===e&&i("152",y(t)||"Component")}function me(e,t,n){function a(r,a){var s=function(e,t,n){var o=e.contextType;if("object"==typeof o&&null!==o)return E(o,n),o[n];if(e=e.contextTypes){for(var r in n={},e)n[r]=t[r];t=n}else t=w;return t}(a,t,n),l=[],u=!1,c={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===l)return null},enqueueReplaceState:function(e,t){u=!0,l=[t]},enqueueSetState:function(e,t){if(null===l)return null;l.push(t)}},d=void 0;if(a.prototype&&a.prototype.isReactComponent){if(d=new a(r.props,s,c),"function"==typeof a.getDerivedStateFromProps){var p=a.getDerivedStateFromProps.call(null,r.props,d.state);null!=p&&(d.state=o({},d.state,p))}}else if(A={},d=a(r.props,s,c),null==(d=G(a,r.props,d,s))||null==d.render)return void fe(e=d,a);if(d.props=r.props,d.context=s,d.updater=c,void 0===(c=d.state)&&(d.state=c=null),"function"==typeof d.UNSAFE_componentWillMount||"function"==typeof d.componentWillMount)if("function"==typeof d.componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.componentWillMount(),"function"==typeof d.UNSAFE_componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.UNSAFE_componentWillMount(),l.length){c=l;var h=u;if(l=null,u=!1,h&&1===c.length)d.state=c[0];else{p=h?c[0]:d.state;var f=!0;for(h=h?1:0;h<c.length;h++){var m=c[h];null!=(m="function"==typeof m?m.call(d,p,r.props,s):m)&&(f?(f=!1,p=o({},p,m)):o(p,m))}d.state=p}}else l=null;if(fe(e=d.render(),a),r=void 0,"function"==typeof d.getChildContext&&"object"==typeof(s=a.childContextTypes))for(var g in r=d.getChildContext())g in s||i("108",y(a)||"Unknown",g);r&&(t=o({},t,r))}for(;r.isValidElement(e);){var s=e,l=s.type;if("function"!=typeof l)break;a(s,l)}return{child:e,context:t}}var ge=function(){function e(t,n){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");r.isValidElement(t)?t.type!==l?t=[t]:(t=t.props.children,t=r.isValidElement(t)?[t]:ae(t)):t=ae(t),t={type:null,domNamespace:J.html,children:t,childIndex:0,context:w,footer:""};var o=C[0];if(0===o){var a=C,s=2*(o=a.length);65536>=s||i("304");var u=new Uint16Array(s);for(u.set(a),(C=u)[0]=o+1,a=o;a<s-1;a++)C[a]=a+1;C[s-1]=0}else C[0]=C[o];this.threadID=o,this.stack=[t],this.exhausted=!1,this.currentSelectValue=null,this.previousWasTextNode=!1,this.makeStaticMarkup=n,this.suspenseDepth=0,this.contextIndex=-1,this.contextStack=[],this.contextValueStack=[]}return e.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0,this.clearProviders();var e=this.threadID;C[e]=C[0],C[0]=e}},e.prototype.pushProvider=function(e){var t=++this.contextIndex,n=e.type._context,o=this.threadID;E(n,o);var r=n[o];this.contextStack[t]=n,this.contextValueStack[t]=r,n[o]=e.props.value},e.prototype.popProvider=function(){var e=this.contextIndex,t=this.contextStack[e],n=this.contextValueStack[e];this.contextStack[e]=null,this.contextValueStack[e]=null,this.contextIndex--,t[this.threadID]=n},e.prototype.clearProviders=function(){for(var e=this.contextIndex;0<=e;e--)this.contextStack[e][this.threadID]=this.contextValueStack[e]},e.prototype.read=function(e){if(this.exhausted)return null;var t=K;K=this.threadID;var n=se.current;se.current=Q;try{for(var o=[""],r=!1;o[0].length<e;){if(0===this.stack.length){this.exhausted=!0;var a=this.threadID;C[a]=C[0],C[0]=a;break}var s=this.stack[this.stack.length-1];if(r||s.childIndex>=s.children.length){var l=s.footer;if(""!==l&&(this.previousWasTextNode=!1),this.stack.pop(),"select"===s.type)this.currentSelectValue=null;else if(null!=s.type&&null!=s.type.type&&s.type.type.$$typeof===d)this.popProvider(s.type);else if(s.type===m){this.suspenseDepth--;var u=o.pop();if(r){r=!1;var c=s.fallbackFrame;c||i("303"),this.stack.push(c);continue}o[this.suspenseDepth]+=u}o[this.suspenseDepth]+=l}else{var p=s.children[s.childIndex++],h="";try{h+=this.render(p,s.context,s.domNamespace)}catch(e){throw e}o.length<=this.suspenseDepth&&o.push(""),o[this.suspenseDepth]+=h}}return o[0]}finally{se.current=n,K=t}},e.prototype.render=function(e,t,n){if("string"==typeof e||"number"==typeof e)return""===(n=""+e)?"":this.makeStaticMarkup?F(n):this.previousWasTextNode?"\x3c!-- --\x3e"+F(n):(this.previousWasTextNode=!0,F(n));if(e=(t=me(e,t,this.threadID)).child,t=t.context,null===e||!1===e)return"";if(!r.isValidElement(e)){if(null!=e&&null!=e.$$typeof){var a=e.$$typeof;a===s&&i("257"),i("258",a.toString())}return e=ae(e),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),""}if("string"==typeof(a=e.type))return this.renderDOM(e,t,n);switch(a){case u:case h:case c:case l:return e=ae(e.props.children),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case m:i("294")}if("object"==typeof a&&null!==a)switch(a.$$typeof){case f:A={};var y=a.render(e.props,e.ref);return y=G(a.render,e.props,y,e.ref),y=ae(y),this.stack.push({type:null,domNamespace:n,children:y,childIndex:0,context:t,footer:""}),"";case g:return e=[r.createElement(a.type,o({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case d:return n={type:e,domNamespace:n,children:a=ae(e.props.children),childIndex:0,context:t,footer:""},this.pushProvider(e),this.stack.push(n),"";case p:a=e.type,y=e.props;var b=this.threadID;return E(a,b),a=ae(y.children(a[b])),this.stack.push({type:e,domNamespace:n,children:a,childIndex:0,context:t,footer:""}),"";case v:i("295")}i("130",null==a?a:typeof a,"")},e.prototype.renderDOM=function(e,t,n){var a=e.type.toLowerCase();n===J.html&&Z(a),ce.hasOwnProperty(a)||(ue.test(a)||i("65",a),ce[a]=!0);var s=e.props;if("input"===a)s=o({type:void 0},s,{defaultChecked:void 0,defaultValue:void 0,value:null!=s.value?s.value:s.defaultValue,checked:null!=s.checked?s.checked:s.defaultChecked});else if("textarea"===a){var l=s.value;if(null==l){l=s.defaultValue;var u=s.children;null!=u&&(null!=l&&i("92"),Array.isArray(u)&&(1>=u.length||i("93"),u=u[0]),l=""+u),null==l&&(l="")}s=o({},s,{value:void 0,children:""+l})}else if("select"===a)this.currentSelectValue=null!=s.value?s.value:s.defaultValue,s=o({},s,{value:void 0});else if("option"===a){u=this.currentSelectValue;var c=function(e){if(null==e)return e;var t="";return r.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(s.children);if(null!=u){var d=null!=s.value?s.value+"":c;if(l=!1,Array.isArray(u)){for(var p=0;p<u.length;p++)if(""+u[p]===d){l=!0;break}}else l=""+u===d;s=o({selected:void 0,children:void 0},s,{selected:l,children:c})}}for(w in(l=s)&&(te[a]&&(null!=l.children||null!=l.dangerouslySetInnerHTML)&&i("137",a,""),null!=l.dangerouslySetInnerHTML&&(null!=l.children&&i("60"),"object"==typeof l.dangerouslySetInnerHTML&&"__html"in l.dangerouslySetInnerHTML||i("61")),null!=l.style&&"object"!=typeof l.style&&i("62","")),l=s,u=this.makeStaticMarkup,c=1===this.stack.length,d="<"+e.type,l)if(pe.call(l,w)){var h=l[w];if(null!=h){if("style"===w){p=void 0;var f="",m="";for(p in h)if(h.hasOwnProperty(p)){var g=0===p.indexOf("--"),v=h[p];if(null!=v){var y=p;if(de.hasOwnProperty(y))y=de[y];else{var b=y.replace(re,"-$1").toLowerCase().replace(ie,"-ms-");y=de[y]=b}f+=m+y+":",m=p,f+=g=null==v||"boolean"==typeof v||""===v?"":g||"number"!=typeof v||0===v||ne.hasOwnProperty(m)&&ne[m]?(""+v).trim():v+"px",m=";"}}h=f||null}p=null;e:if(g=a,v=l,-1===g.indexOf("-"))g="string"==typeof v.is;else switch(g){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":g=!1;break e;default:g=!0}g?he.hasOwnProperty(w)||(p=M(p=w)&&null!=h?p+'="'+F(h)+'"':""):(g=w,p=h,h=_.hasOwnProperty(g)?_[g]:null,(v="style"!==g)&&(v=null!==h?0===h.type:2<g.length&&("o"===g[0]||"O"===g[0])&&("n"===g[1]||"N"===g[1])),v||R(g,p,h,!1)?p="":null!==h?(g=h.attributeName,p=3===(h=h.type)||4===h&&!0===p?g+'=""':g+'="'+F(p)+'"'):p=M(g)?g+'="'+F(p)+'"':""),p&&(d+=" "+p)}}u||c&&(d+=' data-reactroot=""');var w=d;l="",ee.hasOwnProperty(a)?w+="/>":(w+=">",l="</"+e.type+">");e:{if(null!=(u=s.dangerouslySetInnerHTML)){if(null!=u.__html){u=u.__html;break e}}else if("string"==typeof(u=s.children)||"number"==typeof u){u=F(u);break e}u=null}return null!=u?(s=[],le[a]&&"\n"===u.charAt(0)&&(w+="\n"),w+=u):s=ae(s.children),e=e.type,n=null==n||"http://www.w3.org/1999/xhtml"===n?Z(e):"http://www.w3.org/2000/svg"===n&&"foreignObject"===e?"http://www.w3.org/1999/xhtml":n,this.stack.push({domNamespace:n,type:a,children:s,childIndex:0,context:t,footer:l}),this.previousWasTextNode=!1,w},e}(),ve={renderToString:function(e){e=new ge(e,!1);try{return e.read(1/0)}finally{e.destroy()}},renderToStaticMarkup:function(e){e=new ge(e,!0);try{return e.read(1/0)}finally{e.destroy()}},renderToNodeStream:function(){i("207")},renderToStaticNodeStream:function(){i("208")},version:"16.8.6"},ye={default:ve},be=ye&&ve||ye;e.exports=be.default||be},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(8),l=n(29),u=n(30),c=n(17),d=n(31),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.prototype.componentWillReceiveProps=function(e){var t=this;c.isSameArray(this.state.data,e.data)||this.setState({data:e.data},function(){t.table.setData(t.state.data)})},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t,n){"use strict";var o,r,i=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var a=n(0),s=n(28),l=n(58),u=n(59),c=n(64);var d=[{title:"Name",field:"name",width:150},{title:"Age",field:"age",align:"left",formatter:"progress"},{title:"Favourite Color",field:"color"},{title:"Date Of Birth",field:"dob"},{title:"Rating",field:"rating",align:"center",formatter:"star"},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross"},{title:"Custom",field:"custom",align:"center",formatter:n(17).reactFormatter(a.createElement(function(e){var t=e.cell._cell.row.data;return a.createElement("button",{onClick:function(){return alert(t.name)}},"Show")},null))}],p=[{id:1,name:"Oli Bob",age:"12",color:"red",dob:"01/01/1980",rating:5,passed:!0,pets:["cat","dog"]},{id:2,name:"Mary May",age:"1",color:"green",dob:"12/05/1989",rating:4,passed:!0,pets:["cat"]},{id:3,name:"Christine Lobowski",age:"42",color:"green",dob:"10/05/1985",rating:4,passed:!1},{id:4,name:"Brendon Philips",age:"125",color:"red",dob:"01/08/1980",rating:4.5,passed:!0},{id:5,name:"Margret Marmajuke",age:"16",color:"yellow",dob:"07/01/1999",rating:4,passed:!1},{id:6,name:"Van Ng",age:"37",color:"green",dob:"06/10/1982",rating:4,passed:!0,pets:["dog","fish"]},{id:7,name:"Duc Ng",age:"37",color:"yellow",dob:"10/10/1982",rating:4,passed:!0,pets:["dog"]}],h=((r={})[""]=" ",r.red="red",r.green="green",r.yellow="yellow",r),f=[{title:"Name",field:"name",width:150,editor:"input",headerFilter:"input"},{title:"Age",field:"age",align:"left",formatter:"progress",editor:"progress"},{title:"Favourite Color",field:"color",editor:"select",editorParams:{allowEmpty:!0,showListOnEmpty:!0,values:h},headerFilter:"select",headerFilterParams:{values:h}},{title:"Date Of Birth",field:"dob",editor:l.default,editorParams:{format:"MM/dd/yyyy"}},{title:"Pets",field:"pets",editor:u.default,editorParams:{values:[{id:"cat",name:"cat"},{id:"dog",name:"dog"},{id:"fish",name:"fish"}]},formatter:c.default,formatterParams:{style:"PILL"}},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross",editor:!0}],m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.rowClick=function(e,n){console.log("ref table: ",t.ref.table),console.log("rowClick id: ${row.getData().id}",n,e)},t.setData=function(){t.setState({data:p})},t.clearData=function(){t.setState({data:[]})},t}return i(t,e),t.prototype.render=function(){var e=this;return a.createElement("div",null,a.createElement(s.default,{ref:function(t){return e.ref=t},columns:d,data:p,rowClick:this.rowClick,options:{height:150,movableRows:!0},"data-custom-attr":"test-custom-attribute",className:"custom-css-class"}),a.createElement("h3",null,"Asynchronous data: (e.g. fetch) - ",a.createElement("button",{onClick:this.setData},"Set Data")," ",a.createElement("button",{onClick:this.clearData},"Clear")),a.createElement(s.default,{columns:d,data:this.state.data}),a.createElement("h3",null,"Editable Table"),a.createElement(s.default,{columns:f,data:p,cellEdited:function(e){return console.log("cellEdited",e)},dataEdited:function(e){return console.log("dataEdited",e)},footerElement:a.createElement("span",null,"Footer")}),a.createElement("p",null,a.createElement("a",{href:"https://github.com/ngduc/react-tabulator",target:"_blank"},"Back to: Github Repo: react-tabulator")),a.createElement("p",null,a.createElement("a",{href:"http://tabulator.info/examples/4.0",target:"_blank"},"More Tabulator's Examples")))},t}(a.Component);t.default=m},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(8),s=n(86),l={width:"100%",height:"100%",fontSize:"1em",fontFamily:"inherit"},u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:""},t.ref=null,t.format=t.props.editorParams.format||"MM/dd/yyyy",t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.value);var n=t.props.success,o=e;o.indexOf("-")>0&&(o=s.format(e,t.format)),n(o)},t.onChange=function(e){var n=e.target.value;t.setState({value:n})},t.onKeyPress=function(e){var n=t.props.cancel;13===e.keyCode?t.setValueOnSuccess():27===e.keyCode&&n()},t.onBlur=function(){t.setValueOnSuccess()},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=e.props.cell.getValue();e.setState({value:t}),e.ref.focus()})},t.prototype.render=function(){var e=this,t=this.props.cell,n=s.parse(t.getValue(),this.format,new Date,{awareOfUnicodeTokens:!0}),o=s.format(n,"yyyy-MM-dd");return i.createElement("input",{type:"date",ref:function(t){return e.ref=t},defaultValue:o,onBlur:this.onBlur,onChange:this.onChange,onKeyUp:this.onKeyPress,style:l})},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(8),s=n(17),l=n(60),u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:"",values:[],autofocus:!1},t.ref=null,t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.values);var n=t.props,o=n.success;n.cancel;o(e)},t.handleDelete=function(e){var n=t.state.values.filter(function(t,n){return n!==e});t.setState({values:n},function(){t.setValueOnSuccess(n)})},t.handleAddition=function(e){var n=t.state.values;e.name&&(n.push({id:e.name,name:e.name}),t.setState({values:n},function(){t.setValueOnSuccess(n)}))},t.handleBlur=function(){var e=t.props.cancel,n=t.ref.input.input.value;if(n){var o=s.clone(t.state.values);o.push({id:n,name:n}),t.setValueOnSuccess(o)}else e();var r=a.findDOMNode(t.ref);r&&r.parentElement.parentElement.parentElement&&(r.parentElement.parentElement.parentElement.style.overflow="hidden")},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=a.findDOMNode(e.ref);t.style.zIndex=1,t.parentElement.parentElement.parentElement.style.overflow="inherit",t.querySelector("input").focus();var n=(e.props.cell.getValue()||[]).map(function(e){return"string"==typeof e?{id:e,name:e}:e});e.setState({values:n})})},t.prototype.render=function(){var e=this,t=this.props.editorParams,n=this.state.values,o=t.values;return i.createElement("div",null,i.createElement(l,{ref:function(t){return e.ref=t},placeholder:"Select or Type",tags:n,suggestions:o,allowNew:!0,autoresize:!0,autofocus:this.state.autofocus,handleAddition:this.handleAddition,handleDelete:this.handleDelete,handleBlur:this.handleBlur,minQueryLength:0}))},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o=n(0),r=n(2),i=n(61),a=n(62),s=n(63),l=13,u=9,c=8,d=38,p=40,h={root:"react-tags",rootFocused:"is-focused",selected:"react-tags__selected",selectedTag:"react-tags__selected-tag",selectedTagName:"react-tags__selected-tag-name",search:"react-tags__search",searchInput:"react-tags__search-input",suggestions:"react-tags__suggestions",suggestionActive:"is-active",suggestionDisabled:"is-disabled"},f=function(e){function t(t){e.call(this,t),this.state={query:"",focused:!1,expandable:!1,selectedIndex:-1,classNames:Object.assign({},h,this.props.classNames)},this.inputEventHandlers={onChange:function(){},onBlur:this.handleBlur.bind(this),onFocus:this.handleFocus.bind(this),onInput:this.handleInput.bind(this),onKeyDown:this.handleKeyDown.bind(this)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({classNames:Object.assign({},h,e.classNames)})},t.prototype.handleInput=function(e){var t=e.target.value;this.props.handleInputChange&&this.props.handleInputChange(t),this.setState({query:t})},t.prototype.handleKeyDown=function(e){var t=this.state,n=t.query,o=t.selectedIndex,r=this.props,i=r.delimiters,a=r.delimiterChars;(i.indexOf(e.keyCode)>-1||a.indexOf(e.key)>-1)&&((n||o>-1)&&e.preventDefault(),this.handleDelimiter()),e.keyCode===c&&0===n.length&&this.props.allowBackspace&&this.deleteTag(this.props.tags.length-1),e.keyCode===d&&(e.preventDefault(),o<=0?this.setState({selectedIndex:this.suggestions.state.options.length-1}):this.setState({selectedIndex:o-1})),e.keyCode===p&&(e.preventDefault(),this.setState({selectedIndex:(o+1)%this.suggestions.state.options.length}))},t.prototype.handleDelimiter=function(){var e=this.state,t=e.query,n=e.selectedIndex;if(t.length>=this.props.minQueryLength){var o=this.suggestions.state.options.findIndex(function(e){return 0===e.name.search(new RegExp("^"+t+"$","i"))}),r=-1===n?o:n;r>-1?this.addTag(this.suggestions.state.options[r]):this.props.allowNew&&this.addTag({name:t})}},t.prototype.handleClick=function(e){document.activeElement!==e.target&&this.input.input.focus()},t.prototype.handleBlur=function(){this.setState({focused:!1,selectedIndex:-1}),this.props.handleBlur&&this.props.handleBlur(),this.props.addOnBlur&&this.handleDelimiter()},t.prototype.handleFocus=function(){this.setState({focused:!0}),this.props.handleFocus&&this.props.handleFocus()},t.prototype.addTag=function(e){e.disabled||("function"!=typeof this.props.handleValidate||this.props.handleValidate(e))&&(this.props.handleAddition(e),this.setState({query:"",selectedIndex:-1}))},t.prototype.deleteTag=function(e){this.props.handleDelete(e),this.props.clearInputOnDelete&&""!==this.state.query&&this.setState({query:""})},t.prototype.render=function(){var e=this,t=this.props.tagComponent||i,n=this.props.tags.map(function(n,r){return o.createElement(t,{key:r,tag:n,classNames:e.state.classNames,onDelete:e.deleteTag.bind(e,r)})}),r=this.state.focused&&this.state.query.length>=this.props.minQueryLength,l=[this.state.classNames.root];return this.state.focused&&l.push(this.state.classNames.rootFocused),o.createElement("div",{className:l.join(" "),onClick:this.handleClick.bind(this)},o.createElement("div",{className:this.state.classNames.selected,"aria-live":"polite","aria-relevant":"additions removals"},n),o.createElement("div",{className:this.state.classNames.search},o.createElement(a,Object.assign({},this.state,{inputAttributes:this.props.inputAttributes,inputEventHandlers:this.inputEventHandlers,ref:function(t){e.input=t},listboxId:"ReactTags-listbox",autofocus:this.props.autofocus,autoresize:this.props.autoresize,expandable:r,placeholder:this.props.placeholder})),o.createElement(s,Object.assign({},this.state,{ref:function(t){e.suggestions=t},listboxId:"ReactTags-listbox",expandable:r,suggestions:this.props.suggestions,suggestionsFilter:this.props.suggestionsFilter,addTag:this.addTag.bind(this),maxSuggestionsLength:this.props.maxSuggestionsLength}))))},t}(o.Component);f.defaultProps={tags:[],placeholder:"Add new tag",suggestions:[],suggestionsFilter:null,autofocus:!0,autoresize:!0,delimiters:[u,l],delimiterChars:[],minQueryLength:2,maxSuggestionsLength:6,allowNew:!1,allowBackspace:!0,tagComponent:null,inputAttributes:{},addOnBlur:!1,clearInputOnDelete:!0},f.propTypes={tags:r.arrayOf(r.object),placeholder:r.string,suggestions:r.arrayOf(r.object),suggestionsFilter:r.func,autofocus:r.bool,autoresize:r.bool,delimiters:r.arrayOf(r.number),delimiterChars:r.arrayOf(r.string),handleDelete:r.func.isRequired,handleAddition:r.func.isRequired,handleInputChange:r.func,handleFocus:r.func,handleBlur:r.func,handleValidate:r.func,minQueryLength:r.number,maxSuggestionsLength:r.number,classNames:r.object,allowNew:r.bool,allowBackspace:r.bool,tagComponent:r.oneOfType([r.func,r.element]),inputAttributes:r.object,addOnBlur:r.bool,clearInputOnDelete:r.bool},e.exports=f},function(e,t,n){"use strict";var o=n(0);e.exports=function(e){return o.createElement("button",{type:"button",className:e.classNames.selectedTag,title:"Click to remove tag",onClick:e.onDelete},o.createElement("span",{className:e.classNames.selectedTagName},e.tag.name))}},function(e,t,n){"use strict";var o=n(0),r={position:"absolute",width:0,height:0,visibility:"hidden",overflow:"scroll",whiteSpace:"pre"},i=["fontSize","fontFamily","fontWeight","fontStyle","letterSpacing"],a=function(e){function t(t){e.call(this,t),this.state={inputWidth:null}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.props.autoresize&&(this.copyInputStyles(),this.updateInputWidth()),this.props.autofocus&&this.input.focus()},t.prototype.componentDidUpdate=function(){this.updateInputWidth()},t.prototype.copyInputStyles=function(){var e=this,t=window.getComputedStyle(this.input);i.forEach(function(n){e.sizer.style[n]=t[n]})},t.prototype.updateInputWidth=function(){var e;this.props.autoresize&&(e=Math.ceil(this.sizer.scrollWidth)+2),e!==this.state.inputWidth&&this.setState({inputWidth:e})},t.prototype.render=function(){var e=this,t=this.props,n=t.inputAttributes,i=t.inputEventHandlers,a=t.query,s=t.placeholder,l=t.expandable,u=t.listboxId,c=t.selectedIndex;return o.createElement("div",{className:this.props.classNames.searchInput},o.createElement("input",Object.assign({},n,i,{ref:function(t){e.input=t},value:a,placeholder:s,role:"combobox","aria-autocomplete":"list","aria-label":s,"aria-owns":u,"aria-activedescendant":c>-1?u+"-"+c:null,"aria-expanded":l,style:{width:this.state.inputWidth}})),o.createElement("div",{ref:function(t){e.sizer=t},style:r},a||s))},t}(o.Component);e.exports=a},function(e,t,n){"use strict";var o=n(0);function r(e){return e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}function i(e,t){if(t){var n=RegExp(r(t),"gi");e=e.replace(n,"<mark>$&</mark>")}return{__html:e}}function a(e,t,n,o){if(!o){var i=new RegExp("(?:^|\\s)"+r(e),"i");o=function(e){return i.test(e.name)}}return t.filter(function(t){return o(t,e)}).slice(0,n)}var s=function(e){function t(t){e.call(this,t),this.state={options:a(this.props.query,this.props.suggestions,this.props.maxSuggestionsLength,this.props.suggestionsFilter)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({options:a(e.query,e.suggestions,e.maxSuggestionsLength,e.suggestionsFilter)})},t.prototype.handleMouseDown=function(e,t){t.preventDefault(),this.props.addTag(e)},t.prototype.render=function(){var e=this;if(!this.props.expandable||!this.state.options.length)return null;var t=this.state.options.map(function(t,n){var r=e.props.listboxId+"-"+n,a=[];return e.props.selectedIndex===n&&a.push(e.props.classNames.suggestionActive),t.disabled&&a.push(e.props.classNames.suggestionDisabled),o.createElement("li",{id:r,key:r,role:"option",className:a.join(" "),"aria-disabled":!0===t.disabled,onMouseDown:e.handleMouseDown.bind(e,t)},o.createElement("span",{dangerouslySetInnerHTML:i(t.name,e.props.query)}))});return o.createElement("div",{className:this.props.classNames.suggestions},o.createElement("ul",{role:"listbox",id:this.props.listboxId},t))},t}(o.Component);e.exports=s},function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(8),i=function(){var e=document.createElement("div");return e.style.height="100%",e};t.default=function(e,t,n){var a=t.style||"",s=e.getValue()||[],l=s&&s.length>0&&"string"==typeof s[0]?o.createElement("span",null,s.join(", ")):o.createElement("span",null);"PILL"===a&&(l=o.createElement("div",null,s.map(function(e){return"string"==typeof e?o.createElement("span",{key:e},e):o.createElement("span",{key:e.name},e.name)})));var u=i();return u.className="multi-value-formatter-content",u.title=s&&s.length>0&&"string"==typeof s[0]?s.join(", "):"",r.render(l,u),u}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t){return function(n){var o=n.currentTarget,a=n.target,s=(0,i.default)(o,e);s.some(function(e){return(0,r.default)(e,a)})&&t.call(this,n)}};var r=o(n(34)),i=o(n(12));e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){void 0===e&&(e=(0,r.default)());try{return e.activeElement}catch(e){}};var r=o(n(13));e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=a(n(0)),r=n(68),i=a(n(24));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t];return o.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`,expected an element type (a string , component class, or function component)."):(0,r.isValidElementType)(s)?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected an element type (a string , component class, or function component).")}),e.exports=t.default},function(e,t,n){"use strict";e.exports=n(69)},function(e,t,n){"use strict";
+ */Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&Symbol.for,r=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,a=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,l=o?Symbol.for("react.profiler"):60114,u=o?Symbol.for("react.provider"):60109,c=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.async_mode"):60111,p=o?Symbol.for("react.concurrent_mode"):60111,h=o?Symbol.for("react.forward_ref"):60112,f=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,g=o?Symbol.for("react.lazy"):60116;function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case d:case p:case a:case l:case s:case f:return e;default:switch(e=e&&e.$$typeof){case c:case h:case u:return e;default:return t}}case g:case m:case i:return t}}}function y(e){return v(e)===p}t.typeOf=v,t.AsyncMode=d,t.ConcurrentMode=p,t.ContextConsumer=c,t.ContextProvider=u,t.Element=r,t.ForwardRef=h,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=l,t.StrictMode=s,t.Suspense=f,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===l||e===s||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===u||e.$$typeof===c||e.$$typeof===h)},t.isAsyncMode=function(e){return y(e)||v(e)===d},t.isConcurrentMode=y,t.isContextConsumer=function(e){return v(e)===c},t.isContextProvider=function(e){return v(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return v(e)===h},t.isFragment=function(e){return v(e)===a},t.isLazy=function(e){return v(e)===g},t.isMemo=function(e){return v(e)===m},t.isPortal=function(e){return v(e)===i},t.isProfiler=function(e){return v(e)===l},t.isStrictMode=function(e){return v(e)===s},t.isSuspense=function(e){return v(e)===f}},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=void 0;var r=o(n(60));t.addClass=r.default;var i=o(n(61));t.removeClass=i.default;var a=o(n(31));t.hasClass=a.default;var s={addClass:r.default,removeClass:i.default,hasClass:a.default};t.default=s},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e,t){e.classList?e.classList.add(t):(0,r.default)(e,t)||("string"==typeof e.className?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))};var r=o(n(31));e.exports=t.default},function(e,t,n){"use strict";function o(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}e.exports=function(e,t){e.classList?e.classList.remove(t):"string"==typeof e.className?e.className=o(e.className,t):e.setAttribute("class",o(e.className&&e.className.baseVal||"",t))}},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e){return(0,r.default)(e).replace(i,"-ms-")};var r=o(n(63)),i=/^ms-/;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,"-$1").toLowerCase()};var o=/([A-Z])/g;e.exports=t.default},function(e,t,n){"use strict";var o=n(5);t.__esModule=!0,t.default=function(e){if(!e)throw new TypeError("No Element passed to `getComputedStyle()`");var t=e.ownerDocument;return"defaultView"in t?t.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):window.getComputedStyle(e,null):{getPropertyValue:function(t){var n=e.style;"float"==(t=(0,r.default)(t))&&(t="styleFloat");var o=e.currentStyle[t]||null;if(null==o&&n&&n[t]&&(o=n[t]),a.test(o)&&!i.test(t)){var s=n.left,l=e.runtimeStyle,u=l&&l.left;u&&(l.left=e.currentStyle.left),n.left="fontSize"===t?"1em":o,o=n.pixelLeft+"px",n.left=s,u&&(l.left=u)}return o}}};var r=o(n(32)),i=/^(top|right|bottom|left)$/,a=/^([+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return"removeProperty"in e.style?e.style.removeProperty(t):e.style.removeAttribute(t)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return!(!e||!o.test(e))};var o=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,o.default)(e)||(t=e,t&&"body"===t.tagName.toLowerCase())?function(e){var t=(0,r.default)(e),n=(0,o.default)(t);return t.body.clientWidth<n.innerWidth}(e):e.scrollHeight>e.clientHeight;var t};var o=i(n(68)),r=i(n(12));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.ariaHidden=i,t.hideSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!0,e)})},t.showSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!1,e)})};var o=["template","script","style"],r=function(e,t,n){t=[].concat(t),[].forEach.call(e.children,function(e){var r,i,a;-1===t.indexOf(e)&&(i=(r=e).nodeType,a=r.tagName,1===i&&-1===o.indexOf(a.toLowerCase()))&&n(e)})};function i(e,t){t&&(e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden"))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(2)),r=l(n(21)),i=l(n(0)),a=l(n(7)),s=l(n(71));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(e){var t,n;function o(){return e.apply(this,arguments)||this}return n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.prototype.render=function(){var e=this;return this.props.children?i.default.createElement(s.default,{container:this.props.container,onContainerResolved:this.props.onRendered},function(t){return a.default.createPortal(e.props.children,t)}):null},o}(i.default.Component);u.displayName="Portal",u.propTypes={container:o.default.oneOfType([r.default,o.default.func]),onRendered:o.default.func};var c=u;t.default=c,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=c(n(2)),r=c(n(21)),i=c(n(10)),a=c(n(12)),s=c(n(0)),l=c(n(7)),u=c(n(34));function c(e){return e&&e.__esModule?e:{default:e}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var p={container:o.default.oneOfType([r.default,o.default.func]),onContainerResolved:o.default.func},h=function(e){var t,n;function o(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];if(t=e.call.apply(e,[this].concat(o))||this,!i.default)return d(t);var a=t.props.container;return"function"==typeof a&&(a=a()),a&&!l.default.findDOMNode(a)?d(t):(t.setContainer(a),t)}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var r=o.prototype;return r.UNSAFE_componentWillReceiveProps=function(e){e.container!==this.props.container&&this.setContainer(e.container)},r.componentDidMount=function(){this._container?this.props.onContainerResolved&&this.props.onContainerResolved():(this.setContainer(this.props.container),this.forceUpdate(this.props.onContainerResolved))},r.componentWillUnmount=function(){this._container=null},r.setContainer=function(e){this._container=(0,u.default)(e,(0,a.default)().body)},r.render=function(){return this._container?this.props.children(this._container):null},o}(s.default.Component);h.propTypes=p;var f=h;t.default=f,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,r.default)(o.default.findDOMNode(e))};var o=i(n(7)),r=i(n(12));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";e.exports=n(74)},function(e,t,n){"use strict";
/** @license React v16.8.6
- * react-is.production.min.js
+ * react-dom-server.browser.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&Symbol.for,r=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,a=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,l=o?Symbol.for("react.profiler"):60114,u=o?Symbol.for("react.provider"):60109,c=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.async_mode"):60111,p=o?Symbol.for("react.concurrent_mode"):60111,h=o?Symbol.for("react.forward_ref"):60112,f=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,g=o?Symbol.for("react.lazy"):60116;function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case d:case p:case a:case l:case s:case f:return e;default:switch(e=e&&e.$$typeof){case c:case h:case u:return e;default:return t}}case g:case m:case i:return t}}}function y(e){return v(e)===p}t.typeOf=v,t.AsyncMode=d,t.ConcurrentMode=p,t.ContextConsumer=c,t.ContextProvider=u,t.Element=r,t.ForwardRef=h,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=l,t.StrictMode=s,t.Suspense=f,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===l||e===s||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===u||e.$$typeof===c||e.$$typeof===h)},t.isAsyncMode=function(e){return y(e)||v(e)===d},t.isConcurrentMode=y,t.isContextConsumer=function(e){return v(e)===c},t.isContextProvider=function(e){return v(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return v(e)===h},t.isFragment=function(e){return v(e)===a},t.isLazy=function(e){return v(e)===g},t.isMemo=function(e){return v(e)===m},t.isPortal=function(e){return v(e)===i},t.isProfiler=function(e){return v(e)===l},t.isStrictMode=function(e){return v(e)===s},t.isSuspense=function(e){return v(e)===f}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(71));t.addClass=r.default;var i=o(n(72));t.removeClass=i.default;var a=o(n(36));t.hasClass=a.default;var s={addClass:r.default,removeClass:i.default,hasClass:a.default};t.default=s},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t){e.classList?e.classList.add(t):(0,r.default)(e,t)||("string"==typeof e.className?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))};var r=o(n(36));e.exports=t.default},function(e,t,n){"use strict";function o(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}e.exports=function(e,t){e.classList?e.classList.remove(t):"string"==typeof e.className?e.className=o(e.className,t):e.setAttribute("class",o(e.className&&e.className.baseVal||"",t))}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){return(0,r.default)(e).replace(i,"-ms-")};var r=o(n(74)),i=/^ms-/;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,"-$1").toLowerCase()};var o=/([A-Z])/g;e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){if(!e)throw new TypeError("No Element passed to `getComputedStyle()`");var t=e.ownerDocument;return"defaultView"in t?t.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):window.getComputedStyle(e,null):{getPropertyValue:function(t){var n=e.style;"float"==(t=(0,r.default)(t))&&(t="styleFloat");var o=e.currentStyle[t]||null;if(null==o&&n&&n[t]&&(o=n[t]),a.test(o)&&!i.test(t)){var s=n.left,l=e.runtimeStyle,u=l&&l.left;u&&(l.left=e.currentStyle.left),n.left="fontSize"===t?"1em":o,o=n.pixelLeft+"px",n.left=s,u&&(l.left=u)}return o}}};var r=o(n(37)),i=/^(top|right|bottom|left)$/,a=/^([+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return"removeProperty"in e.style?e.style.removeProperty(t):e.style.removeAttribute(t)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return!(!e||!o.test(e))};var o=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,o.default)(e)||(t=e,t&&"body"===t.tagName.toLowerCase())?function(e){var t=(0,r.default)(e),n=(0,o.default)(t);return t.body.clientWidth<n.innerWidth}(e):e.scrollHeight>e.clientHeight;var t};var o=i(n(79)),r=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.ariaHidden=i,t.hideSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!0,e)})},t.showSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!1,e)})};var o=["template","script","style"],r=function(e,t,n){t=[].concat(t),[].forEach.call(e.children,function(e){var r,i,a;-1===t.indexOf(e)&&(i=(r=e).nodeType,a=r.tagName,1===i&&-1===o.indexOf(a.toLowerCase()))&&n(e)})};function i(e,t){t&&(e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden"))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(2)),r=l(n(23)),i=l(n(0)),a=l(n(8)),s=l(n(82));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(e){var t,n;function o(){return e.apply(this,arguments)||this}return n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.prototype.render=function(){var e=this;return this.props.children?i.default.createElement(s.default,{container:this.props.container,onContainerResolved:this.props.onRendered},function(t){return a.default.createPortal(e.props.children,t)}):null},o}(i.default.Component);u.displayName="Portal",u.propTypes={container:o.default.oneOfType([r.default,o.default.func]),onRendered:o.default.func};var c=u;t.default=c,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=c(n(2)),r=c(n(23)),i=c(n(11)),a=c(n(13)),s=c(n(0)),l=c(n(8)),u=c(n(39));function c(e){return e&&e.__esModule?e:{default:e}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var p={container:o.default.oneOfType([r.default,o.default.func]),onContainerResolved:o.default.func},h=function(e){var t,n;function o(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];if(t=e.call.apply(e,[this].concat(o))||this,!i.default)return d(t);var a=t.props.container;return"function"==typeof a&&(a=a()),a&&!l.default.findDOMNode(a)?d(t):(t.setContainer(a),t)}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var r=o.prototype;return r.UNSAFE_componentWillReceiveProps=function(e){e.container!==this.props.container&&this.setContainer(e.container)},r.componentDidMount=function(){this._container?this.props.onContainerResolved&&this.props.onContainerResolved():(this.setContainer(this.props.container),this.forceUpdate(this.props.onContainerResolved))},r.componentWillUnmount=function(){this._container=null},r.setContainer=function(e){this._container=(0,u.default)(e,(0,a.default)().body)},r.render=function(){return this._container?this.props.children(this._container):null},o}(s.default.Component);h.propTypes=p;var f=h;t.default=f,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,r.default)(o.default.findDOMNode(e))};var o=i(n(8)),r=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.default)(function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];var r=null;return t.forEach(function(e){if(null==r){var t=e.apply(void 0,n);null!=t&&(r=t)}}),r})};var o,r=n(24),i=(o=r)&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.r(t);var r=6e4;function i(e){var t=new Date(e.getTime()),n=t.getTimezoneOffset();t.setSeconds(0,0);var o=t.getTime()%r;return n*r+o}var a=36e5,s=6e4,l=2,u={dateTimeDelimeter:/[T ]/,plainTime:/:/,timeZoneDelimeter:/[Z ]/i,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-])(\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/};function c(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(null===e)return new Date(NaN);var n=t||{},r=null==n.additionalDigits?l:o(n.additionalDigits);if(2!==r&&1!==r&&0!==r)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e))return new Date(e.getTime());if("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))return new Date(e);if("string"!=typeof e&&"[object String]"!==Object.prototype.toString.call(e))return new Date(NaN);var c=function(e){var t,n={},o=e.split(u.dateTimeDelimeter);u.plainTime.test(o[0])?(n.date=null,t=o[0]):(n.date=o[0],t=o[1],u.timeZoneDelimeter.test(n.date)&&(n.date=e.split(u.timeZoneDelimeter)[0],t=e.substr(n.date.length,e.length)));if(t){var r=u.timezone.exec(t);r?(n.time=t.replace(r[1],""),n.timezone=r[1]):n.time=t}return n}(e),p=function(e,t){var n,o=u.YYY[t],r=u.YYYYY[t];if(n=u.YYYY.exec(e)||r.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=u.YY.exec(e)||o.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(c.date,r),h=p.year,b=function(e,t){if(null===t)return null;var n,o,r,i;if(0===e.length)return(o=new Date(0)).setUTCFullYear(t),o;if(n=u.MM.exec(e))return o=new Date(0),r=parseInt(n[1],10)-1,m(t,r)?(o.setUTCFullYear(t,r),o):new Date(NaN);if(n=u.DDD.exec(e)){o=new Date(0);var a=parseInt(n[1],10);return function(e,t){if(t<1)return!1;var n=f(e);if(n&&t>366)return!1;if(!n&&t>365)return!1;return!0}(t,a)?(o.setUTCFullYear(t,0,a),o):new Date(NaN)}if(n=u.MMDD.exec(e)){o=new Date(0),r=parseInt(n[1],10)-1;var s=parseInt(n[2],10);return m(t,r,s)?(o.setUTCFullYear(t,r,s),o):new Date(NaN)}if(n=u.Www.exec(e))return i=parseInt(n[1],10)-1,g(t,i)?d(t,i):new Date(NaN);if(n=u.WwwD.exec(e)){i=parseInt(n[1],10)-1;var l=parseInt(n[2],10)-1;return g(t,i,l)?d(t,i,l):new Date(NaN)}return null}(p.restDateString,h);if(isNaN(b))return new Date(NaN);if(b){var w,E=b.getTime(),C=0;if(c.time&&(C=function(e){var t,n,o;if(t=u.HH.exec(e))return v(n=parseFloat(t[1].replace(",",".")))?n%24*a:NaN;if(t=u.HHMM.exec(e))return n=parseInt(t[1],10),o=parseFloat(t[2].replace(",",".")),v(n,o)?n%24*a+o*s:NaN;if(t=u.HHMMSS.exec(e)){n=parseInt(t[1],10),o=parseInt(t[2],10);var r=parseFloat(t[3].replace(",","."));return v(n,o,r)?n%24*a+o*s+1e3*r:NaN}return null}(c.time),isNaN(C)))return new Date(NaN);if(c.timezone){if(w=function(e){var t,n,o;if(t=u.timezoneZ.exec(e))return 0;if(t=u.timezoneHH.exec(e))return y(o=parseInt(t[2],10))?(n=o*a,"+"===t[1]?-n:n):NaN;if(t=u.timezoneHHMM.exec(e)){o=parseInt(t[2],10);var r=parseInt(t[3],10);return y(o,r)?(n=o*a+r*s,"+"===t[1]?-n:n):NaN}return 0}(c.timezone),isNaN(w))return new Date(NaN)}else w=i(new Date(E+C)),w=i(new Date(E+C+w));return new Date(E+C+w)}return new Date(NaN)}function d(e,t,n){t=t||0,n=n||0;var o=new Date(0);o.setUTCFullYear(e,0,4);var r=7*t+n+1-(o.getUTCDay()||7);return o.setUTCDate(o.getUTCDate()+r),o}var p=[31,28,31,30,31,30,31,31,30,31,30,31],h=[31,29,31,30,31,30,31,31,30,31,30,31];function f(e){return e%400==0||e%4==0&&e%100!=0}function m(e,t,n){if(t<0||t>11)return!1;if(null!=n){if(n<1)return!1;var o=f(e);if(o&&n>h[t])return!1;if(!o&&n>p[t])return!1}return!0}function g(e,t,n){return!(t<0||t>52)&&(null==n||!(n<0||n>6))}function v(e,t,n){return(null==e||!(e<0||e>=25))&&((null==t||!(t<0||t>=60))&&(null==n||!(n<0||n>=60)))}function y(e,t){return null==t||!(t<0||t>59)}function b(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(r.getDate()+i),r}function w(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n).getTime(),i=o(t);return new Date(r+i)}var E=36e5;function C(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*E,n)}function x(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=(u<s?7:0)+u-s;return l.setDate(l.getDate()-d),l.setHours(0,0,0,0),l}function T(e){e=e||{};var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function k(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,x(e,n)}function S(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=new Date(0);r.setFullYear(o+1,0,4),r.setHours(0,0,0,0);var i=k(r,t),a=new Date(0);a.setFullYear(o,0,4),a.setHours(0,0,0,0);var s=k(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}function D(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);return o.setFullYear(n,0,4),o.setHours(0,0,0,0),k(o,t)}function M(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(0,0,0,0),n}var R=864e5;function P(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/R)}function _(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=P(r,D(r,n),n),s=new Date(0);return s.setFullYear(i,0,4),s.setHours(0,0,0,0),(r=D(s,n)).setDate(r.getDate()+a),r}function L(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);return _(e,S(e,n)+r,n)}var O=6e4;function N(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*O,n)}function F(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=n.getMonth(),i=new Date(0);return i.setFullYear(o,r+1,0),i.setHours(0,0,0,0),i.getDate()}function A(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getMonth()+i,s=new Date(0);s.setFullYear(r.getFullYear(),a,1),s.setHours(0,0,0,0);var l=F(s,n);return r.setMonth(a,Math.min(l,r.getDate())),r}function I(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,3*o(t),n)}function H(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,1e3*o(t),n)}function z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,7*o(t),n)}function j(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,12*o(t),n)}function B(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");return i<l&&s<a}function U(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return NaN;var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e,t){var o=c(e,n);if(isNaN(o))return r=NaN,void(i=NaN);var s=Math.abs(a-o.getTime());(null==r||s<i)&&(r=t,i=s)}),r}function W(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return new Date(NaN);var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e){var t=c(e,n);if(isNaN(t))return r=new Date(NaN),void(i=NaN);var o=Math.abs(a-t.getTime());(null==r||o<i)&&(r=t,i=o)}),r}function q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i<0?-1:i>0?1:i}function V(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i>0?-1:i<0?1:i}function G(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return S(e,n)-S(t,n)}var Y=6048e5;function $(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=k(e,n),r=k(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/Y)}function X(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 12*(o.getFullYear()-r.getFullYear())+(o.getMonth()-r.getMonth())}function K(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return Math.floor(n.getMonth()/3)+1}function Q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 4*(o.getFullYear()-r.getFullYear())+(K(o,n)-K(r,n))}var J=6048e5;function Z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/J)}function ee(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()-r.getFullYear()}function te(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(P(o,r,n));o.setDate(o.getDate()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ne(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()-r.getTime()}var oe=36e5;function re(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/oe;return o>0?Math.floor(o):Math.ceil(o)}function ie(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return L(e,-o(t),n)}function ae(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(G(o,r,n)),s=i*(a-(q(o=ie(o,i*a,n),r,n)===-i));return 0===s?0:s}var se=6e4;function le(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/se;return o>0?Math.floor(o):Math.ceil(o)}function ue(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(X(o,r,n));o.setMonth(o.getMonth()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ce(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ue(e,t,n)/3;return o>0?Math.floor(o):Math.ceil(o)}function de(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/1e3;return o>0?Math.floor(o):Math.ceil(o)}function pe(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=te(e,t,n)/7;return o>0?Math.floor(o):Math.ceil(o)}function he(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(ee(o,r,n));o.setFullYear(o.getFullYear()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function fe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t).getTime();if(!(o.getTime()<=r))throw new RangeError("Invalid interval");var i=[],a=o;for(a.setHours(0,0,0,0);a.getTime()<=r;)i.push(c(a,t)),a.setDate(a.getDate()+1);return i}function me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t),i=r.getTime();if(!(o.getTime()<=i))throw new RangeError("Invalid interval");var a=x(o,t),s=x(r,t);a.setHours(15),s.setHours(15),i=s.getTime();for(var l=[],u=a;u.getTime()<=i;)u.setHours(0),l.push(c(u,t)),(u=z(u,1)).setHours(15);return l}function ge(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 0===c(e,t).getDay()}function ve(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n||6===n}function ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=e||{},u=c(l.start,t),d=c(l.end,t).getTime();if(!(u.getTime()<=d))throw new RangeError("Invalid interval");for(var p=fe(l),h=[],f=0;f++<p.length;){var m=p[f];ve(m)&&(h.push(new Date(m)),ge(m)&&(f+=5))}return h}function be(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setDate(1),n.setHours(0,0,0,0),n}function we(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(23,59,59,999),n}function Ee(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:be(e,t),end:we(e,t)})}function Ce(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=new Date(0);return o.setFullYear(n.getFullYear(),0,1),o.setHours(0,0,0,0),o}function xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(23,59,59,999),n}function Te(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:Ce(e,t),end:xe(e,t)})}function ke(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(23,59,59,999),n}function Se(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r,11,31),n.setHours(23,59,59,999),n}function De(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(59,59,999),n}function Me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setDate(l.getDate()+d),l.setHours(23,59,59,999),l}function Re(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Me(e,n)}function Pe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setMilliseconds(r.getMilliseconds()-1),r}function _e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(59,999),n}function Le(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(23,59,59,999),n}function Oe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(999),n}function Ne(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return!isNaN(n)}var Fe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Ae(e){return function(t){var n=t||{},o=n.width?String(n.width):e.defaultWidth;return e.formats[o]||e.formats[e.defaultWidth]}}var Ie={date:Ae({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ae({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ae({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},He={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ze(e){return function(t,n){var o=n||{},r=o.width?String(o.width):e.defaultWidth;return("formatting"===(o.context?String(o.context):"standalone")&&e.formattingValues?e.formattingValues[r]||e.formattingValues[e.defaultFormattingWidth]:e.values[r]||e.values[e.defaultWidth])[e.argumentCallback?e.argumentCallback(t):t]}}function je(e){return function(t,n){var o=String(t),r=n||{},i=r.width,a=i&&e.matchPatterns[i]||e.matchPatterns[e.defaultMatchWidth],s=o.match(a);if(!s)return null;var l,u=s[0],c=i&&e.parsePatterns[i]||e.parsePatterns[e.defaultParseWidth];return l="[object Array]"===Object.prototype.toString.call(c)?c.findIndex(function(e){return e.test(o)}):function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}(c,function(e){return e.test(o)}),l=e.valueCallback?e.valueCallback(l):l,{value:l=r.valueCallback?r.valueCallback(l):l,rest:o.slice(u.length)}}}var Be,Ue={formatDistance:function(e,t,n){var o;return n=n||{},o="string"==typeof Fe[e]?Fe[e]:1===t?Fe[e].one:Fe[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+o:o+" ago":o},formatLong:Ie,formatRelative:function(e,t,n,o){return He[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),o=n%100;if(o>20||o<10)switch(o%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ze({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ze({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:ze({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ze({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ze({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaulFormattingWidth:"wide"})},match:{ordinalNumber:(Be={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),o=t||{},r=n.match(Be.matchPattern);if(!r)return null;var i=r[0],a=n.match(Be.parsePattern);if(!a)return null;var s=Be.valueCallback?Be.valueCallback(a[0]):a[0];return{value:s=o.valueCallback?o.valueCallback(s):s,rest:n.slice(i.length)}}),era:je({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:je({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:je({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:je({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:je({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},We=864e5;function qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCDay(),r=(o<1?7:0)+o-1;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Ve(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(o+1,0,4),r.setUTCHours(0,0,0,0);var i=qe(r,t),a=new Date(0);a.setUTCFullYear(o,0,4),a.setUTCHours(0,0,0,0);var s=qe(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}var Ge=6048e5;function Ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=qe(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Ve(e,t),o=new Date(0);return o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0),qe(o,t)}(n,t).getTime();return Math.round(o/Ge)+1}function $e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getUTCDay(),d=(u<s?7:0)+u-s;return l.setUTCDate(l.getUTCDate()-d),l.setUTCHours(0,0,0,0),l}function Xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getUTCFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setUTCFullYear(r+1,0,u),d.setUTCHours(0,0,0,0);var p=$e(d,t),h=new Date(0);h.setUTCFullYear(r,0,u),h.setUTCHours(0,0,0,0);var f=$e(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}var Ke=6048e5;function Qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=$e(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Xe(e,t),u=new Date(0);return u.setUTCFullYear(l,0,s),u.setUTCHours(0,0,0,0),$e(u,t)}(n,t).getTime();return Math.round(r/Ke)+1}var Je="midnight",Ze="noon",et="morning",tt="afternoon",nt="evening",ot="night";function rt(e,t){for(var n=e<0?"-":"",o=Math.abs(e).toString();o.length<t;)o="0"+o;return n+o}function it(e,t){var n=t||"",o=e>0?"-":"+",r=Math.abs(e);return o+rt(Math.floor(r/60),2)+n+rt(r%60,2)}function at(e,t){return e%60==0?(e>0?"-":"+")+rt(Math.abs(e)/60,2):it(e,t)}function st(e,t){var n=e>0?"-":"+",o=Math.abs(e),r=Math.floor(o/60),i=o%60;if(0===i)return n+String(r);var a=t||"";return n+String(r)+a+rt(i,2)}var lt={G:function(e,t,n){var o=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(o,{width:"abbreviated"});case"GGGGG":return n.era(o,{width:"narrow"});case"GGGG":default:return n.era(o,{width:"wide"})}},y:function(e,t,n,o){var r=e.getUTCFullYear(),i=r>0?r:1-r;return"yy"===t?rt(i%100,2):"yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},Y:function(e,t,n,o){var r=Xe(e,o),i=r>0?r:1-r;return"YY"===t?rt(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},R:function(e,t,n,o){return rt(Ve(e,o),t.length)},u:function(e,t,n,o){return rt(e.getUTCFullYear(),t.length)},Q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return rt(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return rt(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"M":return String(r+1);case"MM":return rt(r+1,2);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return rt(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,o){var r=Qe(e,o);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},I:function(e,t,n,o){var r=Ye(e,o);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},d:function(e,t,n,o){var r=e.getUTCDate();return"do"===t?n.ordinalNumber(r,{unit:"date"}):rt(r,t.length)},D:function(e,t,n,o){var r=function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getTime();n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0);var r=o-n.getTime();return Math.floor(r/We)+1}(e,o);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):rt(r,t.length)},E:function(e,t,n,o){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return rt(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});case"eeee":default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return rt(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});case"cccc":default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n,o){var r=e.getUTCDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return rt(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(e,t,n){var o,r=e.getUTCHours();switch(o=12===r?Ze:0===r?Je:r/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(e,t,n){var o,r=e.getUTCHours();switch(o=r>=17?nt:r>=12?tt:r>=4?et:ot,t){case"B":case"BB":case"BBB":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(e,t,n,o){var r=e.getUTCHours()%12;return 0===r&&(r=12),"ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},H:function(e,t,n,o){var r=e.getUTCHours();return"Ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},K:function(e,t,n,o){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},k:function(e,t,n,o){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},m:function(e,t,n,o){var r=e.getUTCMinutes();return"mo"===t?n.ordinalNumber(r,{unit:"minute"}):rt(r,t.length)},s:function(e,t,n,o){var r=e.getUTCSeconds();return"so"===t?n.ordinalNumber(r,{unit:"second"}):rt(r,t.length)},S:function(e,t,n,o){var r=t.length,i=e.getUTCMilliseconds();return rt(Math.floor(i*Math.pow(10,r-3)),r)},X:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();if(0===r)return"Z";switch(t){case"X":return at(r);case"XXXX":case"XX":return it(r);case"XXXXX":case"XXX":default:return it(r,":")}},x:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"x":return at(r);case"xxxx":case"xx":return it(r);case"xxxxx":case"xxx":default:return it(r,":")}},O:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+st(r,":");case"OOOO":default:return"GMT"+it(r,":")}},z:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+st(r,":");case"zzzz":default:return"GMT"+it(r,":")}},t:function(e,t,n,o){var r=o._originalDate||e;return rt(Math.floor(r.getTime()/1e3),t.length)},T:function(e,t,n,o){return rt((o._originalDate||e).getTime(),t.length)}};function ut(e,t,n){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function ct(e,t,n){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}var dt={p:ct,P:function(e,t,n){var o,r=e.match(/(P+)(p+)?/),i=r[1],a=r[2];if(!a)return ut(e,t);switch(i){case"P":o=t.dateTime({width:"short"});break;case"PP":o=t.dateTime({width:"medium"});break;case"PPP":o=t.dateTime({width:"long"});break;case"PPPP":default:o=t.dateTime({width:"full"})}return o.replace("{{date}}",ut(i,t)).replace("{{time}}",ct(a,t))}};function pt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,-o(t),n)}var ht=["D","DD","YY","YYYY"];function ft(e){return-1!==ht.indexOf(e)}function mt(e){throw new RangeError("`options.awareOfUnicodeTokens` must be set to `true` to use `"+e+"` token; see: https://git.io/fxCyr")}var gt=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,vt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,yt=/^'(.*?)'?$/,bt=/''/g;function wt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=String(t),a=n||{},s=a.locale||Ue,l=s.options&&s.options.firstWeekContainsDate,u=null==l?1:o(l),d=null==a.firstWeekContainsDate?u:o(a.firstWeekContainsDate);if(!(d>=1&&d<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var p=s.options&&s.options.weekStartsOn,h=null==p?0:o(p),f=null==a.weekStartsOn?h:o(a.weekStartsOn);if(!(f>=0&&f<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var m=c(e,a);if(!Ne(m,a))return"Invalid Date";var g=pt(m,i(m),a),v={firstWeekContainsDate:d,weekStartsOn:f,locale:s,_originalDate:m};return r.match(vt).map(function(e){var t=e[0];return"p"===t||"P"===t?(0,dt[t])(e,s.formatLong,v):e}).join("").match(gt).map(function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return e.match(yt)[1].replace(bt,"'");var n=lt[t];return n?(!a.awareOfUnicodeTokens&&ft(e)&&mt(e),n(g,e,s.localize,v)):e}).join("")}var Et=1440,Ct=2520,xt=43200,Tt=86400;function kt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=de(l,s,o),h=(i(l)-i(s))/1e3,f=Math.round((p-h)/60);if(f<2)return o.includeSeconds?p<5?r.formatDistance("lessThanXSeconds",5,u):p<10?r.formatDistance("lessThanXSeconds",10,u):p<20?r.formatDistance("lessThanXSeconds",20,u):p<40?r.formatDistance("halfAMinute",null,u):p<60?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",1,u):0===f?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",f,u);if(f<45)return r.formatDistance("xMinutes",f,u);if(f<90)return r.formatDistance("aboutXHours",1,u);if(f<Et){var m=Math.round(f/60);return r.formatDistance("aboutXHours",m,u)}if(f<Ct)return r.formatDistance("xDays",1,u);if(f<xt){var g=Math.round(f/Et);return r.formatDistance("xDays",g,u)}if(f<Tt)return d=Math.round(f/xt),r.formatDistance("aboutXMonths",d,u);if((d=ue(l,s,o))<12){var v=Math.round(f/xt);return r.formatDistance("xMonths",v,u)}var y=d%12,b=Math.floor(d/12);return y<3?r.formatDistance("aboutXYears",b,u):y<9?r.formatDistance("overXYears",b,u):r.formatDistance("almostXYears",b+1,u)}var St=1440,Dt=43200,Mt=525600;function Rt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain localize.formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=null==o.roundingMethod?"round":String(o.roundingMethod);if("floor"===p)d=Math.floor;else if("ceil"===p)d=Math.ceil;else{if("round"!==p)throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'");d=Math.round}var h,f=de(l,s,n),m=d((f-(i(l)-i(s))/1e3)/60);if("second"===(h=null==o.unit?m<1?"second":m<60?"minute":m<St?"hour":m<Dt?"day":m<Mt?"month":"year":String(o.unit)))return r.formatDistance("xSeconds",f,u);if("minute"===h)return r.formatDistance("xMinutes",m,u);if("hour"===h){var g=d(m/60);return r.formatDistance("xHours",g,u)}if("day"===h){var v=d(m/St);return r.formatDistance("xDays",v,u)}if("month"===h){var y=d(m/Dt);return r.formatDistance("xMonths",y,u)}if("year"===h){var b=d(m/Mt);return r.formatDistance("xYears",b,u)}throw new RangeError("unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'")}function Pt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),a=n||{},s=a.locale||Ue;if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");if(!s.formatRelative)throw new RangeError("locale must contain formatRelative property");var l,u=P(o,r,a);if(isNaN(u))return"Invalid Date";l=u<-6?"other":u<-1?"lastWeek":u<0?"yesterday":u<1?"today":u<2?"tomorrow":u<7?"nextWeek":"other";var d=pt(o,i(o),a),p=pt(r,i(r),a);return wt(o,s.formatRelative(l,d,p,a),a)}function _t(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(1e3*o(e),t)}function Lt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDate()}function Ot(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDay()}function Nt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return P(n,Ce(n,t),t)+1}function Ft(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return n%400==0||n%4==0&&n%100!=0}function At(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return isNaN(n)?NaN:Ft(n,t)?366:365}function It(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return 10*Math.floor(n/10)}function Ht(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getHours()}function zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n&&(n=7),n}var jt=6048e5;function Bt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=k(n,t).getTime()-D(n,t).getTime();return Math.round(o/jt)+1}var Ut=6048e5;function Wt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=D(e,t),o=D(z(n,60,t),t).valueOf()-n.valueOf();return Math.round(o/Ut)}function qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMilliseconds()}function Vt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMinutes()}function Gt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMonth()}var Yt=864e5;function $t(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");if(!(i<l&&s<a))return 0;var u=(l>a?a:l)-(s<i?i:s);return Math.ceil(u/Yt)}function Xt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getSeconds()}function Kt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getTime()}function Qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Math.floor(Kt(e,t)/1e3)}function Jt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setFullYear(r+1,0,u),d.setHours(0,0,0,0);var p=x(d,t),h=new Date(0);h.setFullYear(r,0,u),h.setHours(0,0,0,0);var f=x(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Jt(e,t),u=new Date(0);return u.setFullYear(l,0,s),u.setHours(0,0,0,0),x(u,t)}var en=6048e5;function tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=x(n,t).getTime()-Zt(n,t).getTime();return Math.round(o/en)+1}function nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Ot(be(e,t),t),u=(l<s?7-s:l)>Ot(e,t)?7-s:0;return Math.ceil((Lt(e,t)+u)/7)}function on(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(0,0,0,0),n}function rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Z(on(e,t),be(e,t),t)+1}function an(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getFullYear()}function sn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()>r.getTime()}function ln(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()<r.getTime()}function un(e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)}function cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()===r.getTime()}function dn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDate()}function pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 5===c(e,t).getDay()}function hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return ke(n,t).getTime()===we(n,t).getTime()}function fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDay()}function mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n);return o.getTime()===r.getTime()}function gn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(0,0,0),n}function vn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=gn(e,n),r=gn(t,n);return o.getTime()===r.getTime()}function yn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n);return o.getTime()===r.getTime()}function bn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=T(n);return o.weekStartsOn=1,yn(e,t,o)}function wn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=D(e,n),r=D(t,n);return o.getTime()===r.getTime()}function En(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(0,0),n}function Cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=En(e,n),r=En(t,n);return o.getTime()===r.getTime()}function xn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()&&o.getMonth()===r.getMonth()}function Tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3;return n.setMonth(r,1),n.setHours(0,0,0,0),n}function kn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Tn(e,n),r=Tn(t,n);return o.getTime()===r.getTime()}function Sn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(0),n}function Dn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Sn(e,n),r=Sn(t,n);return o.getTime()===r.getTime()}function Mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()}function Rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 6===c(e,t).getDay()}function Pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 4===c(e,t).getDay()}function _n(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 2===c(e,t).getDay()}function Ln(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 3===c(e,t).getDay()}function On(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=t||{},r=c(e,n).getTime(),i=c(o.start,n).getTime(),a=c(o.end,n).getTime();if(!(i<=a))throw new RangeError("Invalid interval");return r>=i&&r<=a}function Nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r+1,0,0),n.setHours(0,0,0,0),n}function Fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var l=c(e,t),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setHours(0,0,0,0),l.setDate(l.getDate()+d),l}function An(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Fn(e,n)}function In(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setDate(r.getDate()-1),r}function Hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(0,0,0,0),n}function zn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(0,0,0,0),n}function jn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n<o||isNaN(o))&&(n=o)}),n}function Bn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n>o||isNaN(o))&&(n=o)}),n}function Un(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,n),d=o(t),p=((d%7+7)%7<l?7:0)+d-u.getUTCDay();return u.setUTCDate(u.getUTCDate()+p),u}var Wn=36e5,qn=6e4,Vn=1e3,Gn={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},Yn=/^([+-])(\d{2})(\d{2})?|Z/,$n=/^([+-])(\d{2})(\d{2})|Z/,Xn=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,Kn=/^([+-])(\d{2}):(\d{2})|Z/,Qn=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Jn(e,t,n){var o=t.match(e);if(!o)return null;var r=parseInt(o[0],10);return{value:n?n(r):r,rest:t.slice(o[0].length)}}function Zn(e,t){var n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};var o="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,a=n[5]?parseInt(n[5],10):0;return{value:o*(r*Wn+i*qn+a*Vn),rest:t.slice(n[0].length)}}function eo(e,t){return Jn(Gn.anyDigitsSigned,e,t)}function to(e,t,n){switch(e){case 1:return Jn(Gn.singleDigit,t,n);case 2:return Jn(Gn.twoDigits,t,n);case 3:return Jn(Gn.threeDigits,t,n);case 4:return Jn(Gn.fourDigits,t,n);default:return Jn(new RegExp("^\\d{1,"+e+"}"),t,n)}}function no(e,t,n){switch(e){case 1:return Jn(Gn.singleDigitSigned,t,n);case 2:return Jn(Gn.twoDigitsSigned,t,n);case 3:return Jn(Gn.threeDigitsSigned,t,n);case 4:return Jn(Gn.fourDigitsSigned,t,n);default:return Jn(new RegExp("^-?\\d{1,"+e+"}"),t,n)}}function oo(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function ro(e,t){var n,o=t>0,r=o?t:1-t;if(r<=50)n=e||100;else{var i=r+50;n=e+100*Math.floor(i/100)-(e>=i%100?100:0)}return o?n:1-n}var io=[31,28,31,30,31,30,31,31,30,31,30,31],ao=[31,29,31,30,31,30,31,31,30,31,30,31];function so(e){return e%400==0||e%4==0&&e%100!=0}var lo={G:{priority:140,parse:function(e,t,n,o){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});case"GGGG":default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}},set:function(e,t,n){return e.setUTCFullYear(1===t?10:-9,0,1),e.setUTCHours(0,0,0,0),e}},y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"yy"===t}};switch(t){case"y":return to(4,e,r);case"yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=Xe(e,n);if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,1),e.setUTCHours(0,0,0,0),e}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,1),e.setUTCHours(0,0,0,0),e}},Y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"YY"===t}};switch(t){case"Y":return to(4,e,r);case"Yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=e.getUTCFullYear();if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}},R:{priority:130,parse:function(e,t,n,o){return no("R"===t?4:t.length,e)},set:function(e,t,n){var o=new Date(0);return o.setUTCFullYear(t,0,4),o.setUTCHours(0,0,0,0),qe(o)}},u:{priority:130,parse:function(e,t,n,o){return no("u"===t?4:t.length,e)},set:function(e,t,n){return e.setUTCFullYear(t,0,1),e.setUTCHours(0,0,0,0),e}},Q:{priority:120,parse:function(e,t,n,o){switch(t){case"Q":case"QQ":return to(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},q:{priority:120,parse:function(e,t,n,o){switch(t){case"q":case"qq":return to(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},M:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"M":return Jn(Gn.month,e,r);case"MM":return to(2,e,r);case"Mo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},L:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"L":return Jn(Gn.month,e,r);case"LL":return to(2,e,r);case"Lo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},w:{priority:100,parse:function(e,t,n,o){switch(t){case"w":return Jn(Gn.week,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return $e(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Qe(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},I:{priority:100,parse:function(e,t,n,o){switch(t){case"I":return Jn(Gn.week,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return qe(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Ye(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},d:{priority:90,parse:function(e,t,n,o){switch(t){case"d":return Jn(Gn.date,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){var o=so(e.getUTCFullYear()),r=e.getUTCMonth();return o?t>=1&&t<=ao[r]:t>=1&&t<=io[r]},set:function(e,t,n){return e.setUTCDate(t),e.setUTCHours(0,0,0,0),e}},D:{priority:90,parse:function(e,t,n,o){switch(t){case"D":case"DD":return Jn(Gn.dayOfYear,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){return so(e.getUTCFullYear())?t>=1&&t<=366:t>=1&&t<=365},set:function(e,t,n){return e.setUTCMonth(0,t),e.setUTCHours(0,0,0,0),e}},E:{priority:90,parse:function(e,t,n,o){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},e:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return to(t.length,e,r);case"eo":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},c:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return to(t.length,e,r);case"co":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},i:{priority:90,parse:function(e,t,n,o){var r=function(e){return 0===e?7:e};switch(t){case"i":case"ii":return to(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiii":return n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiiii":return n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiii":default:return n.day(e,{width:"wide",context:"formatting",valueCallback:r})||n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r})}},validate:function(e,t,n){return t>=1&&t<=7},set:function(e,t,n){return(e=function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);r%7==0&&(r-=7);var i=c(e,n),a=((r%7+7)%7<1?7:0)+r-i.getUTCDay();return i.setUTCDate(i.getUTCDate()+a),i}(e,t,n)).setUTCHours(0,0,0,0),e}},a:{priority:80,parse:function(e,t,n,o){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},b:{priority:80,parse:function(e,t,n,o){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},B:{priority:80,parse:function(e,t,n,o){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},h:{priority:70,parse:function(e,t,n,o){switch(t){case"h":return Jn(Gn.hour12h,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=12},set:function(e,t,n){var o=e.getUTCHours()>=12;return o&&t<12?e.setUTCHours(t+12,0,0,0):o||12!==t?e.setUTCHours(t,0,0,0):e.setUTCHours(0,0,0,0),e}},H:{priority:70,parse:function(e,t,n,o){switch(t){case"H":return Jn(Gn.hour23h,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=23},set:function(e,t,n){return e.setUTCHours(t,0,0,0),e}},K:{priority:70,parse:function(e,t,n,o){switch(t){case"K":return Jn(Gn.hour11h,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.getUTCHours()>=12&&t<12?e.setUTCHours(t+12,0,0,0):e.setUTCHours(t,0,0,0),e}},k:{priority:70,parse:function(e,t,n,o){switch(t){case"k":return Jn(Gn.hour24h,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=24},set:function(e,t,n){var o=t<=24?t%24:t;return e.setUTCHours(o,0,0,0),e}},m:{priority:60,parse:function(e,t,n,o){switch(t){case"m":return Jn(Gn.minute,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCMinutes(t,0,0),e}},s:{priority:50,parse:function(e,t,n,o){switch(t){case"s":return Jn(Gn.second,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCSeconds(t,0),e}},S:{priority:40,parse:function(e,t,n,o){return to(t.length,e,function(e){return Math.floor(e*Math.pow(10,3-t.length))})},set:function(e,t,n){return e.setUTCMilliseconds(t),e}},X:{priority:20,parse:function(e,t,n,o){switch(t){case"X":return Zn(Yn,e);case"XX":return Zn($n,e);case"XXXX":return Zn(Xn,e);case"XXXXX":return Zn(Qn,e);case"XXX":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},x:{priority:20,parse:function(e,t,n,o){switch(t){case"x":return Zn(Yn,e);case"xx":return Zn($n,e);case"xxxx":return Zn(Xn,e);case"xxxxx":return Zn(Qn,e);case"xxx":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},t:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(1e3*t)}},T:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(t)}}},uo=20,co=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,po=/^'(.*?)'?$/,ho=/''/g,fo=/\S/;function mo(e,t,n,r){if(arguments.length<3)throw new TypeError("3 arguments required, but only "+arguments.length+" present");var a=String(e),s=String(t),l=r||{},u=l.locale||Ue;if(!u.match)throw new RangeError("locale must contain match property");var d=u.options&&u.options.firstWeekContainsDate,p=null==d?1:o(d),h=null==l.firstWeekContainsDate?p:o(l.firstWeekContainsDate);if(!(h>=1&&h<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=u.options&&u.options.weekStartsOn,m=null==f?0:o(f),g=null==l.weekStartsOn?m:o(l.weekStartsOn);if(!(g>=0&&g<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===s)return""===a?c(n,l):new Date(NaN);var v,y={firstWeekContainsDate:h,weekStartsOn:g,locale:u},b=[{priority:uo,set:go,index:0}],w=s.match(co);for(v=0;v<w.length;v++){var E=w[v];!l.awareOfUnicodeTokens&&ft(E)&&mt(E);var C=E[0],x=lo[C];if(x){var T=x.parse(a,E,u.match,y);if(!T)return new Date(NaN);b.push({priority:x.priority,set:x.set,validate:x.validate,value:T.value,index:b.length}),a=T.rest}else{if("''"===E?E="'":"'"===C&&(E=E.match(po)[1].replace(ho,"'")),0!==a.indexOf(E))return new Date(NaN);a=a.slice(E.length)}}if(a.length>0&&fo.test(a))return new Date(NaN);var k=b.map(function(e){return e.priority}).sort(function(e,t){return t-e}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return b.filter(function(t){return t.priority===e}).reverse()}).map(function(e){return e[0]}),S=c(n,l);if(isNaN(S))return new Date(NaN);var D=pt(S,i(S));for(v=0;v<k.length;v++){var M=k[v];if(M.validate&&!M.validate(D,M.value,y))return new Date(NaN);D=M.set(D,M.value,y)}return D}function go(e){var t=new Date(0);return t.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),t.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),t}function vo(e,t,n){if(arguments.length<1)throw new TypeError("1 argument required, but only none provided present");var r=1===arguments.length?1:o(t);if(2===arguments.length&&"number"!=typeof t&&"string"!=typeof t&&(n=t,r=1),!r||r>30||r<1)throw new RangeError("nearestTo must be between 1 and 30");var i=c(e,n),a=i.getSeconds(),s=i.getMinutes()+a/60,l=Math.floor(s/r)*r,u=s%r,d=Math.round(u/r)*r;return new Date(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),l+d)}function yo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(i),r}function bo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,r),d=o(t),p=u.getDay();return b(u,((d%7+7)%7<l?7:0)+d-p,r)}function wo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMonth(0),r.setDate(i),r}function Eo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setHours(i),r}function Co(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n);return b(r,o(t)-zt(r,n),n)}function xo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Bt(r,n)-i;return r.setDate(r.getDate()-7*a),r}function To(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMilliseconds(i),r}function ko(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMinutes(i),r}function So(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getFullYear(),s=r.getDate(),l=new Date(0);l.setFullYear(a,i,15),l.setHours(0,0,0,0);var u=F(l,n);return r.setMonth(i,Math.min(s,u)),r}function Do(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t)-(Math.floor(r.getMonth()/3)+1);return So(r,r.getMonth()+3*i,n)}function Mo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setSeconds(i),r}function Ro(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=tn(r,n)-i;return r.setDate(r.getDate()-7*a),r}function Po(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.firstWeekContainsDate,s=null==a?1:o(a),l=null==r.firstWeekContainsDate?s:o(r.firstWeekContainsDate),u=c(e,n),d=o(t),p=P(u,Zt(u,n),n),h=new Date(0);return h.setFullYear(d,0,l),h.setHours(0,0,0,0),(u=Zt(h,n)).setDate(u.getDate()+p),u}function _o(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return isNaN(r)?new Date(NaN):(r.setFullYear(i),r)}function Lo(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=10*Math.floor(o/10);return n.setFullYear(r,0,1),n.setHours(0,0,0,0),n}function Oo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,-o(t),n)}function No(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return C(e,-o(t),n)}function Fo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return N(e,-o(t),n)}function Ao(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,-o(t),n)}function Io(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return I(e,-o(t),n)}function Ho(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return H(e,-o(t),n)}function zo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return z(e,-o(t),n)}function jo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return j(e,-o(t),n)}n.d(t,"addDays",function(){return b}),n.d(t,"addHours",function(){return C}),n.d(t,"addISOWeekYears",function(){return L}),n.d(t,"addMilliseconds",function(){return w}),n.d(t,"addMinutes",function(){return N}),n.d(t,"addMonths",function(){return A}),n.d(t,"addQuarters",function(){return I}),n.d(t,"addSeconds",function(){return H}),n.d(t,"addWeeks",function(){return z}),n.d(t,"addYears",function(){return j}),n.d(t,"areIntervalsOverlapping",function(){return B}),n.d(t,"closestIndexTo",function(){return U}),n.d(t,"closestTo",function(){return W}),n.d(t,"compareAsc",function(){return q}),n.d(t,"compareDesc",function(){return V}),n.d(t,"differenceInCalendarDays",function(){return P}),n.d(t,"differenceInCalendarISOWeekYears",function(){return G}),n.d(t,"differenceInCalendarISOWeeks",function(){return $}),n.d(t,"differenceInCalendarMonths",function(){return X}),n.d(t,"differenceInCalendarQuarters",function(){return Q}),n.d(t,"differenceInCalendarWeeks",function(){return Z}),n.d(t,"differenceInCalendarYears",function(){return ee}),n.d(t,"differenceInDays",function(){return te}),n.d(t,"differenceInHours",function(){return re}),n.d(t,"differenceInISOWeekYears",function(){return ae}),n.d(t,"differenceInMilliseconds",function(){return ne}),n.d(t,"differenceInMinutes",function(){return le}),n.d(t,"differenceInMonths",function(){return ue}),n.d(t,"differenceInQuarters",function(){return ce}),n.d(t,"differenceInSeconds",function(){return de}),n.d(t,"differenceInWeeks",function(){return pe}),n.d(t,"differenceInYears",function(){return he}),n.d(t,"eachDayOfInterval",function(){return fe}),n.d(t,"eachWeekOfInterval",function(){return me}),n.d(t,"eachWeekendOfInterval",function(){return ye}),n.d(t,"eachWeekendOfMonth",function(){return Ee}),n.d(t,"eachWeekendOfYear",function(){return Te}),n.d(t,"endOfDay",function(){return ke}),n.d(t,"endOfDecade",function(){return Se}),n.d(t,"endOfHour",function(){return De}),n.d(t,"endOfISOWeek",function(){return Re}),n.d(t,"endOfISOWeekYear",function(){return Pe}),n.d(t,"endOfMinute",function(){return _e}),n.d(t,"endOfMonth",function(){return we}),n.d(t,"endOfQuarter",function(){return Le}),n.d(t,"endOfSecond",function(){return Oe}),n.d(t,"endOfWeek",function(){return Me}),n.d(t,"endOfYear",function(){return xe}),n.d(t,"format",function(){return wt}),n.d(t,"formatDistance",function(){return kt}),n.d(t,"formatDistanceStrict",function(){return Rt}),n.d(t,"formatRelative",function(){return Pt}),n.d(t,"fromUnixTime",function(){return _t}),n.d(t,"getDate",function(){return Lt}),n.d(t,"getDay",function(){return Ot}),n.d(t,"getDayOfYear",function(){return Nt}),n.d(t,"getDaysInMonth",function(){return F}),n.d(t,"getDaysInYear",function(){return At}),n.d(t,"getDecade",function(){return It}),n.d(t,"getHours",function(){return Ht}),n.d(t,"getISODay",function(){return zt}),n.d(t,"getISOWeek",function(){return Bt}),n.d(t,"getISOWeekYear",function(){return S}),n.d(t,"getISOWeeksInYear",function(){return Wt}),n.d(t,"getMilliseconds",function(){return qt}),n.d(t,"getMinutes",function(){return Vt}),n.d(t,"getMonth",function(){return Gt}),n.d(t,"getOverlappingDaysInIntervals",function(){return $t}),n.d(t,"getQuarter",function(){return K}),n.d(t,"getSeconds",function(){return Xt}),n.d(t,"getTime",function(){return Kt}),n.d(t,"getUnixTime",function(){return Qt}),n.d(t,"getWeek",function(){return tn}),n.d(t,"getWeekOfMonth",function(){return nn}),n.d(t,"getWeekYear",function(){return Jt}),n.d(t,"getWeeksInMonth",function(){return rn}),n.d(t,"getYear",function(){return an}),n.d(t,"isAfter",function(){return sn}),n.d(t,"isBefore",function(){return ln}),n.d(t,"isDate",function(){return un}),n.d(t,"isEqual",function(){return cn}),n.d(t,"isFirstDayOfMonth",function(){return dn}),n.d(t,"isFriday",function(){return pn}),n.d(t,"isLastDayOfMonth",function(){return hn}),n.d(t,"isLeapYear",function(){return Ft}),n.d(t,"isMonday",function(){return fn}),n.d(t,"isSameDay",function(){return mn}),n.d(t,"isSameHour",function(){return vn}),n.d(t,"isSameISOWeek",function(){return bn}),n.d(t,"isSameISOWeekYear",function(){return wn}),n.d(t,"isSameMinute",function(){return Cn}),n.d(t,"isSameMonth",function(){return xn}),n.d(t,"isSameQuarter",function(){return kn}),n.d(t,"isSameSecond",function(){return Dn}),n.d(t,"isSameWeek",function(){return yn}),n.d(t,"isSameYear",function(){return Mn}),n.d(t,"isSaturday",function(){return Rn}),n.d(t,"isSunday",function(){return ge}),n.d(t,"isThursday",function(){return Pn}),n.d(t,"isTuesday",function(){return _n}),n.d(t,"isValid",function(){return Ne}),n.d(t,"isWednesday",function(){return Ln}),n.d(t,"isWeekend",function(){return ve}),n.d(t,"isWithinInterval",function(){return On}),n.d(t,"lastDayOfDecade",function(){return Nn}),n.d(t,"lastDayOfISOWeek",function(){return An}),n.d(t,"lastDayOfISOWeekYear",function(){return In}),n.d(t,"lastDayOfMonth",function(){return on}),n.d(t,"lastDayOfQuarter",function(){return Hn}),n.d(t,"lastDayOfWeek",function(){return Fn}),n.d(t,"lastDayOfYear",function(){return zn}),n.d(t,"max",function(){return jn}),n.d(t,"min",function(){return Bn}),n.d(t,"parse",function(){return mo}),n.d(t,"roundToNearestMinutes",function(){return vo}),n.d(t,"setDate",function(){return yo}),n.d(t,"setDay",function(){return bo}),n.d(t,"setDayOfYear",function(){return wo}),n.d(t,"setHours",function(){return Eo}),n.d(t,"setISODay",function(){return Co}),n.d(t,"setISOWeek",function(){return xo}),n.d(t,"setISOWeekYear",function(){return _}),n.d(t,"setMilliseconds",function(){return To}),n.d(t,"setMinutes",function(){return ko}),n.d(t,"setMonth",function(){return So}),n.d(t,"setQuarter",function(){return Do}),n.d(t,"setSeconds",function(){return Mo}),n.d(t,"setWeek",function(){return Ro}),n.d(t,"setWeekYear",function(){return Po}),n.d(t,"setYear",function(){return _o}),n.d(t,"startOfDay",function(){return M}),n.d(t,"startOfDecade",function(){return Lo}),n.d(t,"startOfHour",function(){return gn}),n.d(t,"startOfISOWeek",function(){return k}),n.d(t,"startOfISOWeekYear",function(){return D}),n.d(t,"startOfMinute",function(){return En}),n.d(t,"startOfMonth",function(){return be}),n.d(t,"startOfQuarter",function(){return Tn}),n.d(t,"startOfSecond",function(){return Sn}),n.d(t,"startOfWeek",function(){return x}),n.d(t,"startOfWeekYear",function(){return Zt}),n.d(t,"startOfYear",function(){return Ce}),n.d(t,"subDays",function(){return Oo}),n.d(t,"subHours",function(){return No}),n.d(t,"subISOWeekYears",function(){return ie}),n.d(t,"subMilliseconds",function(){return pt}),n.d(t,"subMinutes",function(){return Fo}),n.d(t,"subMonths",function(){return Ao}),n.d(t,"subQuarters",function(){return Io}),n.d(t,"subSeconds",function(){return Ho}),n.d(t,"subWeeks",function(){return zo}),n.d(t,"subYears",function(){return jo}),n.d(t,"toDate",function(){return c})},function(t,n,o){"use strict";o.r(n);var r=o(0),i=o.n(r),a=o(8),s=o.n(a),l=o(9),u=o.n(l),c=o(2),d=o.n(c),p=o(1);function h(e){return"/"===e.charAt(0)}function f(e,t){for(var n=t,o=n+1,r=e.length;o<r;n+=1,o+=1)e[n]=e[o];e.pop()}var m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],o=t&&t.split("/")||[],r=e&&h(e),i=t&&h(t),a=r||i;if(e&&h(e)?o=n:n.length&&(o.pop(),o=o.concat(n)),!o.length)return"/";var s=void 0;if(o.length){var l=o[o.length-1];s="."===l||".."===l||""===l}else s=!1;for(var u=0,c=o.length;c>=0;c--){var d=o[c];"."===d?f(o,c):".."===d?(f(o,c),u++):u&&(f(o,c),u--)}if(!a)for(;u--;u)o.unshift("..");!a||""===o[0]||o[0]&&h(o[0])||o.unshift("");var p=o.join("/");return s&&"/"!==p.substr(-1)&&(p+="/"),p};"function"==typeof Symbol&&Symbol.iterator;var g=!0,v="Invariant failed";var y=function(e,t){if(!e)throw g?new Error(v):new Error(v+": "+(t||""))};function b(e){return"/"===e.charAt(0)?e:"/"+e}function w(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function E(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function C(e){var t=e.pathname,n=e.search,o=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),o&&"#"!==o&&(r+="#"===o.charAt(0)?o:"#"+o),r}function x(e,t,n,o){var r;"string"==typeof e?(r=function(e){var t=e||"/",n="",o="",r=t.indexOf("#");-1!==r&&(o=t.substr(r),t=t.substr(0,r));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===o?"":o}}(e)).state=t:(void 0===(r=Object(p.a)({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(r.key=n),o?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=m(r.pathname,o.pathname)):r.pathname=o.pathname:r.pathname||(r.pathname="/"),r}function T(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,o,r){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof o?o(i,r):r(!0):r(!1!==i)}else r(!0)},appendListener:function(e){var n=!0;function o(){n&&e.apply(void 0,arguments)}return t.push(o),function(){n=!1,t=t.filter(function(e){return e!==o})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];t.forEach(function(e){return e.apply(void 0,n)})}}}var k=!("undefined"==typeof window||!window.document||!window.document.createElement);function S(e,t){t(window.confirm(e))}var D="popstate",M="hashchange";function R(){try{return window.history.state||{}}catch(e){return{}}}function P(e){void 0===e&&(e={}),k||y(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,r=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,a=i.forceRefresh,s=void 0!==a&&a,l=i.getUserConfirmation,u=void 0===l?S:l,c=i.keyLength,d=void 0===c?6:c,h=e.basename?E(b(e.basename)):"";function f(e){var t=e||{},n=t.key,o=t.state,r=window.location,i=r.pathname+r.search+r.hash;return h&&(i=w(i,h)),x(i,o,n)}function m(){return Math.random().toString(36).substr(2,d)}var g=T();function v(e){Object(p.a)(B,e),B.length=n.length,g.notifyListeners(B.location,B.action)}function P(e){(function(e){void 0===e.state&&navigator.userAgent.indexOf("CriOS")})(e)||O(f(e.state))}function _(){O(f(R()))}var L=!1;function O(e){if(L)L=!1,v();else{g.confirmTransitionTo(e,"POP",u,function(t){t?v({action:"POP",location:e}):function(e){var t=B.location,n=F.indexOf(t.key);-1===n&&(n=0);var o=F.indexOf(e.key);-1===o&&(o=0);var r=n-o;r&&(L=!0,I(r))}(e)})}}var N=f(R()),F=[N.key];function A(e){return h+C(e)}function I(e){n.go(e)}var H=0;function z(e){1===(H+=e)&&1===e?(window.addEventListener(D,P),r&&window.addEventListener(M,_)):0===H&&(window.removeEventListener(D,P),r&&window.removeEventListener(M,_))}var j=!1;var B={length:n.length,action:"POP",location:N,createHref:A,push:function(e,t){var r=x(e,t,m(),B.location);g.confirmTransitionTo(r,"PUSH",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.pushState({key:i,state:a},null,t),s)window.location.href=t;else{var l=F.indexOf(B.location.key),u=F.slice(0,-1===l?0:l+1);u.push(r.key),F=u,v({action:"PUSH",location:r})}else window.location.href=t}})},replace:function(e,t){var r=x(e,t,m(),B.location);g.confirmTransitionTo(r,"REPLACE",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.replaceState({key:i,state:a},null,t),s)window.location.replace(t);else{var l=F.indexOf(B.location.key);-1!==l&&(F[l]=r.key),v({action:"REPLACE",location:r})}else window.location.replace(t)}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=g.setPrompt(e);return j||(z(1),j=!0),function(){return j&&(j=!1,z(-1)),t()}},listen:function(e){var t=g.appendListener(e);return z(1),function(){z(-1),t()}}};return B}var _=o(10),L=o.n(_),O=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function N(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var F=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=N(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props.history.location.pathname)},N(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:O({},this.context.router,{history:this.props.history,route:{location:this.props.history.location,match:this.state.match}})}},t.prototype.computeMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}},t.prototype.componentWillMount=function(){var e=this,t=this.props,n=t.children,o=t.history;L()(null==n||1===i.a.Children.count(n),"A <Router> may have only one child element"),this.unlisten=o.listen(function(){e.setState({match:e.computeMatch(o.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){u()(this.props.history===e.history,"You cannot change <Router history>")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?i.a.Children.only(e):null},t}(i.a.Component);F.propTypes={history:d.a.object.isRequired,children:d.a.node},F.contextTypes={router:d.a.object},F.childContextTypes={router:d.a.object.isRequired};var A=F;function I(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var H=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=I(this,e.call.apply(e,[this].concat(i))),o.history=P(o.props),I(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){u()(!this.props.history,"<BrowserRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return i.a.createElement(A,{history:this.history,children:this.props.children})},t}(i.a.Component);H.propTypes={basename:d.a.string,forceRefresh:d.a.bool,getUserConfirmation:d.a.func,keyLength:d.a.number,children:d.a.node};var z=H,j=o(43),B=o.n(j),U={},W=0,q=function(e,t){var n=""+t.end+t.strict+t.sensitive,o=U[n]||(U[n]={});if(o[e])return o[e];var r=[],i={re:B()(e,r,t),keys:r};return W<1e4&&(o[e]=i,W++),i},V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var o=t,r=o.path,i=o.exact,a=void 0!==i&&i,s=o.strict,l=void 0!==s&&s,u=o.sensitive,c=void 0!==u&&u;if(null==r)return n;var d=q(r,{end:a,strict:l,sensitive:c}),p=d.re,h=d.keys,f=p.exec(e);if(!f)return null;var m=f[0],g=f.slice(1),v=e===m;return a&&!v?null:{path:r,url:"/"===r&&""===m?"/":m,isExact:v,params:h.reduce(function(e,t,n){return e[t.name]=g[n],e},{})}};var G=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){L()(this.context.router,"You should not use <Switch> outside a <Router>")},t.prototype.componentWillReceiveProps=function(e){u()(!(e.location&&!this.props.location),'<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),u()(!(!e.location&&this.props.location),'<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,o=void 0,r=void 0;return i.a.Children.forEach(t,function(t){if(null==o&&i.a.isValidElement(t)){var a=t.props,s=a.path,l=a.exact,u=a.strict,c=a.sensitive,d=a.from,p=s||d;r=t,o=V(n.pathname,{path:p,exact:l,strict:u,sensitive:c},e.match)}}),o?i.a.cloneElement(r,{location:n,computedMatch:o}):null},t}(i.a.Component);G.contextTypes={router:d.a.shape({route:d.a.object.isRequired}).isRequired},G.propTypes={children:d.a.node,location:d.a.object};var Y=G,$=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function X(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var K=function(e){return 0===i.a.Children.count(e)},Q=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=X(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props,o.context.router)},X(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:$({},this.context.router,{route:{location:this.props.location||this.context.router.route.location,match:this.state.match}})}},t.prototype.computeMatch=function(e,t){var n=e.computedMatch,o=e.location,r=e.path,i=e.strict,a=e.exact,s=e.sensitive;if(n)return n;L()(t,"You should not use <Route> or withRouter() outside a <Router>");var l=t.route,u=(o||l.location).pathname;return V(u,{path:r,strict:i,exact:a,sensitive:s},l.match)},t.prototype.componentWillMount=function(){u()(!(this.props.component&&this.props.render),"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored"),u()(!(this.props.component&&this.props.children&&!K(this.props.children)),"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored"),u()(!(this.props.render&&this.props.children&&!K(this.props.children)),"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){u()(!(e.location&&!this.props.location),'<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),u()(!(!e.location&&this.props.location),'<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,o=t.component,r=t.render,a=this.context.router,s=a.history,l=a.route,u=a.staticContext,c={match:e,location:this.props.location||l.location,history:s,staticContext:u};return o?e?i.a.createElement(o,c):null:r?e?r(c):null:"function"==typeof n?n(c):n&&!K(n)?i.a.Children.only(n):null},t}(i.a.Component);Q.propTypes={computedMatch:d.a.object,path:d.a.string,exact:d.a.bool,strict:d.a.bool,sensitive:d.a.bool,component:d.a.func,render:d.a.func,children:d.a.oneOfType([d.a.func,d.a.node]),location:d.a.object},Q.contextTypes={router:d.a.shape({history:d.a.object.isRequired,route:d.a.object.isRequired,staticContext:d.a.object})},Q.childContextTypes={router:d.a.object.isRequired};var J=Q;function Z(e,t){if(null==e)throw"LogTools: sender not set";console.log(e+": "+t)}var ee=o(5),te=o.n(ee);function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class oe{}ne(oe,"RooDirectoryID",-1),ne(oe,"upload_chunk_size",102400);var re=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function ie(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ae=function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)},se=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=ie(this,e.call.apply(e,[this].concat(i))),o.handleClick=function(e){if(o.props.onClick&&o.props.onClick(e),!e.defaultPrevented&&0===e.button&&!o.props.target&&!ae(e)){e.preventDefault();var t=o.context.router.history,n=o.props,r=n.replace,i=n.to;r?t.replace(i):t.push(i)}},ie(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){var e=this.props,t=(e.replace,e.to),n=e.innerRef,o=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(e,["replace","to","innerRef"]);L()(this.context.router,"You should not use <Link> outside a <Router>"),L()(void 0!==t,'You must specify the "to" property');var r=this.context.router.history,a="string"==typeof t?x(t,null,null,r.location):t,s=r.createHref(a);return i.a.createElement("a",re({},o,{onClick:this.handleClick,href:s,ref:n}))},t}(i.a.Component);se.propTypes={onClick:d.a.func,target:d.a.string,replace:d.a.bool,to:d.a.oneOfType([d.a.string,d.a.object]).isRequired,innerRef:d.a.oneOfType([d.a.string,d.a.func])},se.defaultProps={replace:!1},se.contextTypes={router:d.a.shape({history:d.a.shape({push:d.a.func.isRequired,replace:d.a.func.isRequired,createHref:d.a.func.isRequired}).isRequired}).isRequired};var le=se;function ue(e,t,n){return Z("ApiQuery","query to "+e),fetch(e,{method:t,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}).then(function(e){return e.json()})}class ce{constructor(){this.URL_Auth="api/Auth/Auth",this.URL_UserInfo="api/Auth/UserInfo",this.AuthCoockieName="AuthToken"}async AuthAsync(e,t){return await ue(this.URL_Auth,"Post",{Login:e,Password:t}).then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}Logout(){this._SetTocken("")}async GetUserInfoAsync(){return await ue(this.URL_UserInfo,"Post").then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}IsAuth(){return""!=this._GetTocken()}_getCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}_GetTocken(){return this._getCookie(this.AuthCoockieName)}_SetTocken(e){document.cookie=this.AuthCoockieName+"="+e}}class de extends i.a.Component{constructor(e){super(e),te()(this),Z("MenuControl","start"),this.authServices=new ce}OnAuthChange(){this.forceUpdate()}render(){return i.a.createElement("div",null,i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("td",null,"Menu:"),i.a.createElement("td",null,i.a.createElement(le,{to:"/"},i.a.createElement("button",null,"FS"))),this.authServices.IsAuth()?i.a.createElement("td",null,i.a.createElement(le,{to:"/Admin"},i.a.createElement("button",null,"Admin"))):i.a.createElement("td",null)))))}}var pe=o(3),he=o(4),fe=o.n(he),me=o(26),ge=o.n(me),ve=o(7),ye=o(25),be=o.n(ye),we=i.a.createContext(new Map),Ee=(we.Consumer,we.Provider);function Ce(e,t){var n=Object(r.useContext)(we);return e||n.get(t)||t}i.a.Component;var xe=function(e){return e[0].toUpperCase()+ge()(e).slice(1)};function Te(e,t){var n=void 0===t?{}:t,o=n.displayName,r=void 0===o?xe(e):o,a=n.Component,s=void 0===a?"div":a,l=n.defaultProps,u=i.a.forwardRef(function(t,n){var o=t.className,r=t.bsPrefix,a=t.as,l=void 0===a?s:a,u=Object(pe.a)(t,["className","bsPrefix","as"]),c=Ce(r,e);return i.a.createElement(l,Object(p.a)({ref:n,className:fe()(o,c)},u))});return u.defaultProps=l,u.displayName=r,u}var ke=i.a.createContext({controlId:void 0}),Se=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,a=e.children,s=e.controlId,l=e.as,u=void 0===l?"div":l,c=Object(pe.a)(e,["bsPrefix","className","children","controlId","as"]);n=Ce(n,"form-group");var d=Object(r.useMemo)(function(){return{controlId:s}},[s]);return i.a.createElement(ke.Provider,{value:d},i.a.createElement(u,Object(p.a)({},c,{ref:t,className:fe()(o,n)}),a))});Se.displayName="FormGroup";var De=Se,Me={type:d.a.string.isRequired,as:d.a.elementType},Re=i.a.forwardRef(function(e,t){var n=e.as,o=void 0===n?"div":n,r=e.className,a=e.type,s=Object(pe.a)(e,["as","className","type"]);return i.a.createElement(o,Object(p.a)({},s,{ref:t,className:fe()(r,a&&a+"-feedback")}))});Re.displayName="Feedback",Re.propTypes=Me,Re.defaultProps={type:"valid"};var Pe=Re,_e=i.a.forwardRef(function(e,t){var n,o,a=e.bsPrefix,s=e.type,l=e.size,u=e.id,c=e.className,d=e.isValid,h=e.isInvalid,f=e.plaintext,m=e.readOnly,g=e.as,v=void 0===g?"input":g,y=Object(pe.a)(e,["bsPrefix","type","size","id","className","isValid","isInvalid","plaintext","readOnly","as"]),b=Object(r.useContext)(ke).controlId;if(a=Ce(a,"form-control"),f)(o={})[a+"-plaintext"]=!0,n=o;else if("file"===s){var w;(w={})[a+"-file"]=!0,n=w}else{var E;(E={})[a]=!0,E[a+"-"+l]=l,n=E}return i.a.createElement(v,Object(p.a)({},y,{type:s,ref:t,readOnly:m,id:u||b,className:fe()(c,n,d&&"is-valid",h&&"is-invalid")}))});_e.displayName="FormControl",_e.Feedback=Pe;var Le=_e,Oe=i.a.forwardRef(function(e,t){var n=e.id,o=e.bsPrefix,a=e.className,s=e.isValid,l=e.isInvalid,u=e.isStatic,c=Object(pe.a)(e,["id","bsPrefix","className","isValid","isInvalid","isStatic"]);o=Ce(o,"form-check-input");var d=Object(r.useContext)(ke),h=d.controlId,f=d.custom;return i.a.createElement("input",Object(p.a)({},c,{ref:t,id:n||h,className:fe()(a,!f&&o,f&&"custom-control-input",s&&"is-valid",l&&"is-invalid",u&&"position-static")}))});Oe.displayName="FormCheckInput",Oe.defaultProps={type:"checkbox"};var Ne=Oe,Fe=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,a=e.htmlFor,s=Object(pe.a)(e,["bsPrefix","className","htmlFor"]);n=Ce(n,"form-check-label");var l=Object(r.useContext)(ke),u=l.controlId,c=l.custom;return i.a.createElement("label",Object(p.a)({},s,{ref:t,htmlFor:a||u,className:fe()(o,!c&&n,c&&"custom-control-label")}))});Fe.displayName="FormCheckLabel",Fe.defaultProps={type:"checkbox"};var Ae=Fe,Ie=i.a.forwardRef(function(e,t){var n=e.id,o=e.bsPrefix,a=e.inline,s=e.disabled,l=e.isValid,u=e.isInvalid,c=e.feedback,d=e.className,h=e.style,f=e.title,m=e.type,g=e.label,v=e.children,y=e.custom,b=Object(pe.a)(e,["id","bsPrefix","inline","disabled","isValid","isInvalid","feedback","className","style","title","type","label","children","custom"]);o=Ce(o,"form-check");var w=Object(r.useContext)(ke).controlId,E=Object(r.useMemo)(function(){return{controlId:n||w,custom:y}},[w,y,n]),C=null!=g&&!1!==g&&!v,x=i.a.createElement(Ne,Object(p.a)({},b,{type:m,ref:t,isValid:l,isInvalid:u,isStatic:!C,disabled:s}));return i.a.createElement(ke.Provider,{value:E},i.a.createElement("div",{style:h,className:fe()(d,!y&&o,y&&"custom-control custom-"+m,a&&(y?"custom-control":o)+"-inline")},v||i.a.createElement(i.a.Fragment,null,x,C&&i.a.createElement(Ae,{title:f},g),(l||u)&&i.a.createElement(Pe,{type:l?"valid":"invalid"},c))))});Ie.displayName="FormCheck",Ie.defaultProps={type:"checkbox",inline:!1,disabled:!1,isValid:!1,isInvalid:!1,title:""},Ie.Input=Ne,Ie.Label=Ae;var He=Ie,ze=["xl","lg","md","sm","xs"],je=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.as,a=void 0===r?"div":r,s=Object(pe.a)(e,["bsPrefix","className","as"]),l=Ce(n,"col"),u=[],c=[];return ze.forEach(function(e){var t,n,o,r=s[e];if(delete s[e],null!=r&&"object"==typeof r){var i=r.span;t=void 0===i||i,n=r.offset,o=r.order}else t=r;var a="xs"!==e?"-"+e:"";null!=t&&u.push(!0===t?""+l+a:""+l+a+"-"+t),null!=o&&c.push("order"+a+"-"+o),null!=n&&c.push("offset"+a+"-"+n)}),u.length||u.push(l),i.a.createElement(a,Object(p.a)({},s,{ref:t,className:fe.a.apply(void 0,[o].concat(u,c))}))});je.displayName="Col";var Be=je,Ue=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.column,a=e.srOnly,s=e.className,l=e.htmlFor,u=Object(pe.a)(e,["bsPrefix","column","srOnly","className","htmlFor"]),c=Object(r.useContext)(ke).controlId;n=Ce(n,"form-label");var d=fe()(s,n,a&&"sr-only",o&&"col-form-label");return l=l||c,o?i.a.createElement(Be,Object(p.a)({as:"label",className:d,htmlFor:l},u)):i.a.createElement("label",Object(p.a)({ref:t,className:d,htmlFor:l},u))});Ue.displayName="FormLabel",Ue.defaultProps={column:!1,srOnly:!1};var We=Ue,qe=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.as,a=void 0===r?"small":r,s=e.muted,l=Object(pe.a)(e,["bsPrefix","className","as","muted"]);return n=Ce(n,"form-text"),i.a.createElement(a,Object(p.a)({},l,{ref:t,className:fe()(o,n,s&&"text-muted")}))});qe.displayName="FormText";var Ve=qe,Ge=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.inline,r=e.className,a=e.validated,s=e.as,l=void 0===s?"form":s,u=Object(pe.a)(e,["bsPrefix","inline","className","validated","as"]);return n=Ce(n,"form"),i.a.createElement(l,Object(p.a)({},u,{ref:t,className:fe()(r,a&&"was-validated",o&&n+"-inline")}))});Ge.displayName="Form",Ge.defaultProps={inline:!1},Ge.Row=Te("form-row"),Ge.Group=De,Ge.Control=Le,Ge.Check=He,Ge.Label=We,Ge.Text=Ve;var Ye=Ge,$e=o(18),Xe=o.n($e);class Ke{static Sho(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{timeOut:3e3,progressBar:!0,closeButton:!0})}static MesOk(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{closeButton:!0,progressBar:!0})}static MesOk_NoHide(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{timeOut:-1,closeButton:!0,progressBar:!0})}static MesEr(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.error(o,t,{timeOut:-1,closeButton:!0})}}class Qe extends i.a.Component{constructor(e){super(e),te()(this),Z("UserControl","start"),this.state={UserName:""},this.authServices=new ce,this.authServices.IsAuth()&&this.authServices.GetUserInfoAsync().then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ke.MesEr(e.ResMessage,"Auth"))}.bind(this))}AuthClick(){let e=this.refs.Login.value,t=this.refs.Password.value;this.authServices.AuthAsync(e,t).then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ke.MesEr(e.ResMessage,"Auth"))}.bind(this))}LogoutClick(){this.authServices.Logout(),this.setState({UserName:""}),this.props.ParentComponent.OnAuthChange()}render(){let e=this.state;return i.a.createElement("div",null,this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement("p",null,"Вы авторизованы. Пользователь: ",e.UserName,"."),i.a.createElement("button",{onClick:this.LogoutClick},"Logout")):i.a.createElement("div",null,i.a.createElement("p",null,"Вы не авторизованы ",e.UserName,". Вход:"),i.a.createElement(Ye.Control,{ref:"Login",type:"text",placeholder:"Enter login"}),i.a.createElement(Ye.Text,{className:"text-muted"},"We'll never share your login with anyone else."),i.a.createElement("br",null),i.a.createElement(Ye.Control,{ref:"Password",type:"password",placeholder:"Password"}),i.a.createElement("br",null),i.a.createElement("button",{onClick:this.AuthClick},"Auth")))}}class Je{constructor(){this.URL_DirectoryItems="api/Explorer/GetDirectoryItems?ID=",this.URL_ScanDirectory="api/Explorer/ScanDirectory?ID=",this.URL_Delete="api/Explorer/DeleteFile",this.URL_Move="api/Explorer/MoveElement",this.URL_Download="api/Explorer/GetFile?ID=",this.URL_CreateDirectory="api/Explorer/CreateDirectory?"}async DirectoryGetItemsAsync(e){let t=this.URL_DirectoryItems+e;return await ue(t,"Get")}async ScanDirectoryAsync(e){let t=this.URL_ScanDirectory+e;return await ue(t,"Get")}async DeleteAsync(e){return await ue(this.URL_Delete,"POST",{ID:e})}async MoveAsync(e,t){return await ue(this.URL_Move,"POST",{ID:e,NewParent:t})}OpenDownload(e){let t=this.URL_Download+e;window.open(t,"_blank")}async CreateDirectoryAsync(e,t){return await ue(this.URL_CreateDirectory,"POST",{ParentID:t,Name:e})}}function Ze(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var et=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return null!=e}).reduce(function(e,t){if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(){for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];e.apply(this,o),t.apply(this,o)}},null)};function tt(e){return!e||"#"===e.trim()}var nt=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).handleClick=o.handleClick.bind(Ze(o)),o.handleKeyDown=o.handleKeyDown.bind(Ze(o)),o}Object(ve.a)(t,e);var n=t.prototype;return n.handleClick=function(e){var t=this.props,n=t.disabled,o=t.href,r=t.onClick;(n||tt(o))&&e.preventDefault(),n?e.stopPropagation():r&&r(e)},n.handleKeyDown=function(e){" "===e.key&&(e.preventDefault(),this.handleClick(e))},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"a":t,o=e.disabled,r=e.onKeyDown,a=e.innerRef,s=Object(pe.a)(e,["as","disabled","onKeyDown","innerRef"]);return tt(s.href)&&(s.role=s.role||"button",s.href=s.href||"#"),o&&(s.tabIndex=-1,s["aria-disabled"]=!0),a&&(s.ref=a),i.a.createElement(n,Object(p.a)({},s,{onClick:this.handleClick,onKeyDown:et(this.handleKeyDown,r)}))},t}(i.a.Component),ot=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.variant,r=e.size,a=e.active,s=e.className,l=e.block,u=e.type,c=e.as,d=Object(pe.a)(e,["bsPrefix","variant","size","active","className","block","type","as"]),h=Ce(n,"btn"),f=fe()(s,h,a&&"active",h+"-"+o,l&&h+"-block",r&&h+"-"+r);if(d.href)return i.a.createElement(nt,Object(p.a)({},d,{as:c,innerRef:t,className:fe()(f,d.disabled&&"disabled")}));var m=c||"button";return t&&(d.ref=t),i.a.createElement(m,Object(p.a)({},d,{type:u,className:f}))});ot.displayName="Button",ot.defaultProps={variant:"primary",active:!1,disabled:!1,type:"button"};var rt=ot;class it extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerRow "+this.props.ID,"start"),this.state={ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect}}componentWillReceiveProps(e){this.props=e,null!=this.refs.Select&&(this.refs.Select.checked=!1),this.setState({ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect})}GetDate(){return this.state.Data}GetRowID(){return this.state.ID}GetDataID(){return this.state.Data.ID}IsCheked(){return null!=this.refs.Select&&this.refs.Select.checked}OnDirectoryClick(){this.props.ParentComponent.OnDirectoryClick(this.GetDataID())}render(){let e=this.state,t=e.Data;return i.a.createElement("tr",null,i.a.createElement("td",null,t.ID),e.ShoSelect?i.a.createElement("td",null,i.a.createElement("input",{ref:"Select",type:"checkbox"})):null,"RootDirectory"===t.Type||"Directory"===t.Type?i.a.createElement("td",null,i.a.createElement(le,{to:`/?ID=${t.ID}`},i.a.createElement(rt,{id:t.ID,onClick:this.OnDirectoryClick,variant:"outline-dark"},t.Name))):i.a.createElement("td",null,t.Name),i.a.createElement("td",null,t.Type),i.a.createElement("td",null,t.Size))}}class at extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerControl","start"),this.state={data:{},ShoSelect:this.props.ShoSelect},this.ChildRows=[],this.fileExplorerServices=new Je,this.LoadDirectory()}OnBackClick(e){this.props.ParentComponent.SetID(this.state.data.ParentID),Z("FileExplorerControl","OnBackClick "+this.state.data.ParentID),this.LoadDirectory()}OnDirectoryClick(e){this.props.ParentComponent.SetID(e),Z("FileExplorerControl","MoveToDirectory "+e),this.LoadDirectory()}OnSortClick(e){let t=e.target.attributes[0].value,n=this.state.data;n.items.sort(function(e,t){var n,o,r=arguments.length;if(0===r)return(e,t)=>(e<t?-1:e>t&&1)||0;if(1===r)switch(typeof e){case"number":return e<0?(e,t)=>(e<t?1:e>t&&-1)||0:(e,t)=>(e<t?-1:e>t&&1)||0;case"string":return(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0}if(2===r&&"number"==typeof t)return t<0?(t,n)=>(t[e]<n[e]?1:t[e]>n[e]&&-1)||0:(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0;if("object"==typeof e)n=Object.getOwnPropertyNames(e),o=n.map(t=>e[t]),r=n.length;else{n=new Array(r),o=new Array(r);for(let e=r;e--;)n[e]=arguments[e],o[e]=1}return(e,t)=>{for(let i=0;i<r;i++){if(e[n[i]]<t[n[i]])return o[i];if(e[n[i]]>t[n[i]])return-o[i]}return 0}}(t,1)),this.setState({data:n})}LoadDirectory(){let e=this.props.ParentComponent.GetID();Z("FileExplorerControl","LoadDirectory "+e),this.fileExplorerServices.DirectoryGetItemsAsync(e).then(function(t){this.setState({data:t,ShoSelect:!(!this.props.ShoSelect||-1==e)})}.bind(this))}OnScanDirClick(e){let t=this.props.ParentComponent.GetID();Z("FileExplorerControl","ScanDirectory "+t),this.fileExplorerServices.ScanDirectoryAsync(t).then(function(e){this.LoadDirectory()}.bind(this))}GetSelectedID(){return this.ChildRows.filter(e=>e.IsCheked()).map(e=>e.GetDataID())}render(){let e=this.state.data;return"{}"!==JSON.stringify(e)?(Z("FileExplorerControl","Data"),i.a.createElement("div",null,this.props.ParentComponent.GetID()!=oe.RooDirectoryID?i.a.createElement("p",null,i.a.createElement(le,{to:`/?ID=${e.ParentID}`},i.a.createElement("button",{onClick:this.OnBackClick},"l- На уровень вверх - ",e.ParentName))):null,i.a.createElement("p",null,e.LogicPath),i.a.createElement("p",null,i.a.createElement("button",{onClick:this.LoadDirectory},"Update"),i.a.createElement("button",{onClick:this.OnScanDirClick},"Rescan")),i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{property:"ID",onClick:this.OnSortClick},"ID")),this.state.ShoSelect?i.a.createElement("th",null,"Select"):null,i.a.createElement("th",null,i.a.createElement("button",{property:"Name",onClick:this.OnSortClick},"Name")),i.a.createElement("th",null,i.a.createElement("button",{property:"Type",onClick:this.OnSortClick},"Type")),i.a.createElement("th",null,i.a.createElement("button",{property:"Size",onClick:this.OnSortClick},"Size")))),i.a.createElement("tbody",null,e.items.map(function(e,t,n){return[i.a.createElement(it,{ref:e=>{null!=e?this.ChildRows[t]=e:this.ChildRows.splice(t,1)},ShoSelect:this.state.ShoSelect,key:t,ID:t,data:e,ParentComponent:this})]}.bind(this)))))):(Z("FileExplorerControl","NoData"),i.a.createElement("div",null,i.a.createElement("p",null,"NoData")))}}var st=o(20),lt=o.n(st),ut=o(13),ct=o.n(ut),dt=o(11),pt=o.n(dt),ht=o(14),ft=o.n(ht),mt=o(40),gt=o.n(mt),vt=!1,yt=i.a.createContext(null),bt="unmounted",wt="exited",Et="entering",Ct="entered",xt=function(e){function t(t,n){var o;o=e.call(this,t,n)||this;var r,i=n&&!n.isMounting?t.enter:t.appear;return o.appearStatus=null,t.in?i?(r=wt,o.appearStatus=Et):r=Ct:r=t.unmountOnExit||t.mountOnEnter?bt:wt,o.state={status:r},o.nextCallback=null,o}Object(ve.a)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===bt?{status:wt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Et&&n!==Ct&&(t=Et):n!==Et&&n!==Ct||(t="exiting")}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,o=this.props.timeout;return e=t=n=o,null!=o&&"number"!=typeof o&&(e=o.exit,t=o.enter,n=void 0!==o.appear?o.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=s.a.findDOMNode(this);t===Et?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===wt&&this.setState({status:bt})},n.performEnter=function(e,t){var n=this,o=this.props.enter,r=this.context?this.context.isMounting:t,i=this.getTimeouts(),a=r?i.appear:i.enter;!t&&!o||vt?this.safeSetState({status:Ct},function(){n.props.onEntered(e)}):(this.props.onEnter(e,r),this.safeSetState({status:Et},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,a,function(){n.safeSetState({status:Ct},function(){n.props.onEntered(e,r)})})}))},n.performExit=function(e){var t=this,n=this.props.exit,o=this.getTimeouts();n&&!vt?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,o.exit,function(){t.safeSetState({status:wt},function(){t.props.onExited(e)})})})):this.safeSetState({status:wt},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(o){n&&(n=!1,t.nextCallback=null,e(o))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);var o=null==t&&!this.props.addEndListener;e&&!o?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===bt)return null;var t=this.props,n=t.children,o=Object(pe.a)(t,["children"]);if(delete o.in,delete o.mountOnEnter,delete o.unmountOnExit,delete o.appear,delete o.enter,delete o.exit,delete o.timeout,delete o.addEndListener,delete o.onEnter,delete o.onEntering,delete o.onEntered,delete o.onExit,delete o.onExiting,delete o.onExited,"function"==typeof n)return i.a.createElement(yt.Provider,{value:null},n(e,o));var r=i.a.Children.only(n);return i.a.createElement(yt.Provider,{value:null},i.a.cloneElement(r,o))},t}(i.a.Component);function Tt(){}xt.contextType=yt,xt.propTypes={},xt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Tt,onEntering:Tt,onEntered:Tt,onExit:Tt,onExiting:Tt,onExited:Tt},xt.UNMOUNTED=0,xt.EXITED=1,xt.ENTERING=2,xt.ENTERED=3,xt.EXITING=4;var kt,St=xt,Dt=o(41),Mt=o.n(Dt);var Rt=((kt={})[Et]="show",kt[Ct]="show",kt),Pt=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).handleEnter=function(e){!function(e){e.offsetHeight}(e),t.props.onEnter&&t.props.onEnter(e)},t}return Object(ve.a)(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.children,o=Object(pe.a)(e,["className","children"]);return i.a.createElement(St,Object(p.a)({addEndListener:Mt.a},o,{onEnter:this.handleEnter}),function(e,o){return i.a.cloneElement(n,Object(p.a)({},o,{className:fe()("fade",t,n.props.className,Rt[e])}))})},t}(i.a.Component);Pt.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1};var _t=Pt,Lt=Te("modal-body"),Ot=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.centered,a=e.size,s=e.children,l=e.scrollable,u=Object(pe.a)(e,["bsPrefix","className","centered","size","children","scrollable"]),c=(n=Ce(n,"modal"))+"-dialog";return i.a.createElement("div",Object(p.a)({},u,{ref:t,className:fe()(c,o,a&&n+"-"+a,r&&c+"-centered",l&&c+"-scrollable")}),i.a.createElement("div",{className:fe()(n+"-content")},s))});Ot.displayName="ModalDialog";var Nt=Ot,Ft=Te("modal-footer");var At=function(e){var t=Object(r.useRef)(e);return Object(r.useEffect)(function(){t.current=e},[e]),t};function It(e){var t=At(e);return Object(r.useCallback)(function(){return t.current&&t.current.apply(t,arguments)},[t])}var Ht={label:d.a.string.isRequired,onClick:d.a.func},zt=i.a.forwardRef(function(e,t){var n=e.label,o=e.onClick,r=e.className,a=Object(pe.a)(e,["label","onClick","className"]);return i.a.createElement("button",Object(p.a)({ref:t,type:"button",className:fe()("close",r),onClick:o},a),i.a.createElement("span",{"aria-hidden":"true"},"×"),i.a.createElement("span",{className:"sr-only"},n))});zt.displayName="CloseButton",zt.propTypes=Ht,zt.defaultProps={label:"Close"};var jt=zt,Bt=i.a.createContext({onHide:function(){}}),Ut=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.closeLabel,a=e.closeButton,s=e.onHide,l=e.className,u=e.children,c=Object(pe.a)(e,["bsPrefix","closeLabel","closeButton","onHide","className","children"]);n=Ce(n,"modal-header");var d=Object(r.useContext)(Bt),h=It(function(){d&&d.onHide(),s&&s()});return i.a.createElement("div",Object(p.a)({ref:t},c,{className:fe()(l,n)}),u,a&&i.a.createElement(jt,{label:o,onClick:h}))});Ut.displayName="ModalHeader",Ut.defaultProps={closeLabel:"Close",closeButton:!1};var Wt,qt=Ut,Vt=Te("modal-title",{Component:(Wt="h4",i.a.forwardRef(function(e,t){return i.a.createElement("div",Object(p.a)({},e,{ref:t,className:fe()(e.className,Wt)}))}))}),Gt=o(12),Yt=o.n(Gt),$t=o(15),Xt=o.n($t),Kt=o(27),Qt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Jt=".sticky-top",Zt=".navbar-toggler",en={show:!1,backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,animation:!0,dialogAs:Nt,manager:new(function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).adjustAndStore=function(e,t,n){var o=t.style[e];t.dataset[e]=o,Xt()(t,e,parseFloat(Xt()(t,e))+n+"px")},t.restore=function(e,t){var n=t.dataset[e];void 0!==n&&(delete t.dataset[e],Xt()(t,e,n))},t}Object(ve.a)(t,e);var n=t.prototype;return n.setContainerStyle=function(t,n){var o=this;if(e.prototype.setContainerStyle.call(this,t,n),t.overflowing){var r=ft()();Yt()(n,Qt).forEach(function(e){return o.adjustAndStore("paddingRight",e,r)}),Yt()(n,Jt).forEach(function(e){return o.adjustAndStore("margingRight",e,-r)}),Yt()(n,Zt).forEach(function(e){return o.adjustAndStore("margingRight",e,r)})}},n.removeContainerStyle=function(t,n){var o=this;e.prototype.removeContainerStyle.call(this,t,n),Yt()(n,Qt).forEach(function(e){return o.restore("paddingRight",e)}),Yt()(n,Jt).forEach(function(e){return o.restore("margingRight",e)}),Yt()(n,Zt).forEach(function(e){return o.restore("margingRight",e)})},t}(o.n(Kt).a))};function tn(e){return i.a.createElement(_t,e)}function nn(e){return i.a.createElement(_t,e)}var on=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).state={style:{}},t.modalContext={onHide:function(){return t.props.onHide()}},t.setModalRef=function(e){t._modal=e},t.handleDialogMouseDown=function(){t._waitingForMouseUp=!0},t.handleMouseUp=function(e){t._waitingForMouseUp&&e.target===t._modal.dialog&&(t._ignoreBackdropClick=!0),t._waitingForMouseUp=!1},t.handleClick=function(e){t._ignoreBackdropClick||e.target!==e.currentTarget?t._ignoreBackdropClick=!1:t.props.onHide()},t.handleEnter=function(e){var n;e&&(e.style.display="block",t.updateDialogStyle(e));for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEnter&&(n=t.props).onEnter.apply(n,[e].concat(r))},t.handleEntering=function(e){for(var n,o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEntering&&(n=t.props).onEntering.apply(n,[e].concat(r)),lt.a.on(window,"resize",t.handleWindowResize)},t.handleExited=function(e){var n;e&&(e.style.display="");for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onExited&&(n=t.props).onExited.apply(n,r),lt.a.off(window,"resize",t.handleWindowResize)},t.handleWindowResize=function(){t.updateDialogStyle(t._modal.dialog)},t.renderBackdrop=function(e){var n=t.props,o=n.bsPrefix,r=n.backdropClassName;return i.a.createElement("div",Object(p.a)({},e,{className:fe()(o+"-backdrop",r)}))},t}Object(ve.a)(t,e);var n=t.prototype;return n.componentWillUnmount=function(){lt.a.off(window,"resize",this.handleWindowResize)},n.updateDialogStyle=function(e){if(pt.a){var t=this.props.manager.isContainerOverflowing(this._modal),n=e.scrollHeight>ct()(e).documentElement.clientHeight;this.setState({style:{paddingRight:t&&!n?ft()():void 0,paddingLeft:!t&&n?ft()():void 0}})}},n.render=function(){var e=this.props,t=e.bsPrefix,n=e.className,o=e.style,r=e.dialogClassName,a=e.children,s=e.dialogAs,l=e.show,u=e.animation,c=e.backdrop,d=e.keyboard,h=e.manager,f=e.onEscapeKeyDown,m=e.onShow,g=e.onHide,v=e.container,y=e.autoFocus,b=e.enforceFocus,w=e.restoreFocus,E=e.onEntered,C=e.onExit,x=e.onExiting,T=(e.onExited,e.onEntering,e.onEnter,e.onEntering,e.backdropClassName,Object(pe.a)(e,["bsPrefix","className","style","dialogClassName","children","dialogAs","show","animation","backdrop","keyboard","manager","onEscapeKeyDown","onShow","onHide","container","autoFocus","enforceFocus","restoreFocus","onEntered","onExit","onExiting","onExited","onEntering","onEnter","onEntering","backdropClassName"])),k=!0===c?this.handleClick:null,S=Object(p.a)({},o,this.state.style);return u||(S.display="block"),i.a.createElement(Bt.Provider,{value:this.modalContext},i.a.createElement(gt.a,{show:l,backdrop:c,container:v,keyboard:d,autoFocus:y,enforceFocus:b,restoreFocus:w,onEscapeKeyDown:f,onShow:m,onHide:g,onEntered:E,onExit:C,onExiting:x,manager:h,ref:this.setModalRef,style:S,className:fe()(n,t),containerClassName:t+"-open",transition:u?tn:void 0,backdropTransition:u?nn:void 0,renderBackdrop:this.renderBackdrop,onClick:k,onMouseUp:this.handleMouseUp,onEnter:this.handleEnter,onEntering:this.handleEntering,onExited:this.handleExited},i.a.createElement(s,Object(p.a)({},T,{onMouseDown:this.handleDialogMouseDown,className:r}),a)))},t}(i.a.Component);on.defaultProps=en;var rn=function(e,t){"string"==typeof t&&(t={prefix:t});var n=e.prototype&&e.prototype.isReactComponent,o=t,a=o.prefix,s=o.forwardRefAs,l=void 0===s?n?"ref":"innerRef":s;return be()(function(t,n){var o=Object(p.a)({},t);o[l]=n;var s=Object(r.useContext)(we);return i.a.createElement(e,Object(p.a)({},o,{bsPrefix:o.bsPrefix||s.get(a)||a}))},{displayName:"Bootstrap("+(e.displayName||e.name)+")"})}(on,"modal");rn.Body=Lt,rn.Header=qt,rn.Title=Vt,rn.Footer=Ft,rn.Dialog=Nt,rn.TRANSITION_DURATION=300,rn.BACKDROP_TRANSITION_DURATION=150;var an=rn,sn=o(19);class ln extends i.a.Component{constructor(e){super(e),te()(this),Z("ExplorerActionsControl","start"),this.state={ResultMsg:"",MoveWindowsShow:!1},this.fileExplorerServices=new Je}GetUserList(){}SaveUserList(){}OnDownloadClick(e){this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>{Z("ExplorerActionsControl","OnDownload "+e),this.fileExplorerServices.OpenDownload(e)})}OnDeleteClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>(Z("ExplorerActionsControl","OnDelete "+e),this.fileExplorerServices.DeleteAsync(e))),n="";Promise.all(t).then(function(e){e.map(function(e){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | "}),Ke.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this))}OnMoveClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID();0!=t.length&&(this.selected=t,this.setState({MoveWindowsShow:!0}))}OnCreateDirectoryClick(e){let t=this.refs.DirectoryName.value,n=this.props.ParentComponent.GetID();this.fileExplorerServices.CreateDirectoryAsync(t,n).then(function(e){this.props.ParentComponent.OnItemsChange(),Ke.MesOk("Complete","CreateDir")}.bind(this)),this.refs.DirectoryName.value=""}OnMoveWindowCloseClick(){this.setState({MoveWindowsShow:!1})}GetID(){return null!=this.SelectedID?this.SelectedID:this.props.ParentComponent.GetID()}SetID(e){this.SelectedID=e}OnMoveWindowClick(){let t=this.selected.map(function(e){return Z("ExplorerActionsControl","OnMove "+e),this.fileExplorerServices.MoveAsync(e,this.SelectedID)}.bind(this)),n="";Promise.all(t).then(function(t){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | ",Ke.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this)),this.setState({MoveWindowsShow:!1})}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"ExplorerControlPanel"),i.a.createElement("p",null,i.a.createElement("input",{ref:"DirectoryName"}),i.a.createElement("button",{onClick:this.OnCreateDirectoryClick},"CreateDirectory")),""!=this.state.ResultMsg?i.a.createElement("p",null,this.state.ResultMsg):"",i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDownloadClick},"Скачать")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDeleteClick},"Удалить")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnMoveClick},"Переместить"))))),i.a.createElement(an,{ref:"Modal",show:this.state.MoveWindowsShow,onHide:this.OnMoveWindowCloseClick,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},i.a.createElement(an.Header,{closeButton:!0},i.a.createElement(an.Title,null,"Select destination directory")),i.a.createElement(an.Body,null,i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!1})),i.a.createElement(an.Footer,null,i.a.createElement(rt,{variant:"secondary",onClick:this.OnMoveWindowCloseClick},"Cansel"),i.a.createElement(rt,{variant:"primary",onClick:this.OnMoveWindowClick},"Move to directory"))))}}class un{constructor(){this.URL_Start="/api/UploadFiles/StartUpload",this.URL_Upload="/api/UploadFiles/UploadBlob",this.URL_Cansel="/api/UploadFiles/Cansel",this.upload_chunk_size=oe.upload_chunk_size,this.ID=-1,this._ContinueDownload=!1,this._file=null,this._ParentID=null,this.OnProggresseChange=null,this.OnIDReceived=null,this.OnError=null}async _ReadBlobAsync(e,t){return new Promise(function(n,o){let r=this._file.slice(e,t),i=new FileReader;i.onload=function(){n(i.result)},i.onerror=o,i.readAsDataURL(r)}.bind(this))}async _StartUploadAsync(){let e;return await ue(this.URL_Start,"Post",{ParentID:this._ParentID,Name:this._file.name,Size:this._file.size}).then(function(t){e=t}.bind(this)),e}async _UploadBlobAsync(e,t){if(Z("UploadServices","_UploadBlobAsync"),!this._ContinueDownload)return{State:!0};if(""!=e){let n;return Z("UploadServices",this.URL_Upload+t),await ue(this.URL_Upload,"Post",{ID:this.ID,chunk:e}).then(function(e){n=e}.bind(this)),n}}async UploadFileAsync(e,t){this._file=e,this._ParentID=t;let n=await this._StartUploadAsync();if(n.State){this._ContinueDownload=!0,this.ID=n.ID,null!=this.OnIDReceived&&this.OnIDReceived(this.ID);for(let t=0,n=0;t<this._file.size;t+=this.upload_chunk_size,n++){if(!this._ContinueDownload)return;let o=await this._ReadBlobAsync(t,t+this.upload_chunk_size),r=await this._UploadBlobAsync(o,n);if(!r.State)return void(null!=this.OnError&&this.OnError(r.Msg));let i=Math.round(100*t/e.size);Z("UploadServices","p = "+i),null!=this.OnProggresseChange&&this.OnProggresseChange(i)}this._ContinueDownload=!1}else null!=this.OnError&&this.OnError(n.Msg)}Cansel(){this._ContinueDownload=!1,setTimeout(function(){ue(this.URL_Cansel,"Post",{ID:this.ID})}.bind(this),500)}}class cn extends i.a.Component{constructor(e){super(e),te()(this),Z("UploaderControl","start"),this.state={progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""},this.uploadServices=new un,this.uploadServices.OnProggresseChange=this.OnProgresseChange,this.uploadServices.OnError=this.OnError}UploadClick(){let e=this.refs.file,t=e.files;if(0==t.length)return;let n=t[0];this.setState({ButtonUploadEnable:!1,_state:1,FileInfo:{name:n.name,size:n.size}}),this.uploadServices.UploadFileAsync(n,this.props.ParentComponent.GetID()).then(function(){Ke.MesOk("Complete","Upload"),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""}),this.props.ParentComponent.OnItemsChange(),e.value=""}.bind(this))}CancelClick(){this.uploadServices.Cansel(),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{}})}OnProgresseChange(e){this.setState({progress:e})}OnError(e){this.setState({progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:e})}render(){return i.a.createElement("div",null,i.a.createElement("h2",null,"Upload"),i.a.createElement("p",null,i.a.createElement("input",{ref:"file",type:"file",disabled:!this.state.ButtonUploadEnable}),i.a.createElement("button",{disabled:!this.state.ButtonUploadEnable,onClick:this.UploadClick},"Upload"),i.a.createElement("button",{disabled:this.state.ButtonUploadEnable,onClick:this.CancelClick},"Cancel")),1==this.state._state?i.a.createElement("div",null,i.a.createElement("p",null,"Прогресс ",this.state.progress," %"),i.a.createElement("p",null,"Выполняется загрука файла:"),i.a.createElement("p",null,"Имя файла: ",this.state.FileInfo.name),i.a.createElement("p",null,"Размеры файла: ",this.state.FileInfo.size)):"",""!=this.state.ResultMsg?i.a.createElement("p",null,"Результат: ",this.state.ResultMsg):null)}}var dn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=Object(pe.a)(e,["bsPrefix","className"]),a=Ce(n,"btn-toolbar");return i.a.createElement("div",Object(p.a)({},r,{ref:t,className:fe()(o,a)}))});dn.displayName="ButtonToolbar",dn.defaultProps={role:"toolbar"};var pn=dn;class hn extends i.a.Component{constructor(e){super(e),te()(this),Z("BootstrapControl","start")}ToastifyTest(){this.Leght=(null==this.Leght?0:this.Leght)+500}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"Bootstrap test"),i.a.createElement(pn,null,i.a.createElement(rt,{onClick:this.ToastifyTest,variant:"outline-primary"},"Primary"),i.a.createElement(rt,{variant:"outline-secondary"},"Secondary"),i.a.createElement(rt,{variant:"outline-success"},"Success"),i.a.createElement(rt,{variant:"outline-warning"},"Warning"),i.a.createElement(rt,{variant:"outline-danger"},"Danger"),i.a.createElement(rt,{variant:"outline-info"},"Info"),i.a.createElement(rt,{variant:"outline-light"},"Light"),i.a.createElement(rt,{variant:"outline-dark"},"Dark")))}}class fn extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerPage","start");var t=new URL(window.location.href).searchParams.get("ID");null!=t?this.SetID(t):this.SetID(-1)}OnAuthChange(){this.OnItemsChange(),this.refs.MenuControl.OnAuthChange()}OnItemsChange(){this.refs.FileExplorerControl.LoadDirectory()}SetID(e){this.CurrentID=e,Z("FileExplorerPage",this.CurrentID)}GetID(){return this.CurrentID}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(de,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(Qe,{ref:"UserControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!0}),i.a.createElement("hr",null),this.GetID()!=oe.RooDirectoryID?i.a.createElement("div",null,i.a.createElement(ln,{ref:"ExplorerActionsControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(cn,{ref:"UploaderControl",ParentComponent:this}),i.a.createElement("hr",null)):"",i.a.createElement(hn,null),i.a.createElement("hr",null))}}o(84);function mn(e,t){return void 0!==e[t]}function gn(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function vn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var yn=i.a.createContext(null),bn=i.a.createContext(null),wn=o(42),En=o.n(wn),Cn=i.a.createContext(),xn=function(e,t){return null!=e?String(e):t||null},Tn=Cn,kn=i.a.createContext(null),Sn=i.a.createContext(null),Dn=function(){},Mn=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).state={navContext:null},t.handleSelect=function(e,n){var o=t.props,r=o.onSelect,i=o.parentOnSelect;null!=e&&(r&&r(e,n),i&&i(e,n))},t.handleKeyDown=function(e){var n,o=t.props.onKeyDown;switch(o&&o(e),e.key){case"ArrowLeft":case"ArrowUp":n=t.getNextActiveChild(-1);break;case"ArrowRight":case"ArrowDown":n=t.getNextActiveChild(1);break;default:return}n&&(e.preventDefault(),t.handleSelect(n.dataset.rbEventKey,e),t._needsRefocus=!0)},t.attachRef=function(e){t.listNode=e},t}Object(ve.a)(t,e),t.getDerivedStateFromProps=function(e){var t=e.activeKey,n=e.getControlledId,o=e.getControllerId;return{navContext:{role:e.role,activeKey:xn(t),getControlledId:n||Dn,getControllerId:o||Dn}}};var n=t.prototype;return n.componentDidUpdate=function(){if(this._needsRefocus&&this.listNode){var e=this.listNode.querySelector("[data-rb-event-key].active");e&&e.focus()}},n.getNextActiveChild=function(e){if(!this.listNode)return null;var t=Yt()(this.listNode,"[data-rb-event-key]:not(.disabled)"),n=this.listNode.querySelector(".active"),o=t.indexOf(n);if(-1===o)return null;var r=o+e;return r>=t.length&&(r=0),r<0&&(r=t.length-1),t[r]},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"ul":t,o=(e.onSelect,e.parentOnSelect,e.getControlledId,e.getControllerId,e.activeKey,Object(pe.a)(e,["as","onSelect","parentOnSelect","getControlledId","getControllerId","activeKey"]));return"tablist"===o.role&&(o.onKeyDown=this.handleKeyDown),i.a.createElement(Tn.Provider,{value:this.handleSelect},i.a.createElement(kn.Provider,{value:this.state.navContext},i.a.createElement(n,Object(p.a)({},o,{onKeyDown:this.handleKeyDown,ref:this.attachRef}))))},t}(i.a.Component),Rn=En()([Tn,Sn],function(e,t,n){var o=n.role;return t?{activeKey:t.activeKey,parentOnSelect:e,role:o||"tablist",getControllerId:t.getControllerId,getControlledId:t.getControlledId}:{parentOnSelect:e}},Mn),Pn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.children,a=e.as,s=void 0===a?"div":a,l=Object(pe.a)(e,["bsPrefix","className","children","as"]);return n=Ce(n,"nav-item"),i.a.createElement(s,Object(p.a)({},l,{ref:t,className:fe()(o,n)}),r)});Pn.displayName="NavItem";var _n=Pn,Ln=i.a.forwardRef(function(e,t){var n=e.active,o=e.className,a=e.tabIndex,s=e.eventKey,l=e.onSelect,u=e.onClick,c=e.as,d=Object(pe.a)(e,["active","className","tabIndex","eventKey","onSelect","onClick","as"]),h=xn(s,d.href),f=Object(r.useContext)(Tn),m=Object(r.useContext)(kn),g=n;m&&(d.role||"tablist"!==m.role||(d.role="tab"),d["data-rb-event-key"]=h,d.id=m.getControllerId(h),d["aria-controls"]=m.getControlledId(h),g=null==n&&null!=h?m.activeKey===h:n),"tab"===d.role&&(d.tabIndex=g?a:-1,d["aria-selected"]=g);var v=It(function(e){u&&u(e),null!=h&&(l&&l(h,e),f&&f(h,e))});return i.a.createElement(c,Object(p.a)({},d,{ref:t,onClick:v,className:fe()(o,g&&"active")}))});Ln.defaultProps={disabled:!1};var On=Ln,Nn={disabled:!1,as:nt},Fn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.disabled,r=e.className,a=e.href,s=e.eventKey,l=e.onSelect,u=e.as,c=Object(pe.a)(e,["bsPrefix","disabled","className","href","eventKey","onSelect","as"]);return n=Ce(n,"nav-link"),i.a.createElement(On,Object(p.a)({},c,{href:a,ref:t,eventKey:s,as:u,disabled:o,onSelect:l,className:fe()(r,n,o&&"disabled")}))});Fn.displayName="NavLink",Fn.defaultProps=Nn;var An=Fn,In=i.a.forwardRef(function(e,t){var n,o,a,s=function(e,t){return Object.keys(t).reduce(function(n,o){var i,a=n[gn(o)],s=n[o],l=Object(pe.a)(n,[gn(o),o].map(vn)),u=t[o],c=Object(r.useRef)({}),d=Object(r.useState)(a),h=d[0],f=d[1],m=mn(e,o),g=mn(c.current,o);c.current=e,!m&&g&&f(a);var v=e[u],y=Object(r.useCallback)(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];v&&v.apply(void 0,[e].concat(n)),f(e)},[f,v]);return Object(p.a)({},l,((i={})[o]=m?s:h,i[u]=y,i))},e)}(e,{activeKey:"onSelect"}),l=s.as,u=void 0===l?"div":l,c=s.bsPrefix,d=s.variant,h=s.fill,f=s.justify,m=s.navbar,g=s.className,v=s.children,y=s.activeKey,b=Object(pe.a)(s,["as","bsPrefix","variant","fill","justify","navbar","className","children","activeKey"]);c=Ce(c,"nav");var w=Object(r.useContext)(yn),E=Object(r.useContext)(bn);return w?(o=w.bsPrefix,m=null==m||m):E&&(a=E.cardHeaderBsPrefix),i.a.createElement(Rn,Object(p.a)({as:u,ref:t,activeKey:y,className:fe()(g,(n={},n[c]=!m,n[o+"-nav"]=m,n[a+"-"+d]=!!a,n[c+"-"+d]=!!d,n[c+"-fill"]=h,n[c+"-justified"]=f,n))},b),v)});In.displayName="Nav",In.defaultProps={justify:!1,fill:!1},In.Item=_n,In.Link=An;var Hn=In;class zn{constructor(){this.URL_GetUsers="api/User/GetUserList",this.URL_SetUsers="api/User/SetUserList"}async GetUsersAsync(){return await ue(this.URL_GetUsers,"Post").then(function(e){return e})}async SetUsersAsync(e){return await ue(this.URL_SetUsers,"Post",e).then(function(e){return e}.bind(this))}}class jn extends i.a.Component{constructor(e){super(e),te()(this),Z("UserListControl","start"),this.state={Users:[],ShoGroups:!1,UserGroups:{ID:-1,Name:"",Password:"",Active:!1,Changes:-1,Groups:[{ID:-11,Name:"",EnterInGroup:!1}]}},this.userServices=new zn,this.ID=-1,this.columns=[{title:"ID",field:"ID"},{title:"Name",field:"Name",editor:"input"},{title:"Password",field:"Password",editor:"input"},{title:"Active",field:"Active",editor:"tick"},{title:"Groups",formatter:this.ButtonFormatter,align:"center",cellClick:this.OnGroupsClick},{title:"Delete",formatter:this.ButtonFormatter,align:"center",cellClick:this.DeleteUserClick}],this.columns_groups=[{title:"ID",field:"ID"},{title:"Name",field:"Name"},{title:"EnterInGroup",field:"EnterInGroup",editor:"tick"}],this.DownloadUsers()}DownloadUsers(){this.userServices.GetUsersAsync().then(function(e){let t=e.Users;this.Groups=e.Groups,this.setState({Users:t})}.bind(this))}UploadUsers(){this.userServices.SetUsersAsync(this.state.Users).then(function(e){e.Successe?Ke.MesOk(e.ResMessage,"Save"):Ke.MesEr(e.ResMessage,"Save"),this.DownloadUsers()}.bind(this))}ButtonFormatter(e,t,n){return"<i class='fa fa-print'><button>Action</button></i>"}OnCellChange(e){let t=this.state.Users,n=e.getRow()._row.data.ID;var o=t.filter(e=>e.ID===n)[0];0===o.Changes&&(o.Changes=1)}OnCellChange_Groups(e){0===this.state.UserGroups.Changes&&(this.state.UserGroups.Changes=1)}UpdateClick(){this.DownloadUsers()}CreateUserCick(){let e={ID:this.ID,Name:"NewUser"+this.ID,Password:"QWERTY",Active:!0,Changes:2,Groups:this.Groups.map(e=>({ID:e.ID,Name:e.Name,EnterInGroup:"Пользователи"==e.Name}))};this.ID--;let t=this.state.Users;t.push(e),this.setState({Users:t})}DeleteUserClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users,r=o.filter(e=>e.ID===n)[0];2===r.Changes?o.splice(o.findIndex(e=>e.ID===n),1):r.Changes=3,this.setState({Users:o})}OnGroupsClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users.filter(e=>e.ID===n)[0];this.setState({ShoGroups:!0,UserGroups:o})}OnGroupsClose(){this.setState({ShoGroups:!1})}render(){return i.a.createElement("div",null,i.a.createElement("button",{onClick:this.CreateUserCick},"CreateUser"),i.a.createElement("button",{onClick:this.DownloadUsers},"Update(Изменения будут утеряны)"),i.a.createElement("button",{onClick:this.UploadUsers},"SaveChanges"),i.a.createElement(sn.ReactTabulator,{ref:"table",data:this.state.Users.filter(e=>3!=e.Changes),columns:this.columns,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange}),i.a.createElement(an,{ref:"Modal",show:this.state.ShoGroups,onHide:this.OnGroupsClose,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},i.a.createElement(an.Header,{closeButton:!0},i.a.createElement(an.Title,null,"User Groups: ",this.state.UserGroups.ID+" "+this.state.UserGroups.Name)),i.a.createElement(an.Body,null,i.a.createElement(sn.ReactTabulator,{ref:"table_UserGroups",data:this.state.UserGroups.Groups,columns:this.columns_groups,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange_Groups})),i.a.createElement(an.Footer,null,i.a.createElement(rt,{variant:"secondary",onClick:this.OnGroupsClose},"Close"))))}}class Bn extends i.a.Component{constructor(e){super(e),te()(this),Z("AdministratorPage","start"),this.state={ActiveWindows:0},this.authServices=new ce}OnAuthChange(){this.refs.MenuControl.OnAuthChange()}OnUsersClick(){this.setState({ActiveWindows:0})}OnGroupsClick(){this.setState({ActiveWindows:1})}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(de,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement(Hn,{variant:"tabs"},i.a.createElement(Hn.Item,null,i.a.createElement(Hn.Link,{onClick:this.OnUsersClick},"Users")),i.a.createElement(Hn.Item,null,i.a.createElement(Hn.Link,{onClick:this.OnGroupsClick}," Groups"))),0==this.state.ActiveWindows?i.a.createElement("div",null,i.a.createElement(jn,{ref:"UserListControl"})):i.a.createElement("div",null,"GroupsWindow")):i.a.createElement("p",null,"Вы не авторизованы"))}}s.a.render(i.a.createElement(class extends i.a.Component{constructor(e){super(e),Z("RouteSystem","start")}render(){return i.a.createElement(z,null,i.a.createElement(Y,null,i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/",component:fn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/App",component:fn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/index.html",component:fn}),i.a.createElement(J,{ref:"CurrentPage",path:"/?ID=:ID",component:fn}),i.a.createElement(J,{ref:"CurrentPage",path:"/Admin",component:Bn})))}},null),document.getElementById("App")),console.log("index.js")}]);
+ */var o=n(20),r=n(0);function i(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var a="function"==typeof Symbol&&Symbol.for,s=a?Symbol.for("react.portal"):60106,l=a?Symbol.for("react.fragment"):60107,u=a?Symbol.for("react.strict_mode"):60108,c=a?Symbol.for("react.profiler"):60114,d=a?Symbol.for("react.provider"):60109,p=a?Symbol.for("react.context"):60110,h=a?Symbol.for("react.concurrent_mode"):60111,f=a?Symbol.for("react.forward_ref"):60112,m=a?Symbol.for("react.suspense"):60113,g=a?Symbol.for("react.memo"):60115,v=a?Symbol.for("react.lazy"):60116;function y(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case h:return"ConcurrentMode";case l:return"Fragment";case s:return"Portal";case c:return"Profiler";case u:return"StrictMode";case m:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case p:return"Context.Consumer";case d:return"Context.Provider";case f:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case g:return y(e.type);case v:if(e=1===e._status?e._result:null)return y(e)}return null}var b=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;b.hasOwnProperty("ReactCurrentDispatcher")||(b.ReactCurrentDispatcher={current:null});var w={};function E(e,t){for(var n=0|e._threadCount;n<=t;n++)e[n]=e._currentValue2,e._threadCount=n+1}for(var C=new Uint16Array(16),x=0;15>x;x++)C[x]=x+1;C[15]=0;var T=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k=Object.prototype.hasOwnProperty,S={},D={};function M(e){return!!k.call(D,e)||!k.call(S,e)&&(T.test(e)?D[e]=!0:(S[e]=!0,!1))}function R(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function _(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var L={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){L[e]=new _(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];L[t]=new _(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){L[e]=new _(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){L[e]=new _(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){L[e]=new _(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){L[e]=new _(e,3,!0,e,null)}),["capture","download"].forEach(function(e){L[e]=new _(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){L[e]=new _(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){L[e]=new _(e,5,!1,e.toLowerCase(),null)});var P=/[\-:]([a-z])/g;function O(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(P,O);L[t]=new _(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(P,O);L[t]=new _(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(P,O);L[t]=new _(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){L[e]=new _(e,1,!1,e.toLowerCase(),null)});var N=/["'&<>]/;function F(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=N.exec(e);if(t){var n,o="",r=0;for(n=t.index;n<e.length;n++){switch(e.charCodeAt(n)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}r!==n&&(o+=e.substring(r,n)),r=n+1,o+=t}e=r!==n?o+e.substring(r,n):o}return e}var A=null,I=null,H=null,z=!1,j=!1,B=null,U=0;function W(){return null===A&&i("321"),A}function q(){return 0<U&&i("312"),{memoizedState:null,queue:null,next:null}}function G(){return null===H?null===I?(z=!1,I=H=q()):(z=!0,H=I):null===H.next?(z=!1,H=H.next=q()):(z=!0,H=H.next),H}function V(e,t,n,o){for(;j;)j=!1,U+=1,H=null,n=e(t,o);return I=A=null,U=0,H=B=null,n}function Y(e,t){return"function"==typeof t?t(e):t}function $(e,t,n){if(A=W(),H=G(),z){var o=H.queue;if(t=o.dispatch,null!==B&&void 0!==(n=B.get(o))){B.delete(o),o=H.memoizedState;do{o=e(o,n.action),n=n.next}while(null!==n);return H.memoizedState=o,[o,t]}return[H.memoizedState,t]}return e=e===Y?"function"==typeof t?t():t:void 0!==n?n(t):t,H.memoizedState=e,e=(e=H.queue={last:null,dispatch:null}).dispatch=function(e,t,n){if(25>U||i("301"),e===A)if(j=!0,e={action:n,next:null},null===B&&(B=new Map),void 0===(n=B.get(t)))B.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}.bind(null,A,e),[H.memoizedState,e]}function X(){}var K=0,Q={readContext:function(e){var t=K;return E(e,t),e[t]},useContext:function(e){W();var t=K;return E(e,t),e[t]},useMemo:function(e,t){if(A=W(),t=void 0===t?null:t,null!==(H=G())){var n=H.memoizedState;if(null!==n&&null!==t){e:{var o=n[1];if(null===o)o=!1;else{for(var r=0;r<o.length&&r<t.length;r++){var i=t[r],a=o[r];if((i!==a||0===i&&1/i!=1/a)&&(i==i||a==a)){o=!1;break e}}o=!0}}if(o)return n[0]}}return e=e(),H.memoizedState=[e,t],e},useReducer:$,useRef:function(e){A=W();var t=(H=G()).memoizedState;return null===t?(e={current:e},H.memoizedState=e):t},useState:function(e){return $(Y,e)},useLayoutEffect:function(){},useCallback:function(e){return e},useImperativeHandle:X,useEffect:X,useDebugValue:X},J={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Z(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}var ee={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},te=o({menuitem:!0},ee),ne={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},oe=["Webkit","ms","Moz","O"];Object.keys(ne).forEach(function(e){oe.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ne[t]=ne[e]})});var re=/([A-Z])/g,ie=/^ms-/,ae=r.Children.toArray,se=b.ReactCurrentDispatcher,le={listing:!0,pre:!0,textarea:!0},ue=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ce={},de={};var pe=Object.prototype.hasOwnProperty,he={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function fe(e,t){void 0===e&&i("152",y(t)||"Component")}function me(e,t,n){function a(r,a){var s=function(e,t,n){var o=e.contextType;if("object"==typeof o&&null!==o)return E(o,n),o[n];if(e=e.contextTypes){for(var r in n={},e)n[r]=t[r];t=n}else t=w;return t}(a,t,n),l=[],u=!1,c={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===l)return null},enqueueReplaceState:function(e,t){u=!0,l=[t]},enqueueSetState:function(e,t){if(null===l)return null;l.push(t)}},d=void 0;if(a.prototype&&a.prototype.isReactComponent){if(d=new a(r.props,s,c),"function"==typeof a.getDerivedStateFromProps){var p=a.getDerivedStateFromProps.call(null,r.props,d.state);null!=p&&(d.state=o({},d.state,p))}}else if(A={},d=a(r.props,s,c),null==(d=V(a,r.props,d,s))||null==d.render)return void fe(e=d,a);if(d.props=r.props,d.context=s,d.updater=c,void 0===(c=d.state)&&(d.state=c=null),"function"==typeof d.UNSAFE_componentWillMount||"function"==typeof d.componentWillMount)if("function"==typeof d.componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.componentWillMount(),"function"==typeof d.UNSAFE_componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.UNSAFE_componentWillMount(),l.length){c=l;var h=u;if(l=null,u=!1,h&&1===c.length)d.state=c[0];else{p=h?c[0]:d.state;var f=!0;for(h=h?1:0;h<c.length;h++){var m=c[h];null!=(m="function"==typeof m?m.call(d,p,r.props,s):m)&&(f?(f=!1,p=o({},p,m)):o(p,m))}d.state=p}}else l=null;if(fe(e=d.render(),a),r=void 0,"function"==typeof d.getChildContext&&"object"==typeof(s=a.childContextTypes))for(var g in r=d.getChildContext())g in s||i("108",y(a)||"Unknown",g);r&&(t=o({},t,r))}for(;r.isValidElement(e);){var s=e,l=s.type;if("function"!=typeof l)break;a(s,l)}return{child:e,context:t}}var ge=function(){function e(t,n){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");r.isValidElement(t)?t.type!==l?t=[t]:(t=t.props.children,t=r.isValidElement(t)?[t]:ae(t)):t=ae(t),t={type:null,domNamespace:J.html,children:t,childIndex:0,context:w,footer:""};var o=C[0];if(0===o){var a=C,s=2*(o=a.length);65536>=s||i("304");var u=new Uint16Array(s);for(u.set(a),(C=u)[0]=o+1,a=o;a<s-1;a++)C[a]=a+1;C[s-1]=0}else C[0]=C[o];this.threadID=o,this.stack=[t],this.exhausted=!1,this.currentSelectValue=null,this.previousWasTextNode=!1,this.makeStaticMarkup=n,this.suspenseDepth=0,this.contextIndex=-1,this.contextStack=[],this.contextValueStack=[]}return e.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0,this.clearProviders();var e=this.threadID;C[e]=C[0],C[0]=e}},e.prototype.pushProvider=function(e){var t=++this.contextIndex,n=e.type._context,o=this.threadID;E(n,o);var r=n[o];this.contextStack[t]=n,this.contextValueStack[t]=r,n[o]=e.props.value},e.prototype.popProvider=function(){var e=this.contextIndex,t=this.contextStack[e],n=this.contextValueStack[e];this.contextStack[e]=null,this.contextValueStack[e]=null,this.contextIndex--,t[this.threadID]=n},e.prototype.clearProviders=function(){for(var e=this.contextIndex;0<=e;e--)this.contextStack[e][this.threadID]=this.contextValueStack[e]},e.prototype.read=function(e){if(this.exhausted)return null;var t=K;K=this.threadID;var n=se.current;se.current=Q;try{for(var o=[""],r=!1;o[0].length<e;){if(0===this.stack.length){this.exhausted=!0;var a=this.threadID;C[a]=C[0],C[0]=a;break}var s=this.stack[this.stack.length-1];if(r||s.childIndex>=s.children.length){var l=s.footer;if(""!==l&&(this.previousWasTextNode=!1),this.stack.pop(),"select"===s.type)this.currentSelectValue=null;else if(null!=s.type&&null!=s.type.type&&s.type.type.$$typeof===d)this.popProvider(s.type);else if(s.type===m){this.suspenseDepth--;var u=o.pop();if(r){r=!1;var c=s.fallbackFrame;c||i("303"),this.stack.push(c);continue}o[this.suspenseDepth]+=u}o[this.suspenseDepth]+=l}else{var p=s.children[s.childIndex++],h="";try{h+=this.render(p,s.context,s.domNamespace)}catch(e){throw e}o.length<=this.suspenseDepth&&o.push(""),o[this.suspenseDepth]+=h}}return o[0]}finally{se.current=n,K=t}},e.prototype.render=function(e,t,n){if("string"==typeof e||"number"==typeof e)return""===(n=""+e)?"":this.makeStaticMarkup?F(n):this.previousWasTextNode?"\x3c!-- --\x3e"+F(n):(this.previousWasTextNode=!0,F(n));if(e=(t=me(e,t,this.threadID)).child,t=t.context,null===e||!1===e)return"";if(!r.isValidElement(e)){if(null!=e&&null!=e.$$typeof){var a=e.$$typeof;a===s&&i("257"),i("258",a.toString())}return e=ae(e),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),""}if("string"==typeof(a=e.type))return this.renderDOM(e,t,n);switch(a){case u:case h:case c:case l:return e=ae(e.props.children),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case m:i("294")}if("object"==typeof a&&null!==a)switch(a.$$typeof){case f:A={};var y=a.render(e.props,e.ref);return y=V(a.render,e.props,y,e.ref),y=ae(y),this.stack.push({type:null,domNamespace:n,children:y,childIndex:0,context:t,footer:""}),"";case g:return e=[r.createElement(a.type,o({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case d:return n={type:e,domNamespace:n,children:a=ae(e.props.children),childIndex:0,context:t,footer:""},this.pushProvider(e),this.stack.push(n),"";case p:a=e.type,y=e.props;var b=this.threadID;return E(a,b),a=ae(y.children(a[b])),this.stack.push({type:e,domNamespace:n,children:a,childIndex:0,context:t,footer:""}),"";case v:i("295")}i("130",null==a?a:typeof a,"")},e.prototype.renderDOM=function(e,t,n){var a=e.type.toLowerCase();n===J.html&&Z(a),ce.hasOwnProperty(a)||(ue.test(a)||i("65",a),ce[a]=!0);var s=e.props;if("input"===a)s=o({type:void 0},s,{defaultChecked:void 0,defaultValue:void 0,value:null!=s.value?s.value:s.defaultValue,checked:null!=s.checked?s.checked:s.defaultChecked});else if("textarea"===a){var l=s.value;if(null==l){l=s.defaultValue;var u=s.children;null!=u&&(null!=l&&i("92"),Array.isArray(u)&&(1>=u.length||i("93"),u=u[0]),l=""+u),null==l&&(l="")}s=o({},s,{value:void 0,children:""+l})}else if("select"===a)this.currentSelectValue=null!=s.value?s.value:s.defaultValue,s=o({},s,{value:void 0});else if("option"===a){u=this.currentSelectValue;var c=function(e){if(null==e)return e;var t="";return r.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(s.children);if(null!=u){var d=null!=s.value?s.value+"":c;if(l=!1,Array.isArray(u)){for(var p=0;p<u.length;p++)if(""+u[p]===d){l=!0;break}}else l=""+u===d;s=o({selected:void 0,children:void 0},s,{selected:l,children:c})}}for(w in(l=s)&&(te[a]&&(null!=l.children||null!=l.dangerouslySetInnerHTML)&&i("137",a,""),null!=l.dangerouslySetInnerHTML&&(null!=l.children&&i("60"),"object"==typeof l.dangerouslySetInnerHTML&&"__html"in l.dangerouslySetInnerHTML||i("61")),null!=l.style&&"object"!=typeof l.style&&i("62","")),l=s,u=this.makeStaticMarkup,c=1===this.stack.length,d="<"+e.type,l)if(pe.call(l,w)){var h=l[w];if(null!=h){if("style"===w){p=void 0;var f="",m="";for(p in h)if(h.hasOwnProperty(p)){var g=0===p.indexOf("--"),v=h[p];if(null!=v){var y=p;if(de.hasOwnProperty(y))y=de[y];else{var b=y.replace(re,"-$1").toLowerCase().replace(ie,"-ms-");y=de[y]=b}f+=m+y+":",m=p,f+=g=null==v||"boolean"==typeof v||""===v?"":g||"number"!=typeof v||0===v||ne.hasOwnProperty(m)&&ne[m]?(""+v).trim():v+"px",m=";"}}h=f||null}p=null;e:if(g=a,v=l,-1===g.indexOf("-"))g="string"==typeof v.is;else switch(g){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":g=!1;break e;default:g=!0}g?he.hasOwnProperty(w)||(p=M(p=w)&&null!=h?p+'="'+F(h)+'"':""):(g=w,p=h,h=L.hasOwnProperty(g)?L[g]:null,(v="style"!==g)&&(v=null!==h?0===h.type:2<g.length&&("o"===g[0]||"O"===g[0])&&("n"===g[1]||"N"===g[1])),v||R(g,p,h,!1)?p="":null!==h?(g=h.attributeName,p=3===(h=h.type)||4===h&&!0===p?g+'=""':g+'="'+F(p)+'"'):p=M(g)?g+'="'+F(p)+'"':""),p&&(d+=" "+p)}}u||c&&(d+=' data-reactroot=""');var w=d;l="",ee.hasOwnProperty(a)?w+="/>":(w+=">",l="</"+e.type+">");e:{if(null!=(u=s.dangerouslySetInnerHTML)){if(null!=u.__html){u=u.__html;break e}}else if("string"==typeof(u=s.children)||"number"==typeof u){u=F(u);break e}u=null}return null!=u?(s=[],le[a]&&"\n"===u.charAt(0)&&(w+="\n"),w+=u):s=ae(s.children),e=e.type,n=null==n||"http://www.w3.org/1999/xhtml"===n?Z(e):"http://www.w3.org/2000/svg"===n&&"foreignObject"===e?"http://www.w3.org/1999/xhtml":n,this.stack.push({domNamespace:n,type:a,children:s,childIndex:0,context:t,footer:l}),this.previousWasTextNode=!1,w},e}(),ve={renderToString:function(e){e=new ge(e,!1);try{return e.read(1/0)}finally{e.destroy()}},renderToStaticMarkup:function(e){e=new ge(e,!0);try{return e.read(1/0)}finally{e.destroy()}},renderToNodeStream:function(){i("207")},renderToStaticNodeStream:function(){i("208")},version:"16.8.6"},ye={default:ve},be=ye&&ve||ye;e.exports=be.default||be},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(7),l=n(36),u=n(37),c=n(16),d=n(38),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.prototype.componentWillReceiveProps=function(e){var t=this;c.isSameArray(this.state.data,e.data)||this.setState({data:e.data},function(){t.table.setData(t.state.data)})},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t,n){"use strict";var o,r,i=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var a=n(0),s=n(35),l=n(77),u=n(78),c=n(83);var d=[{title:"Name",field:"name",width:150},{title:"Age",field:"age",align:"left",formatter:"progress"},{title:"Favourite Color",field:"color"},{title:"Date Of Birth",field:"dob"},{title:"Rating",field:"rating",align:"center",formatter:"star"},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross"},{title:"Custom",field:"custom",align:"center",formatter:n(16).reactFormatter(a.createElement(function(e){var t=e.cell._cell.row.data;return a.createElement("button",{onClick:function(){return alert(t.name)}},"Show")},null))}],p=[{id:1,name:"Oli Bob",age:"12",color:"red",dob:"01/01/1980",rating:5,passed:!0,pets:["cat","dog"]},{id:2,name:"Mary May",age:"1",color:"green",dob:"12/05/1989",rating:4,passed:!0,pets:["cat"]},{id:3,name:"Christine Lobowski",age:"42",color:"green",dob:"10/05/1985",rating:4,passed:!1},{id:4,name:"Brendon Philips",age:"125",color:"red",dob:"01/08/1980",rating:4.5,passed:!0},{id:5,name:"Margret Marmajuke",age:"16",color:"yellow",dob:"07/01/1999",rating:4,passed:!1},{id:6,name:"Van Ng",age:"37",color:"green",dob:"06/10/1982",rating:4,passed:!0,pets:["dog","fish"]},{id:7,name:"Duc Ng",age:"37",color:"yellow",dob:"10/10/1982",rating:4,passed:!0,pets:["dog"]}],h=((r={})[""]=" ",r.red="red",r.green="green",r.yellow="yellow",r),f=[{title:"Name",field:"name",width:150,editor:"input",headerFilter:"input"},{title:"Age",field:"age",align:"left",formatter:"progress",editor:"progress"},{title:"Favourite Color",field:"color",editor:"select",editorParams:{allowEmpty:!0,showListOnEmpty:!0,values:h},headerFilter:"select",headerFilterParams:{values:h}},{title:"Date Of Birth",field:"dob",editor:l.default,editorParams:{format:"MM/dd/yyyy"}},{title:"Pets",field:"pets",editor:u.default,editorParams:{values:[{id:"cat",name:"cat"},{id:"dog",name:"dog"},{id:"fish",name:"fish"}]},formatter:c.default,formatterParams:{style:"PILL"}},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross",editor:!0}],m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.rowClick=function(e,n){console.log("ref table: ",t.ref.table),console.log("rowClick id: ${row.getData().id}",n,e)},t.setData=function(){t.setState({data:p})},t.clearData=function(){t.setState({data:[]})},t}return i(t,e),t.prototype.render=function(){var e=this;return a.createElement("div",null,a.createElement(s.default,{ref:function(t){return e.ref=t},columns:d,data:p,rowClick:this.rowClick,options:{height:150,movableRows:!0},"data-custom-attr":"test-custom-attribute",className:"custom-css-class"}),a.createElement("h3",null,"Asynchronous data: (e.g. fetch) - ",a.createElement("button",{onClick:this.setData},"Set Data")," ",a.createElement("button",{onClick:this.clearData},"Clear")),a.createElement(s.default,{columns:d,data:this.state.data}),a.createElement("h3",null,"Editable Table"),a.createElement(s.default,{columns:f,data:p,cellEdited:function(e){return console.log("cellEdited",e)},dataEdited:function(e){return console.log("dataEdited",e)},footerElement:a.createElement("span",null,"Footer")}),a.createElement("p",null,a.createElement("a",{href:"https://github.com/ngduc/react-tabulator",target:"_blank"},"Back to: Github Repo: react-tabulator")),a.createElement("p",null,a.createElement("a",{href:"http://tabulator.info/examples/4.0",target:"_blank"},"More Tabulator's Examples")))},t}(a.Component);t.default=m},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(7),s=n(86),l={width:"100%",height:"100%",fontSize:"1em",fontFamily:"inherit"},u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:""},t.ref=null,t.format=t.props.editorParams.format||"MM/dd/yyyy",t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.value);var n=t.props.success,o=e;o.indexOf("-")>0&&(o=s.format(e,t.format)),n(o)},t.onChange=function(e){var n=e.target.value;t.setState({value:n})},t.onKeyPress=function(e){var n=t.props.cancel;13===e.keyCode?t.setValueOnSuccess():27===e.keyCode&&n()},t.onBlur=function(){t.setValueOnSuccess()},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=e.props.cell.getValue();e.setState({value:t}),e.ref.focus()})},t.prototype.render=function(){var e=this,t=this.props.cell,n=s.parse(t.getValue(),this.format,new Date,{awareOfUnicodeTokens:!0}),o=s.format(n,"yyyy-MM-dd");return i.createElement("input",{type:"date",ref:function(t){return e.ref=t},defaultValue:o,onBlur:this.onBlur,onChange:this.onChange,onKeyUp:this.onKeyPress,style:l})},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(7),s=n(16),l=n(79),u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:"",values:[],autofocus:!1},t.ref=null,t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.values);var n=t.props,o=n.success;n.cancel;o(e)},t.handleDelete=function(e){var n=t.state.values.filter(function(t,n){return n!==e});t.setState({values:n},function(){t.setValueOnSuccess(n)})},t.handleAddition=function(e){var n=t.state.values;e.name&&(n.push({id:e.name,name:e.name}),t.setState({values:n},function(){t.setValueOnSuccess(n)}))},t.handleBlur=function(){var e=t.props.cancel,n=t.ref.input.input.value;if(n){var o=s.clone(t.state.values);o.push({id:n,name:n}),t.setValueOnSuccess(o)}else e();var r=a.findDOMNode(t.ref);r&&r.parentElement.parentElement.parentElement&&(r.parentElement.parentElement.parentElement.style.overflow="hidden")},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=a.findDOMNode(e.ref);t.style.zIndex=1,t.parentElement.parentElement.parentElement.style.overflow="inherit",t.querySelector("input").focus();var n=(e.props.cell.getValue()||[]).map(function(e){return"string"==typeof e?{id:e,name:e}:e});e.setState({values:n})})},t.prototype.render=function(){var e=this,t=this.props.editorParams,n=this.state.values,o=t.values;return i.createElement("div",null,i.createElement(l,{ref:function(t){return e.ref=t},placeholder:"Select or Type",tags:n,suggestions:o,allowNew:!0,autoresize:!0,autofocus:this.state.autofocus,handleAddition:this.handleAddition,handleDelete:this.handleDelete,handleBlur:this.handleBlur,minQueryLength:0}))},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o=n(0),r=n(2),i=n(80),a=n(81),s=n(82),l=13,u=9,c=8,d=38,p=40,h={root:"react-tags",rootFocused:"is-focused",selected:"react-tags__selected",selectedTag:"react-tags__selected-tag",selectedTagName:"react-tags__selected-tag-name",search:"react-tags__search",searchInput:"react-tags__search-input",suggestions:"react-tags__suggestions",suggestionActive:"is-active",suggestionDisabled:"is-disabled"},f=function(e){function t(t){e.call(this,t),this.state={query:"",focused:!1,expandable:!1,selectedIndex:-1,classNames:Object.assign({},h,this.props.classNames)},this.inputEventHandlers={onChange:function(){},onBlur:this.handleBlur.bind(this),onFocus:this.handleFocus.bind(this),onInput:this.handleInput.bind(this),onKeyDown:this.handleKeyDown.bind(this)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({classNames:Object.assign({},h,e.classNames)})},t.prototype.handleInput=function(e){var t=e.target.value;this.props.handleInputChange&&this.props.handleInputChange(t),this.setState({query:t})},t.prototype.handleKeyDown=function(e){var t=this.state,n=t.query,o=t.selectedIndex,r=this.props,i=r.delimiters,a=r.delimiterChars;(i.indexOf(e.keyCode)>-1||a.indexOf(e.key)>-1)&&((n||o>-1)&&e.preventDefault(),this.handleDelimiter()),e.keyCode===c&&0===n.length&&this.props.allowBackspace&&this.deleteTag(this.props.tags.length-1),e.keyCode===d&&(e.preventDefault(),o<=0?this.setState({selectedIndex:this.suggestions.state.options.length-1}):this.setState({selectedIndex:o-1})),e.keyCode===p&&(e.preventDefault(),this.setState({selectedIndex:(o+1)%this.suggestions.state.options.length}))},t.prototype.handleDelimiter=function(){var e=this.state,t=e.query,n=e.selectedIndex;if(t.length>=this.props.minQueryLength){var o=this.suggestions.state.options.findIndex(function(e){return 0===e.name.search(new RegExp("^"+t+"$","i"))}),r=-1===n?o:n;r>-1?this.addTag(this.suggestions.state.options[r]):this.props.allowNew&&this.addTag({name:t})}},t.prototype.handleClick=function(e){document.activeElement!==e.target&&this.input.input.focus()},t.prototype.handleBlur=function(){this.setState({focused:!1,selectedIndex:-1}),this.props.handleBlur&&this.props.handleBlur(),this.props.addOnBlur&&this.handleDelimiter()},t.prototype.handleFocus=function(){this.setState({focused:!0}),this.props.handleFocus&&this.props.handleFocus()},t.prototype.addTag=function(e){e.disabled||("function"!=typeof this.props.handleValidate||this.props.handleValidate(e))&&(this.props.handleAddition(e),this.setState({query:"",selectedIndex:-1}))},t.prototype.deleteTag=function(e){this.props.handleDelete(e),this.props.clearInputOnDelete&&""!==this.state.query&&this.setState({query:""})},t.prototype.render=function(){var e=this,t=this.props.tagComponent||i,n=this.props.tags.map(function(n,r){return o.createElement(t,{key:r,tag:n,classNames:e.state.classNames,onDelete:e.deleteTag.bind(e,r)})}),r=this.state.focused&&this.state.query.length>=this.props.minQueryLength,l=[this.state.classNames.root];return this.state.focused&&l.push(this.state.classNames.rootFocused),o.createElement("div",{className:l.join(" "),onClick:this.handleClick.bind(this)},o.createElement("div",{className:this.state.classNames.selected,"aria-live":"polite","aria-relevant":"additions removals"},n),o.createElement("div",{className:this.state.classNames.search},o.createElement(a,Object.assign({},this.state,{inputAttributes:this.props.inputAttributes,inputEventHandlers:this.inputEventHandlers,ref:function(t){e.input=t},listboxId:"ReactTags-listbox",autofocus:this.props.autofocus,autoresize:this.props.autoresize,expandable:r,placeholder:this.props.placeholder})),o.createElement(s,Object.assign({},this.state,{ref:function(t){e.suggestions=t},listboxId:"ReactTags-listbox",expandable:r,suggestions:this.props.suggestions,suggestionsFilter:this.props.suggestionsFilter,addTag:this.addTag.bind(this),maxSuggestionsLength:this.props.maxSuggestionsLength}))))},t}(o.Component);f.defaultProps={tags:[],placeholder:"Add new tag",suggestions:[],suggestionsFilter:null,autofocus:!0,autoresize:!0,delimiters:[u,l],delimiterChars:[],minQueryLength:2,maxSuggestionsLength:6,allowNew:!1,allowBackspace:!0,tagComponent:null,inputAttributes:{},addOnBlur:!1,clearInputOnDelete:!0},f.propTypes={tags:r.arrayOf(r.object),placeholder:r.string,suggestions:r.arrayOf(r.object),suggestionsFilter:r.func,autofocus:r.bool,autoresize:r.bool,delimiters:r.arrayOf(r.number),delimiterChars:r.arrayOf(r.string),handleDelete:r.func.isRequired,handleAddition:r.func.isRequired,handleInputChange:r.func,handleFocus:r.func,handleBlur:r.func,handleValidate:r.func,minQueryLength:r.number,maxSuggestionsLength:r.number,classNames:r.object,allowNew:r.bool,allowBackspace:r.bool,tagComponent:r.oneOfType([r.func,r.element]),inputAttributes:r.object,addOnBlur:r.bool,clearInputOnDelete:r.bool},e.exports=f},function(e,t,n){"use strict";var o=n(0);e.exports=function(e){return o.createElement("button",{type:"button",className:e.classNames.selectedTag,title:"Click to remove tag",onClick:e.onDelete},o.createElement("span",{className:e.classNames.selectedTagName},e.tag.name))}},function(e,t,n){"use strict";var o=n(0),r={position:"absolute",width:0,height:0,visibility:"hidden",overflow:"scroll",whiteSpace:"pre"},i=["fontSize","fontFamily","fontWeight","fontStyle","letterSpacing"],a=function(e){function t(t){e.call(this,t),this.state={inputWidth:null}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.props.autoresize&&(this.copyInputStyles(),this.updateInputWidth()),this.props.autofocus&&this.input.focus()},t.prototype.componentDidUpdate=function(){this.updateInputWidth()},t.prototype.copyInputStyles=function(){var e=this,t=window.getComputedStyle(this.input);i.forEach(function(n){e.sizer.style[n]=t[n]})},t.prototype.updateInputWidth=function(){var e;this.props.autoresize&&(e=Math.ceil(this.sizer.scrollWidth)+2),e!==this.state.inputWidth&&this.setState({inputWidth:e})},t.prototype.render=function(){var e=this,t=this.props,n=t.inputAttributes,i=t.inputEventHandlers,a=t.query,s=t.placeholder,l=t.expandable,u=t.listboxId,c=t.selectedIndex;return o.createElement("div",{className:this.props.classNames.searchInput},o.createElement("input",Object.assign({},n,i,{ref:function(t){e.input=t},value:a,placeholder:s,role:"combobox","aria-autocomplete":"list","aria-label":s,"aria-owns":u,"aria-activedescendant":c>-1?u+"-"+c:null,"aria-expanded":l,style:{width:this.state.inputWidth}})),o.createElement("div",{ref:function(t){e.sizer=t},style:r},a||s))},t}(o.Component);e.exports=a},function(e,t,n){"use strict";var o=n(0);function r(e){return e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}function i(e,t){if(t){var n=RegExp(r(t),"gi");e=e.replace(n,"<mark>$&</mark>")}return{__html:e}}function a(e,t,n,o){if(!o){var i=new RegExp("(?:^|\\s)"+r(e),"i");o=function(e){return i.test(e.name)}}return t.filter(function(t){return o(t,e)}).slice(0,n)}var s=function(e){function t(t){e.call(this,t),this.state={options:a(this.props.query,this.props.suggestions,this.props.maxSuggestionsLength,this.props.suggestionsFilter)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({options:a(e.query,e.suggestions,e.maxSuggestionsLength,e.suggestionsFilter)})},t.prototype.handleMouseDown=function(e,t){t.preventDefault(),this.props.addTag(e)},t.prototype.render=function(){var e=this;if(!this.props.expandable||!this.state.options.length)return null;var t=this.state.options.map(function(t,n){var r=e.props.listboxId+"-"+n,a=[];return e.props.selectedIndex===n&&a.push(e.props.classNames.suggestionActive),t.disabled&&a.push(e.props.classNames.suggestionDisabled),o.createElement("li",{id:r,key:r,role:"option",className:a.join(" "),"aria-disabled":!0===t.disabled,onMouseDown:e.handleMouseDown.bind(e,t)},o.createElement("span",{dangerouslySetInnerHTML:i(t.name,e.props.query)}))});return o.createElement("div",{className:this.props.classNames.suggestions},o.createElement("ul",{role:"listbox",id:this.props.listboxId},t))},t}(o.Component);e.exports=s},function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(7),i=function(){var e=document.createElement("div");return e.style.height="100%",e};t.default=function(e,t,n){var a=t.style||"",s=e.getValue()||[],l=s&&s.length>0&&"string"==typeof s[0]?o.createElement("span",null,s.join(", ")):o.createElement("span",null);"PILL"===a&&(l=o.createElement("div",null,s.map(function(e){return"string"==typeof e?o.createElement("span",{key:e},e):o.createElement("span",{key:e.name},e.name)})));var u=i();return u.className="multi-value-formatter-content",u.title=s&&s.length>0&&"string"==typeof s[0]?s.join(", "):"",r.render(l,u),u}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.default)(function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];var r=null;return t.forEach(function(e){if(null==r){var t=e.apply(void 0,n);null!=t&&(r=t)}}),r})};var o,r=n(22),i=(o=r)&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.r(t);var r=6e4;function i(e){var t=new Date(e.getTime()),n=t.getTimezoneOffset();t.setSeconds(0,0);var o=t.getTime()%r;return n*r+o}var a=36e5,s=6e4,l=2,u={dateTimeDelimeter:/[T ]/,plainTime:/:/,timeZoneDelimeter:/[Z ]/i,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-])(\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/};function c(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(null===e)return new Date(NaN);var n=t||{},r=null==n.additionalDigits?l:o(n.additionalDigits);if(2!==r&&1!==r&&0!==r)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e))return new Date(e.getTime());if("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))return new Date(e);if("string"!=typeof e&&"[object String]"!==Object.prototype.toString.call(e))return new Date(NaN);var c=function(e){var t,n={},o=e.split(u.dateTimeDelimeter);u.plainTime.test(o[0])?(n.date=null,t=o[0]):(n.date=o[0],t=o[1],u.timeZoneDelimeter.test(n.date)&&(n.date=e.split(u.timeZoneDelimeter)[0],t=e.substr(n.date.length,e.length)));if(t){var r=u.timezone.exec(t);r?(n.time=t.replace(r[1],""),n.timezone=r[1]):n.time=t}return n}(e),p=function(e,t){var n,o=u.YYY[t],r=u.YYYYY[t];if(n=u.YYYY.exec(e)||r.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=u.YY.exec(e)||o.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(c.date,r),h=p.year,b=function(e,t){if(null===t)return null;var n,o,r,i;if(0===e.length)return(o=new Date(0)).setUTCFullYear(t),o;if(n=u.MM.exec(e))return o=new Date(0),r=parseInt(n[1],10)-1,m(t,r)?(o.setUTCFullYear(t,r),o):new Date(NaN);if(n=u.DDD.exec(e)){o=new Date(0);var a=parseInt(n[1],10);return function(e,t){if(t<1)return!1;var n=f(e);if(n&&t>366)return!1;if(!n&&t>365)return!1;return!0}(t,a)?(o.setUTCFullYear(t,0,a),o):new Date(NaN)}if(n=u.MMDD.exec(e)){o=new Date(0),r=parseInt(n[1],10)-1;var s=parseInt(n[2],10);return m(t,r,s)?(o.setUTCFullYear(t,r,s),o):new Date(NaN)}if(n=u.Www.exec(e))return i=parseInt(n[1],10)-1,g(t,i)?d(t,i):new Date(NaN);if(n=u.WwwD.exec(e)){i=parseInt(n[1],10)-1;var l=parseInt(n[2],10)-1;return g(t,i,l)?d(t,i,l):new Date(NaN)}return null}(p.restDateString,h);if(isNaN(b))return new Date(NaN);if(b){var w,E=b.getTime(),C=0;if(c.time&&(C=function(e){var t,n,o;if(t=u.HH.exec(e))return v(n=parseFloat(t[1].replace(",",".")))?n%24*a:NaN;if(t=u.HHMM.exec(e))return n=parseInt(t[1],10),o=parseFloat(t[2].replace(",",".")),v(n,o)?n%24*a+o*s:NaN;if(t=u.HHMMSS.exec(e)){n=parseInt(t[1],10),o=parseInt(t[2],10);var r=parseFloat(t[3].replace(",","."));return v(n,o,r)?n%24*a+o*s+1e3*r:NaN}return null}(c.time),isNaN(C)))return new Date(NaN);if(c.timezone){if(w=function(e){var t,n,o;if(t=u.timezoneZ.exec(e))return 0;if(t=u.timezoneHH.exec(e))return y(o=parseInt(t[2],10))?(n=o*a,"+"===t[1]?-n:n):NaN;if(t=u.timezoneHHMM.exec(e)){o=parseInt(t[2],10);var r=parseInt(t[3],10);return y(o,r)?(n=o*a+r*s,"+"===t[1]?-n:n):NaN}return 0}(c.timezone),isNaN(w))return new Date(NaN)}else w=i(new Date(E+C)),w=i(new Date(E+C+w));return new Date(E+C+w)}return new Date(NaN)}function d(e,t,n){t=t||0,n=n||0;var o=new Date(0);o.setUTCFullYear(e,0,4);var r=7*t+n+1-(o.getUTCDay()||7);return o.setUTCDate(o.getUTCDate()+r),o}var p=[31,28,31,30,31,30,31,31,30,31,30,31],h=[31,29,31,30,31,30,31,31,30,31,30,31];function f(e){return e%400==0||e%4==0&&e%100!=0}function m(e,t,n){if(t<0||t>11)return!1;if(null!=n){if(n<1)return!1;var o=f(e);if(o&&n>h[t])return!1;if(!o&&n>p[t])return!1}return!0}function g(e,t,n){return!(t<0||t>52)&&(null==n||!(n<0||n>6))}function v(e,t,n){return(null==e||!(e<0||e>=25))&&((null==t||!(t<0||t>=60))&&(null==n||!(n<0||n>=60)))}function y(e,t){return null==t||!(t<0||t>59)}function b(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(r.getDate()+i),r}function w(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n).getTime(),i=o(t);return new Date(r+i)}var E=36e5;function C(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*E,n)}function x(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=(u<s?7:0)+u-s;return l.setDate(l.getDate()-d),l.setHours(0,0,0,0),l}function T(e){e=e||{};var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function k(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,x(e,n)}function S(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=new Date(0);r.setFullYear(o+1,0,4),r.setHours(0,0,0,0);var i=k(r,t),a=new Date(0);a.setFullYear(o,0,4),a.setHours(0,0,0,0);var s=k(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}function D(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);return o.setFullYear(n,0,4),o.setHours(0,0,0,0),k(o,t)}function M(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(0,0,0,0),n}var R=864e5;function _(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/R)}function L(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=_(r,D(r,n),n),s=new Date(0);return s.setFullYear(i,0,4),s.setHours(0,0,0,0),(r=D(s,n)).setDate(r.getDate()+a),r}function P(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);return L(e,S(e,n)+r,n)}var O=6e4;function N(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*O,n)}function F(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=n.getMonth(),i=new Date(0);return i.setFullYear(o,r+1,0),i.setHours(0,0,0,0),i.getDate()}function A(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getMonth()+i,s=new Date(0);s.setFullYear(r.getFullYear(),a,1),s.setHours(0,0,0,0);var l=F(s,n);return r.setMonth(a,Math.min(l,r.getDate())),r}function I(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,3*o(t),n)}function H(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,1e3*o(t),n)}function z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,7*o(t),n)}function j(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,12*o(t),n)}function B(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");return i<l&&s<a}function U(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return NaN;var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e,t){var o=c(e,n);if(isNaN(o))return r=NaN,void(i=NaN);var s=Math.abs(a-o.getTime());(null==r||s<i)&&(r=t,i=s)}),r}function W(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return new Date(NaN);var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e){var t=c(e,n);if(isNaN(t))return r=new Date(NaN),void(i=NaN);var o=Math.abs(a-t.getTime());(null==r||o<i)&&(r=t,i=o)}),r}function q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i<0?-1:i>0?1:i}function G(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i>0?-1:i<0?1:i}function V(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return S(e,n)-S(t,n)}var Y=6048e5;function $(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=k(e,n),r=k(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/Y)}function X(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 12*(o.getFullYear()-r.getFullYear())+(o.getMonth()-r.getMonth())}function K(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return Math.floor(n.getMonth()/3)+1}function Q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 4*(o.getFullYear()-r.getFullYear())+(K(o,n)-K(r,n))}var J=6048e5;function Z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/J)}function ee(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()-r.getFullYear()}function te(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(_(o,r,n));o.setDate(o.getDate()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ne(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()-r.getTime()}var oe=36e5;function re(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/oe;return o>0?Math.floor(o):Math.ceil(o)}function ie(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return P(e,-o(t),n)}function ae(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(V(o,r,n)),s=i*(a-(q(o=ie(o,i*a,n),r,n)===-i));return 0===s?0:s}var se=6e4;function le(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/se;return o>0?Math.floor(o):Math.ceil(o)}function ue(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(X(o,r,n));o.setMonth(o.getMonth()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ce(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ue(e,t,n)/3;return o>0?Math.floor(o):Math.ceil(o)}function de(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/1e3;return o>0?Math.floor(o):Math.ceil(o)}function pe(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=te(e,t,n)/7;return o>0?Math.floor(o):Math.ceil(o)}function he(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(ee(o,r,n));o.setFullYear(o.getFullYear()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function fe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t).getTime();if(!(o.getTime()<=r))throw new RangeError("Invalid interval");var i=[],a=o;for(a.setHours(0,0,0,0);a.getTime()<=r;)i.push(c(a,t)),a.setDate(a.getDate()+1);return i}function me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t),i=r.getTime();if(!(o.getTime()<=i))throw new RangeError("Invalid interval");var a=x(o,t),s=x(r,t);a.setHours(15),s.setHours(15),i=s.getTime();for(var l=[],u=a;u.getTime()<=i;)u.setHours(0),l.push(c(u,t)),(u=z(u,1)).setHours(15);return l}function ge(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 0===c(e,t).getDay()}function ve(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n||6===n}function ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=e||{},u=c(l.start,t),d=c(l.end,t).getTime();if(!(u.getTime()<=d))throw new RangeError("Invalid interval");for(var p=fe(l),h=[],f=0;f++<p.length;){var m=p[f];ve(m)&&(h.push(new Date(m)),ge(m)&&(f+=5))}return h}function be(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setDate(1),n.setHours(0,0,0,0),n}function we(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(23,59,59,999),n}function Ee(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:be(e,t),end:we(e,t)})}function Ce(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=new Date(0);return o.setFullYear(n.getFullYear(),0,1),o.setHours(0,0,0,0),o}function xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(23,59,59,999),n}function Te(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:Ce(e,t),end:xe(e,t)})}function ke(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(23,59,59,999),n}function Se(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r,11,31),n.setHours(23,59,59,999),n}function De(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(59,59,999),n}function Me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setDate(l.getDate()+d),l.setHours(23,59,59,999),l}function Re(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Me(e,n)}function _e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setMilliseconds(r.getMilliseconds()-1),r}function Le(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(59,999),n}function Pe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(23,59,59,999),n}function Oe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(999),n}function Ne(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return!isNaN(n)}var Fe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Ae(e){return function(t){var n=t||{},o=n.width?String(n.width):e.defaultWidth;return e.formats[o]||e.formats[e.defaultWidth]}}var Ie={date:Ae({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ae({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ae({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},He={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ze(e){return function(t,n){var o=n||{},r=o.width?String(o.width):e.defaultWidth;return("formatting"===(o.context?String(o.context):"standalone")&&e.formattingValues?e.formattingValues[r]||e.formattingValues[e.defaultFormattingWidth]:e.values[r]||e.values[e.defaultWidth])[e.argumentCallback?e.argumentCallback(t):t]}}function je(e){return function(t,n){var o=String(t),r=n||{},i=r.width,a=i&&e.matchPatterns[i]||e.matchPatterns[e.defaultMatchWidth],s=o.match(a);if(!s)return null;var l,u=s[0],c=i&&e.parsePatterns[i]||e.parsePatterns[e.defaultParseWidth];return l="[object Array]"===Object.prototype.toString.call(c)?c.findIndex(function(e){return e.test(o)}):function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}(c,function(e){return e.test(o)}),l=e.valueCallback?e.valueCallback(l):l,{value:l=r.valueCallback?r.valueCallback(l):l,rest:o.slice(u.length)}}}var Be,Ue={formatDistance:function(e,t,n){var o;return n=n||{},o="string"==typeof Fe[e]?Fe[e]:1===t?Fe[e].one:Fe[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+o:o+" ago":o},formatLong:Ie,formatRelative:function(e,t,n,o){return He[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),o=n%100;if(o>20||o<10)switch(o%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ze({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ze({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:ze({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ze({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ze({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaulFormattingWidth:"wide"})},match:{ordinalNumber:(Be={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),o=t||{},r=n.match(Be.matchPattern);if(!r)return null;var i=r[0],a=n.match(Be.parsePattern);if(!a)return null;var s=Be.valueCallback?Be.valueCallback(a[0]):a[0];return{value:s=o.valueCallback?o.valueCallback(s):s,rest:n.slice(i.length)}}),era:je({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:je({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:je({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:je({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:je({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},We=864e5;function qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCDay(),r=(o<1?7:0)+o-1;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Ge(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(o+1,0,4),r.setUTCHours(0,0,0,0);var i=qe(r,t),a=new Date(0);a.setUTCFullYear(o,0,4),a.setUTCHours(0,0,0,0);var s=qe(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}var Ve=6048e5;function Ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=qe(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Ge(e,t),o=new Date(0);return o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0),qe(o,t)}(n,t).getTime();return Math.round(o/Ve)+1}function $e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getUTCDay(),d=(u<s?7:0)+u-s;return l.setUTCDate(l.getUTCDate()-d),l.setUTCHours(0,0,0,0),l}function Xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getUTCFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setUTCFullYear(r+1,0,u),d.setUTCHours(0,0,0,0);var p=$e(d,t),h=new Date(0);h.setUTCFullYear(r,0,u),h.setUTCHours(0,0,0,0);var f=$e(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}var Ke=6048e5;function Qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=$e(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Xe(e,t),u=new Date(0);return u.setUTCFullYear(l,0,s),u.setUTCHours(0,0,0,0),$e(u,t)}(n,t).getTime();return Math.round(r/Ke)+1}var Je="midnight",Ze="noon",et="morning",tt="afternoon",nt="evening",ot="night";function rt(e,t){for(var n=e<0?"-":"",o=Math.abs(e).toString();o.length<t;)o="0"+o;return n+o}function it(e,t){var n=t||"",o=e>0?"-":"+",r=Math.abs(e);return o+rt(Math.floor(r/60),2)+n+rt(r%60,2)}function at(e,t){return e%60==0?(e>0?"-":"+")+rt(Math.abs(e)/60,2):it(e,t)}function st(e,t){var n=e>0?"-":"+",o=Math.abs(e),r=Math.floor(o/60),i=o%60;if(0===i)return n+String(r);var a=t||"";return n+String(r)+a+rt(i,2)}var lt={G:function(e,t,n){var o=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(o,{width:"abbreviated"});case"GGGGG":return n.era(o,{width:"narrow"});case"GGGG":default:return n.era(o,{width:"wide"})}},y:function(e,t,n,o){var r=e.getUTCFullYear(),i=r>0?r:1-r;return"yy"===t?rt(i%100,2):"yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},Y:function(e,t,n,o){var r=Xe(e,o),i=r>0?r:1-r;return"YY"===t?rt(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},R:function(e,t,n,o){return rt(Ge(e,o),t.length)},u:function(e,t,n,o){return rt(e.getUTCFullYear(),t.length)},Q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return rt(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return rt(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"M":return String(r+1);case"MM":return rt(r+1,2);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return rt(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,o){var r=Qe(e,o);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},I:function(e,t,n,o){var r=Ye(e,o);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},d:function(e,t,n,o){var r=e.getUTCDate();return"do"===t?n.ordinalNumber(r,{unit:"date"}):rt(r,t.length)},D:function(e,t,n,o){var r=function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getTime();n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0);var r=o-n.getTime();return Math.floor(r/We)+1}(e,o);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):rt(r,t.length)},E:function(e,t,n,o){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return rt(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});case"eeee":default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return rt(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});case"cccc":default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n,o){var r=e.getUTCDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return rt(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(e,t,n){var o,r=e.getUTCHours();switch(o=12===r?Ze:0===r?Je:r/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(e,t,n){var o,r=e.getUTCHours();switch(o=r>=17?nt:r>=12?tt:r>=4?et:ot,t){case"B":case"BB":case"BBB":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(e,t,n,o){var r=e.getUTCHours()%12;return 0===r&&(r=12),"ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},H:function(e,t,n,o){var r=e.getUTCHours();return"Ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},K:function(e,t,n,o){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},k:function(e,t,n,o){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},m:function(e,t,n,o){var r=e.getUTCMinutes();return"mo"===t?n.ordinalNumber(r,{unit:"minute"}):rt(r,t.length)},s:function(e,t,n,o){var r=e.getUTCSeconds();return"so"===t?n.ordinalNumber(r,{unit:"second"}):rt(r,t.length)},S:function(e,t,n,o){var r=t.length,i=e.getUTCMilliseconds();return rt(Math.floor(i*Math.pow(10,r-3)),r)},X:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();if(0===r)return"Z";switch(t){case"X":return at(r);case"XXXX":case"XX":return it(r);case"XXXXX":case"XXX":default:return it(r,":")}},x:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"x":return at(r);case"xxxx":case"xx":return it(r);case"xxxxx":case"xxx":default:return it(r,":")}},O:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+st(r,":");case"OOOO":default:return"GMT"+it(r,":")}},z:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+st(r,":");case"zzzz":default:return"GMT"+it(r,":")}},t:function(e,t,n,o){var r=o._originalDate||e;return rt(Math.floor(r.getTime()/1e3),t.length)},T:function(e,t,n,o){return rt((o._originalDate||e).getTime(),t.length)}};function ut(e,t,n){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function ct(e,t,n){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}var dt={p:ct,P:function(e,t,n){var o,r=e.match(/(P+)(p+)?/),i=r[1],a=r[2];if(!a)return ut(e,t);switch(i){case"P":o=t.dateTime({width:"short"});break;case"PP":o=t.dateTime({width:"medium"});break;case"PPP":o=t.dateTime({width:"long"});break;case"PPPP":default:o=t.dateTime({width:"full"})}return o.replace("{{date}}",ut(i,t)).replace("{{time}}",ct(a,t))}};function pt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,-o(t),n)}var ht=["D","DD","YY","YYYY"];function ft(e){return-1!==ht.indexOf(e)}function mt(e){throw new RangeError("`options.awareOfUnicodeTokens` must be set to `true` to use `"+e+"` token; see: https://git.io/fxCyr")}var gt=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,vt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,yt=/^'(.*?)'?$/,bt=/''/g;function wt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=String(t),a=n||{},s=a.locale||Ue,l=s.options&&s.options.firstWeekContainsDate,u=null==l?1:o(l),d=null==a.firstWeekContainsDate?u:o(a.firstWeekContainsDate);if(!(d>=1&&d<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var p=s.options&&s.options.weekStartsOn,h=null==p?0:o(p),f=null==a.weekStartsOn?h:o(a.weekStartsOn);if(!(f>=0&&f<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var m=c(e,a);if(!Ne(m,a))return"Invalid Date";var g=pt(m,i(m),a),v={firstWeekContainsDate:d,weekStartsOn:f,locale:s,_originalDate:m};return r.match(vt).map(function(e){var t=e[0];return"p"===t||"P"===t?(0,dt[t])(e,s.formatLong,v):e}).join("").match(gt).map(function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return e.match(yt)[1].replace(bt,"'");var n=lt[t];return n?(!a.awareOfUnicodeTokens&&ft(e)&&mt(e),n(g,e,s.localize,v)):e}).join("")}var Et=1440,Ct=2520,xt=43200,Tt=86400;function kt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=de(l,s,o),h=(i(l)-i(s))/1e3,f=Math.round((p-h)/60);if(f<2)return o.includeSeconds?p<5?r.formatDistance("lessThanXSeconds",5,u):p<10?r.formatDistance("lessThanXSeconds",10,u):p<20?r.formatDistance("lessThanXSeconds",20,u):p<40?r.formatDistance("halfAMinute",null,u):p<60?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",1,u):0===f?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",f,u);if(f<45)return r.formatDistance("xMinutes",f,u);if(f<90)return r.formatDistance("aboutXHours",1,u);if(f<Et){var m=Math.round(f/60);return r.formatDistance("aboutXHours",m,u)}if(f<Ct)return r.formatDistance("xDays",1,u);if(f<xt){var g=Math.round(f/Et);return r.formatDistance("xDays",g,u)}if(f<Tt)return d=Math.round(f/xt),r.formatDistance("aboutXMonths",d,u);if((d=ue(l,s,o))<12){var v=Math.round(f/xt);return r.formatDistance("xMonths",v,u)}var y=d%12,b=Math.floor(d/12);return y<3?r.formatDistance("aboutXYears",b,u):y<9?r.formatDistance("overXYears",b,u):r.formatDistance("almostXYears",b+1,u)}var St=1440,Dt=43200,Mt=525600;function Rt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain localize.formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=null==o.roundingMethod?"round":String(o.roundingMethod);if("floor"===p)d=Math.floor;else if("ceil"===p)d=Math.ceil;else{if("round"!==p)throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'");d=Math.round}var h,f=de(l,s,n),m=d((f-(i(l)-i(s))/1e3)/60);if("second"===(h=null==o.unit?m<1?"second":m<60?"minute":m<St?"hour":m<Dt?"day":m<Mt?"month":"year":String(o.unit)))return r.formatDistance("xSeconds",f,u);if("minute"===h)return r.formatDistance("xMinutes",m,u);if("hour"===h){var g=d(m/60);return r.formatDistance("xHours",g,u)}if("day"===h){var v=d(m/St);return r.formatDistance("xDays",v,u)}if("month"===h){var y=d(m/Dt);return r.formatDistance("xMonths",y,u)}if("year"===h){var b=d(m/Mt);return r.formatDistance("xYears",b,u)}throw new RangeError("unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'")}function _t(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),a=n||{},s=a.locale||Ue;if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");if(!s.formatRelative)throw new RangeError("locale must contain formatRelative property");var l,u=_(o,r,a);if(isNaN(u))return"Invalid Date";l=u<-6?"other":u<-1?"lastWeek":u<0?"yesterday":u<1?"today":u<2?"tomorrow":u<7?"nextWeek":"other";var d=pt(o,i(o),a),p=pt(r,i(r),a);return wt(o,s.formatRelative(l,d,p,a),a)}function Lt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(1e3*o(e),t)}function Pt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDate()}function Ot(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDay()}function Nt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return _(n,Ce(n,t),t)+1}function Ft(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return n%400==0||n%4==0&&n%100!=0}function At(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return isNaN(n)?NaN:Ft(n,t)?366:365}function It(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return 10*Math.floor(n/10)}function Ht(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getHours()}function zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n&&(n=7),n}var jt=6048e5;function Bt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=k(n,t).getTime()-D(n,t).getTime();return Math.round(o/jt)+1}var Ut=6048e5;function Wt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=D(e,t),o=D(z(n,60,t),t).valueOf()-n.valueOf();return Math.round(o/Ut)}function qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMilliseconds()}function Gt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMinutes()}function Vt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMonth()}var Yt=864e5;function $t(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");if(!(i<l&&s<a))return 0;var u=(l>a?a:l)-(s<i?i:s);return Math.ceil(u/Yt)}function Xt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getSeconds()}function Kt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getTime()}function Qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Math.floor(Kt(e,t)/1e3)}function Jt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setFullYear(r+1,0,u),d.setHours(0,0,0,0);var p=x(d,t),h=new Date(0);h.setFullYear(r,0,u),h.setHours(0,0,0,0);var f=x(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Jt(e,t),u=new Date(0);return u.setFullYear(l,0,s),u.setHours(0,0,0,0),x(u,t)}var en=6048e5;function tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=x(n,t).getTime()-Zt(n,t).getTime();return Math.round(o/en)+1}function nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Ot(be(e,t),t),u=(l<s?7-s:l)>Ot(e,t)?7-s:0;return Math.ceil((Pt(e,t)+u)/7)}function on(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(0,0,0,0),n}function rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Z(on(e,t),be(e,t),t)+1}function an(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getFullYear()}function sn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()>r.getTime()}function ln(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()<r.getTime()}function un(e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)}function cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()===r.getTime()}function dn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDate()}function pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 5===c(e,t).getDay()}function hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return ke(n,t).getTime()===we(n,t).getTime()}function fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDay()}function mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n);return o.getTime()===r.getTime()}function gn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(0,0,0),n}function vn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=gn(e,n),r=gn(t,n);return o.getTime()===r.getTime()}function yn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n);return o.getTime()===r.getTime()}function bn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=T(n);return o.weekStartsOn=1,yn(e,t,o)}function wn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=D(e,n),r=D(t,n);return o.getTime()===r.getTime()}function En(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(0,0),n}function Cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=En(e,n),r=En(t,n);return o.getTime()===r.getTime()}function xn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()&&o.getMonth()===r.getMonth()}function Tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3;return n.setMonth(r,1),n.setHours(0,0,0,0),n}function kn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Tn(e,n),r=Tn(t,n);return o.getTime()===r.getTime()}function Sn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(0),n}function Dn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Sn(e,n),r=Sn(t,n);return o.getTime()===r.getTime()}function Mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()}function Rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 6===c(e,t).getDay()}function _n(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 4===c(e,t).getDay()}function Ln(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 2===c(e,t).getDay()}function Pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 3===c(e,t).getDay()}function On(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=t||{},r=c(e,n).getTime(),i=c(o.start,n).getTime(),a=c(o.end,n).getTime();if(!(i<=a))throw new RangeError("Invalid interval");return r>=i&&r<=a}function Nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r+1,0,0),n.setHours(0,0,0,0),n}function Fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var l=c(e,t),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setHours(0,0,0,0),l.setDate(l.getDate()+d),l}function An(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Fn(e,n)}function In(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setDate(r.getDate()-1),r}function Hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(0,0,0,0),n}function zn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(0,0,0,0),n}function jn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n<o||isNaN(o))&&(n=o)}),n}function Bn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n>o||isNaN(o))&&(n=o)}),n}function Un(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,n),d=o(t),p=((d%7+7)%7<l?7:0)+d-u.getUTCDay();return u.setUTCDate(u.getUTCDate()+p),u}var Wn=36e5,qn=6e4,Gn=1e3,Vn={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},Yn=/^([+-])(\d{2})(\d{2})?|Z/,$n=/^([+-])(\d{2})(\d{2})|Z/,Xn=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,Kn=/^([+-])(\d{2}):(\d{2})|Z/,Qn=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Jn(e,t,n){var o=t.match(e);if(!o)return null;var r=parseInt(o[0],10);return{value:n?n(r):r,rest:t.slice(o[0].length)}}function Zn(e,t){var n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};var o="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,a=n[5]?parseInt(n[5],10):0;return{value:o*(r*Wn+i*qn+a*Gn),rest:t.slice(n[0].length)}}function eo(e,t){return Jn(Vn.anyDigitsSigned,e,t)}function to(e,t,n){switch(e){case 1:return Jn(Vn.singleDigit,t,n);case 2:return Jn(Vn.twoDigits,t,n);case 3:return Jn(Vn.threeDigits,t,n);case 4:return Jn(Vn.fourDigits,t,n);default:return Jn(new RegExp("^\\d{1,"+e+"}"),t,n)}}function no(e,t,n){switch(e){case 1:return Jn(Vn.singleDigitSigned,t,n);case 2:return Jn(Vn.twoDigitsSigned,t,n);case 3:return Jn(Vn.threeDigitsSigned,t,n);case 4:return Jn(Vn.fourDigitsSigned,t,n);default:return Jn(new RegExp("^-?\\d{1,"+e+"}"),t,n)}}function oo(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function ro(e,t){var n,o=t>0,r=o?t:1-t;if(r<=50)n=e||100;else{var i=r+50;n=e+100*Math.floor(i/100)-(e>=i%100?100:0)}return o?n:1-n}var io=[31,28,31,30,31,30,31,31,30,31,30,31],ao=[31,29,31,30,31,30,31,31,30,31,30,31];function so(e){return e%400==0||e%4==0&&e%100!=0}var lo={G:{priority:140,parse:function(e,t,n,o){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});case"GGGG":default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}},set:function(e,t,n){return e.setUTCFullYear(1===t?10:-9,0,1),e.setUTCHours(0,0,0,0),e}},y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"yy"===t}};switch(t){case"y":return to(4,e,r);case"yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=Xe(e,n);if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,1),e.setUTCHours(0,0,0,0),e}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,1),e.setUTCHours(0,0,0,0),e}},Y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"YY"===t}};switch(t){case"Y":return to(4,e,r);case"Yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=e.getUTCFullYear();if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}},R:{priority:130,parse:function(e,t,n,o){return no("R"===t?4:t.length,e)},set:function(e,t,n){var o=new Date(0);return o.setUTCFullYear(t,0,4),o.setUTCHours(0,0,0,0),qe(o)}},u:{priority:130,parse:function(e,t,n,o){return no("u"===t?4:t.length,e)},set:function(e,t,n){return e.setUTCFullYear(t,0,1),e.setUTCHours(0,0,0,0),e}},Q:{priority:120,parse:function(e,t,n,o){switch(t){case"Q":case"QQ":return to(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},q:{priority:120,parse:function(e,t,n,o){switch(t){case"q":case"qq":return to(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},M:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"M":return Jn(Vn.month,e,r);case"MM":return to(2,e,r);case"Mo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},L:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"L":return Jn(Vn.month,e,r);case"LL":return to(2,e,r);case"Lo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},w:{priority:100,parse:function(e,t,n,o){switch(t){case"w":return Jn(Vn.week,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return $e(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Qe(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},I:{priority:100,parse:function(e,t,n,o){switch(t){case"I":return Jn(Vn.week,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return qe(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Ye(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},d:{priority:90,parse:function(e,t,n,o){switch(t){case"d":return Jn(Vn.date,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){var o=so(e.getUTCFullYear()),r=e.getUTCMonth();return o?t>=1&&t<=ao[r]:t>=1&&t<=io[r]},set:function(e,t,n){return e.setUTCDate(t),e.setUTCHours(0,0,0,0),e}},D:{priority:90,parse:function(e,t,n,o){switch(t){case"D":case"DD":return Jn(Vn.dayOfYear,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){return so(e.getUTCFullYear())?t>=1&&t<=366:t>=1&&t<=365},set:function(e,t,n){return e.setUTCMonth(0,t),e.setUTCHours(0,0,0,0),e}},E:{priority:90,parse:function(e,t,n,o){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},e:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return to(t.length,e,r);case"eo":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},c:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return to(t.length,e,r);case"co":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},i:{priority:90,parse:function(e,t,n,o){var r=function(e){return 0===e?7:e};switch(t){case"i":case"ii":return to(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiii":return n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiiii":return n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiii":default:return n.day(e,{width:"wide",context:"formatting",valueCallback:r})||n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r})}},validate:function(e,t,n){return t>=1&&t<=7},set:function(e,t,n){return(e=function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);r%7==0&&(r-=7);var i=c(e,n),a=((r%7+7)%7<1?7:0)+r-i.getUTCDay();return i.setUTCDate(i.getUTCDate()+a),i}(e,t,n)).setUTCHours(0,0,0,0),e}},a:{priority:80,parse:function(e,t,n,o){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},b:{priority:80,parse:function(e,t,n,o){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},B:{priority:80,parse:function(e,t,n,o){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},h:{priority:70,parse:function(e,t,n,o){switch(t){case"h":return Jn(Vn.hour12h,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=12},set:function(e,t,n){var o=e.getUTCHours()>=12;return o&&t<12?e.setUTCHours(t+12,0,0,0):o||12!==t?e.setUTCHours(t,0,0,0):e.setUTCHours(0,0,0,0),e}},H:{priority:70,parse:function(e,t,n,o){switch(t){case"H":return Jn(Vn.hour23h,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=23},set:function(e,t,n){return e.setUTCHours(t,0,0,0),e}},K:{priority:70,parse:function(e,t,n,o){switch(t){case"K":return Jn(Vn.hour11h,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.getUTCHours()>=12&&t<12?e.setUTCHours(t+12,0,0,0):e.setUTCHours(t,0,0,0),e}},k:{priority:70,parse:function(e,t,n,o){switch(t){case"k":return Jn(Vn.hour24h,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=24},set:function(e,t,n){var o=t<=24?t%24:t;return e.setUTCHours(o,0,0,0),e}},m:{priority:60,parse:function(e,t,n,o){switch(t){case"m":return Jn(Vn.minute,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCMinutes(t,0,0),e}},s:{priority:50,parse:function(e,t,n,o){switch(t){case"s":return Jn(Vn.second,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCSeconds(t,0),e}},S:{priority:40,parse:function(e,t,n,o){return to(t.length,e,function(e){return Math.floor(e*Math.pow(10,3-t.length))})},set:function(e,t,n){return e.setUTCMilliseconds(t),e}},X:{priority:20,parse:function(e,t,n,o){switch(t){case"X":return Zn(Yn,e);case"XX":return Zn($n,e);case"XXXX":return Zn(Xn,e);case"XXXXX":return Zn(Qn,e);case"XXX":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},x:{priority:20,parse:function(e,t,n,o){switch(t){case"x":return Zn(Yn,e);case"xx":return Zn($n,e);case"xxxx":return Zn(Xn,e);case"xxxxx":return Zn(Qn,e);case"xxx":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},t:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(1e3*t)}},T:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(t)}}},uo=20,co=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,po=/^'(.*?)'?$/,ho=/''/g,fo=/\S/;function mo(e,t,n,r){if(arguments.length<3)throw new TypeError("3 arguments required, but only "+arguments.length+" present");var a=String(e),s=String(t),l=r||{},u=l.locale||Ue;if(!u.match)throw new RangeError("locale must contain match property");var d=u.options&&u.options.firstWeekContainsDate,p=null==d?1:o(d),h=null==l.firstWeekContainsDate?p:o(l.firstWeekContainsDate);if(!(h>=1&&h<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=u.options&&u.options.weekStartsOn,m=null==f?0:o(f),g=null==l.weekStartsOn?m:o(l.weekStartsOn);if(!(g>=0&&g<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===s)return""===a?c(n,l):new Date(NaN);var v,y={firstWeekContainsDate:h,weekStartsOn:g,locale:u},b=[{priority:uo,set:go,index:0}],w=s.match(co);for(v=0;v<w.length;v++){var E=w[v];!l.awareOfUnicodeTokens&&ft(E)&&mt(E);var C=E[0],x=lo[C];if(x){var T=x.parse(a,E,u.match,y);if(!T)return new Date(NaN);b.push({priority:x.priority,set:x.set,validate:x.validate,value:T.value,index:b.length}),a=T.rest}else{if("''"===E?E="'":"'"===C&&(E=E.match(po)[1].replace(ho,"'")),0!==a.indexOf(E))return new Date(NaN);a=a.slice(E.length)}}if(a.length>0&&fo.test(a))return new Date(NaN);var k=b.map(function(e){return e.priority}).sort(function(e,t){return t-e}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return b.filter(function(t){return t.priority===e}).reverse()}).map(function(e){return e[0]}),S=c(n,l);if(isNaN(S))return new Date(NaN);var D=pt(S,i(S));for(v=0;v<k.length;v++){var M=k[v];if(M.validate&&!M.validate(D,M.value,y))return new Date(NaN);D=M.set(D,M.value,y)}return D}function go(e){var t=new Date(0);return t.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),t.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),t}function vo(e,t,n){if(arguments.length<1)throw new TypeError("1 argument required, but only none provided present");var r=1===arguments.length?1:o(t);if(2===arguments.length&&"number"!=typeof t&&"string"!=typeof t&&(n=t,r=1),!r||r>30||r<1)throw new RangeError("nearestTo must be between 1 and 30");var i=c(e,n),a=i.getSeconds(),s=i.getMinutes()+a/60,l=Math.floor(s/r)*r,u=s%r,d=Math.round(u/r)*r;return new Date(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),l+d)}function yo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(i),r}function bo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,r),d=o(t),p=u.getDay();return b(u,((d%7+7)%7<l?7:0)+d-p,r)}function wo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMonth(0),r.setDate(i),r}function Eo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setHours(i),r}function Co(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n);return b(r,o(t)-zt(r,n),n)}function xo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Bt(r,n)-i;return r.setDate(r.getDate()-7*a),r}function To(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMilliseconds(i),r}function ko(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMinutes(i),r}function So(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getFullYear(),s=r.getDate(),l=new Date(0);l.setFullYear(a,i,15),l.setHours(0,0,0,0);var u=F(l,n);return r.setMonth(i,Math.min(s,u)),r}function Do(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t)-(Math.floor(r.getMonth()/3)+1);return So(r,r.getMonth()+3*i,n)}function Mo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setSeconds(i),r}function Ro(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=tn(r,n)-i;return r.setDate(r.getDate()-7*a),r}function _o(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.firstWeekContainsDate,s=null==a?1:o(a),l=null==r.firstWeekContainsDate?s:o(r.firstWeekContainsDate),u=c(e,n),d=o(t),p=_(u,Zt(u,n),n),h=new Date(0);return h.setFullYear(d,0,l),h.setHours(0,0,0,0),(u=Zt(h,n)).setDate(u.getDate()+p),u}function Lo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return isNaN(r)?new Date(NaN):(r.setFullYear(i),r)}function Po(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=10*Math.floor(o/10);return n.setFullYear(r,0,1),n.setHours(0,0,0,0),n}function Oo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,-o(t),n)}function No(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return C(e,-o(t),n)}function Fo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return N(e,-o(t),n)}function Ao(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,-o(t),n)}function Io(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return I(e,-o(t),n)}function Ho(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return H(e,-o(t),n)}function zo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return z(e,-o(t),n)}function jo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return j(e,-o(t),n)}n.d(t,"addDays",function(){return b}),n.d(t,"addHours",function(){return C}),n.d(t,"addISOWeekYears",function(){return P}),n.d(t,"addMilliseconds",function(){return w}),n.d(t,"addMinutes",function(){return N}),n.d(t,"addMonths",function(){return A}),n.d(t,"addQuarters",function(){return I}),n.d(t,"addSeconds",function(){return H}),n.d(t,"addWeeks",function(){return z}),n.d(t,"addYears",function(){return j}),n.d(t,"areIntervalsOverlapping",function(){return B}),n.d(t,"closestIndexTo",function(){return U}),n.d(t,"closestTo",function(){return W}),n.d(t,"compareAsc",function(){return q}),n.d(t,"compareDesc",function(){return G}),n.d(t,"differenceInCalendarDays",function(){return _}),n.d(t,"differenceInCalendarISOWeekYears",function(){return V}),n.d(t,"differenceInCalendarISOWeeks",function(){return $}),n.d(t,"differenceInCalendarMonths",function(){return X}),n.d(t,"differenceInCalendarQuarters",function(){return Q}),n.d(t,"differenceInCalendarWeeks",function(){return Z}),n.d(t,"differenceInCalendarYears",function(){return ee}),n.d(t,"differenceInDays",function(){return te}),n.d(t,"differenceInHours",function(){return re}),n.d(t,"differenceInISOWeekYears",function(){return ae}),n.d(t,"differenceInMilliseconds",function(){return ne}),n.d(t,"differenceInMinutes",function(){return le}),n.d(t,"differenceInMonths",function(){return ue}),n.d(t,"differenceInQuarters",function(){return ce}),n.d(t,"differenceInSeconds",function(){return de}),n.d(t,"differenceInWeeks",function(){return pe}),n.d(t,"differenceInYears",function(){return he}),n.d(t,"eachDayOfInterval",function(){return fe}),n.d(t,"eachWeekOfInterval",function(){return me}),n.d(t,"eachWeekendOfInterval",function(){return ye}),n.d(t,"eachWeekendOfMonth",function(){return Ee}),n.d(t,"eachWeekendOfYear",function(){return Te}),n.d(t,"endOfDay",function(){return ke}),n.d(t,"endOfDecade",function(){return Se}),n.d(t,"endOfHour",function(){return De}),n.d(t,"endOfISOWeek",function(){return Re}),n.d(t,"endOfISOWeekYear",function(){return _e}),n.d(t,"endOfMinute",function(){return Le}),n.d(t,"endOfMonth",function(){return we}),n.d(t,"endOfQuarter",function(){return Pe}),n.d(t,"endOfSecond",function(){return Oe}),n.d(t,"endOfWeek",function(){return Me}),n.d(t,"endOfYear",function(){return xe}),n.d(t,"format",function(){return wt}),n.d(t,"formatDistance",function(){return kt}),n.d(t,"formatDistanceStrict",function(){return Rt}),n.d(t,"formatRelative",function(){return _t}),n.d(t,"fromUnixTime",function(){return Lt}),n.d(t,"getDate",function(){return Pt}),n.d(t,"getDay",function(){return Ot}),n.d(t,"getDayOfYear",function(){return Nt}),n.d(t,"getDaysInMonth",function(){return F}),n.d(t,"getDaysInYear",function(){return At}),n.d(t,"getDecade",function(){return It}),n.d(t,"getHours",function(){return Ht}),n.d(t,"getISODay",function(){return zt}),n.d(t,"getISOWeek",function(){return Bt}),n.d(t,"getISOWeekYear",function(){return S}),n.d(t,"getISOWeeksInYear",function(){return Wt}),n.d(t,"getMilliseconds",function(){return qt}),n.d(t,"getMinutes",function(){return Gt}),n.d(t,"getMonth",function(){return Vt}),n.d(t,"getOverlappingDaysInIntervals",function(){return $t}),n.d(t,"getQuarter",function(){return K}),n.d(t,"getSeconds",function(){return Xt}),n.d(t,"getTime",function(){return Kt}),n.d(t,"getUnixTime",function(){return Qt}),n.d(t,"getWeek",function(){return tn}),n.d(t,"getWeekOfMonth",function(){return nn}),n.d(t,"getWeekYear",function(){return Jt}),n.d(t,"getWeeksInMonth",function(){return rn}),n.d(t,"getYear",function(){return an}),n.d(t,"isAfter",function(){return sn}),n.d(t,"isBefore",function(){return ln}),n.d(t,"isDate",function(){return un}),n.d(t,"isEqual",function(){return cn}),n.d(t,"isFirstDayOfMonth",function(){return dn}),n.d(t,"isFriday",function(){return pn}),n.d(t,"isLastDayOfMonth",function(){return hn}),n.d(t,"isLeapYear",function(){return Ft}),n.d(t,"isMonday",function(){return fn}),n.d(t,"isSameDay",function(){return mn}),n.d(t,"isSameHour",function(){return vn}),n.d(t,"isSameISOWeek",function(){return bn}),n.d(t,"isSameISOWeekYear",function(){return wn}),n.d(t,"isSameMinute",function(){return Cn}),n.d(t,"isSameMonth",function(){return xn}),n.d(t,"isSameQuarter",function(){return kn}),n.d(t,"isSameSecond",function(){return Dn}),n.d(t,"isSameWeek",function(){return yn}),n.d(t,"isSameYear",function(){return Mn}),n.d(t,"isSaturday",function(){return Rn}),n.d(t,"isSunday",function(){return ge}),n.d(t,"isThursday",function(){return _n}),n.d(t,"isTuesday",function(){return Ln}),n.d(t,"isValid",function(){return Ne}),n.d(t,"isWednesday",function(){return Pn}),n.d(t,"isWeekend",function(){return ve}),n.d(t,"isWithinInterval",function(){return On}),n.d(t,"lastDayOfDecade",function(){return Nn}),n.d(t,"lastDayOfISOWeek",function(){return An}),n.d(t,"lastDayOfISOWeekYear",function(){return In}),n.d(t,"lastDayOfMonth",function(){return on}),n.d(t,"lastDayOfQuarter",function(){return Hn}),n.d(t,"lastDayOfWeek",function(){return Fn}),n.d(t,"lastDayOfYear",function(){return zn}),n.d(t,"max",function(){return jn}),n.d(t,"min",function(){return Bn}),n.d(t,"parse",function(){return mo}),n.d(t,"roundToNearestMinutes",function(){return vo}),n.d(t,"setDate",function(){return yo}),n.d(t,"setDay",function(){return bo}),n.d(t,"setDayOfYear",function(){return wo}),n.d(t,"setHours",function(){return Eo}),n.d(t,"setISODay",function(){return Co}),n.d(t,"setISOWeek",function(){return xo}),n.d(t,"setISOWeekYear",function(){return L}),n.d(t,"setMilliseconds",function(){return To}),n.d(t,"setMinutes",function(){return ko}),n.d(t,"setMonth",function(){return So}),n.d(t,"setQuarter",function(){return Do}),n.d(t,"setSeconds",function(){return Mo}),n.d(t,"setWeek",function(){return Ro}),n.d(t,"setWeekYear",function(){return _o}),n.d(t,"setYear",function(){return Lo}),n.d(t,"startOfDay",function(){return M}),n.d(t,"startOfDecade",function(){return Po}),n.d(t,"startOfHour",function(){return gn}),n.d(t,"startOfISOWeek",function(){return k}),n.d(t,"startOfISOWeekYear",function(){return D}),n.d(t,"startOfMinute",function(){return En}),n.d(t,"startOfMonth",function(){return be}),n.d(t,"startOfQuarter",function(){return Tn}),n.d(t,"startOfSecond",function(){return Sn}),n.d(t,"startOfWeek",function(){return x}),n.d(t,"startOfWeekYear",function(){return Zt}),n.d(t,"startOfYear",function(){return Ce}),n.d(t,"subDays",function(){return Oo}),n.d(t,"subHours",function(){return No}),n.d(t,"subISOWeekYears",function(){return ie}),n.d(t,"subMilliseconds",function(){return pt}),n.d(t,"subMinutes",function(){return Fo}),n.d(t,"subMonths",function(){return Ao}),n.d(t,"subQuarters",function(){return Io}),n.d(t,"subSeconds",function(){return Ho}),n.d(t,"subWeeks",function(){return zo}),n.d(t,"subYears",function(){return jo}),n.d(t,"toDate",function(){return c})},function(e,t,n){"use strict";n.r(t);var o=n(0),r=n.n(o),i=n(7),a=n.n(i),s=n(8),l=n.n(s),u=n(2),c=n.n(u),d=n(1);function p(e){return"/"===e.charAt(0)}function h(e,t){for(var n=t,o=n+1,r=e.length;o<r;n+=1,o+=1)e[n]=e[o];e.pop()}var f=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],o=t&&t.split("/")||[],r=e&&p(e),i=t&&p(t),a=r||i;if(e&&p(e)?o=n:n.length&&(o.pop(),o=o.concat(n)),!o.length)return"/";var s=void 0;if(o.length){var l=o[o.length-1];s="."===l||".."===l||""===l}else s=!1;for(var u=0,c=o.length;c>=0;c--){var d=o[c];"."===d?h(o,c):".."===d?(h(o,c),u++):u&&(h(o,c),u--)}if(!a)for(;u--;u)o.unshift("..");!a||""===o[0]||o[0]&&p(o[0])||o.unshift("");var f=o.join("/");return s&&"/"!==f.substr(-1)&&(f+="/"),f};"function"==typeof Symbol&&Symbol.iterator;var m=!0,g="Invariant failed";var v=function(e,t){if(!e)throw m?new Error(g):new Error(g+": "+(t||""))};function y(e){return"/"===e.charAt(0)?e:"/"+e}function b(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function w(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function E(e){var t=e.pathname,n=e.search,o=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),o&&"#"!==o&&(r+="#"===o.charAt(0)?o:"#"+o),r}function C(e,t,n,o){var r;"string"==typeof e?(r=function(e){var t=e||"/",n="",o="",r=t.indexOf("#");-1!==r&&(o=t.substr(r),t=t.substr(0,r));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===o?"":o}}(e)).state=t:(void 0===(r=Object(d.a)({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(r.key=n),o?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=f(r.pathname,o.pathname)):r.pathname=o.pathname:r.pathname||(r.pathname="/"),r}function x(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,o,r){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof o?o(i,r):r(!0):r(!1!==i)}else r(!0)},appendListener:function(e){var n=!0;function o(){n&&e.apply(void 0,arguments)}return t.push(o),function(){n=!1,t=t.filter(function(e){return e!==o})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];t.forEach(function(e){return e.apply(void 0,n)})}}}var T=!("undefined"==typeof window||!window.document||!window.document.createElement);function k(e,t){t(window.confirm(e))}var S="popstate",D="hashchange";function M(){try{return window.history.state||{}}catch(e){return{}}}function R(e){void 0===e&&(e={}),T||v(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,r=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,a=i.forceRefresh,s=void 0!==a&&a,l=i.getUserConfirmation,u=void 0===l?k:l,c=i.keyLength,p=void 0===c?6:c,h=e.basename?w(y(e.basename)):"";function f(e){var t=e||{},n=t.key,o=t.state,r=window.location,i=r.pathname+r.search+r.hash;return h&&(i=b(i,h)),C(i,o,n)}function m(){return Math.random().toString(36).substr(2,p)}var g=x();function R(e){Object(d.a)(B,e),B.length=n.length,g.notifyListeners(B.location,B.action)}function _(e){(function(e){void 0===e.state&&navigator.userAgent.indexOf("CriOS")})(e)||O(f(e.state))}function L(){O(f(M()))}var P=!1;function O(e){if(P)P=!1,R();else{g.confirmTransitionTo(e,"POP",u,function(t){t?R({action:"POP",location:e}):function(e){var t=B.location,n=F.indexOf(t.key);-1===n&&(n=0);var o=F.indexOf(e.key);-1===o&&(o=0);var r=n-o;r&&(P=!0,I(r))}(e)})}}var N=f(M()),F=[N.key];function A(e){return h+E(e)}function I(e){n.go(e)}var H=0;function z(e){1===(H+=e)&&1===e?(window.addEventListener(S,_),r&&window.addEventListener(D,L)):0===H&&(window.removeEventListener(S,_),r&&window.removeEventListener(D,L))}var j=!1;var B={length:n.length,action:"POP",location:N,createHref:A,push:function(e,t){var r=C(e,t,m(),B.location);g.confirmTransitionTo(r,"PUSH",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.pushState({key:i,state:a},null,t),s)window.location.href=t;else{var l=F.indexOf(B.location.key),u=F.slice(0,-1===l?0:l+1);u.push(r.key),F=u,R({action:"PUSH",location:r})}else window.location.href=t}})},replace:function(e,t){var r=C(e,t,m(),B.location);g.confirmTransitionTo(r,"REPLACE",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.replaceState({key:i,state:a},null,t),s)window.location.replace(t);else{var l=F.indexOf(B.location.key);-1!==l&&(F[l]=r.key),R({action:"REPLACE",location:r})}else window.location.replace(t)}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=g.setPrompt(e);return j||(z(1),j=!0),function(){return j&&(j=!1,z(-1)),t()}},listen:function(e){var t=g.appendListener(e);return z(1),function(){z(-1),t()}}};return B}var _=n(9),L=n.n(_),P=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function O(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var N=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=O(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props.history.location.pathname)},O(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:P({},this.context.router,{history:this.props.history,route:{location:this.props.history.location,match:this.state.match}})}},t.prototype.computeMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}},t.prototype.componentWillMount=function(){var e=this,t=this.props,n=t.children,o=t.history;L()(null==n||1===r.a.Children.count(n),"A <Router> may have only one child element"),this.unlisten=o.listen(function(){e.setState({match:e.computeMatch(o.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){l()(this.props.history===e.history,"You cannot change <Router history>")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?r.a.Children.only(e):null},t}(r.a.Component);N.propTypes={history:c.a.object.isRequired,children:c.a.node},N.contextTypes={router:c.a.object},N.childContextTypes={router:c.a.object.isRequired};var F=N;function A(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var I=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=A(this,e.call.apply(e,[this].concat(i))),o.history=R(o.props),A(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){l()(!this.props.history,"<BrowserRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return r.a.createElement(F,{history:this.history,children:this.props.children})},t}(r.a.Component);I.propTypes={basename:c.a.string,forceRefresh:c.a.bool,getUserConfirmation:c.a.func,keyLength:c.a.number,children:c.a.node};var H=I,z=n(43),j=n.n(z),B={},U=0,W=function(e,t){var n=""+t.end+t.strict+t.sensitive,o=B[n]||(B[n]={});if(o[e])return o[e];var r=[],i={re:j()(e,r,t),keys:r};return U<1e4&&(o[e]=i,U++),i},q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var o=t,r=o.path,i=o.exact,a=void 0!==i&&i,s=o.strict,l=void 0!==s&&s,u=o.sensitive,c=void 0!==u&&u;if(null==r)return n;var d=W(r,{end:a,strict:l,sensitive:c}),p=d.re,h=d.keys,f=p.exec(e);if(!f)return null;var m=f[0],g=f.slice(1),v=e===m;return a&&!v?null:{path:r,url:"/"===r&&""===m?"/":m,isExact:v,params:h.reduce(function(e,t,n){return e[t.name]=g[n],e},{})}};var G=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){L()(this.context.router,"You should not use <Switch> outside a <Router>")},t.prototype.componentWillReceiveProps=function(e){l()(!(e.location&&!this.props.location),'<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),l()(!(!e.location&&this.props.location),'<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,o=void 0,i=void 0;return r.a.Children.forEach(t,function(t){if(null==o&&r.a.isValidElement(t)){var a=t.props,s=a.path,l=a.exact,u=a.strict,c=a.sensitive,d=a.from,p=s||d;i=t,o=q(n.pathname,{path:p,exact:l,strict:u,sensitive:c},e.match)}}),o?r.a.cloneElement(i,{location:n,computedMatch:o}):null},t}(r.a.Component);G.contextTypes={router:c.a.shape({route:c.a.object.isRequired}).isRequired},G.propTypes={children:c.a.node,location:c.a.object};var V=G,Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function $(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var X=function(e){return 0===r.a.Children.count(e)},K=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=$(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props,o.context.router)},$(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:Y({},this.context.router,{route:{location:this.props.location||this.context.router.route.location,match:this.state.match}})}},t.prototype.computeMatch=function(e,t){var n=e.computedMatch,o=e.location,r=e.path,i=e.strict,a=e.exact,s=e.sensitive;if(n)return n;L()(t,"You should not use <Route> or withRouter() outside a <Router>");var l=t.route,u=(o||l.location).pathname;return q(u,{path:r,strict:i,exact:a,sensitive:s},l.match)},t.prototype.componentWillMount=function(){l()(!(this.props.component&&this.props.render),"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored"),l()(!(this.props.component&&this.props.children&&!X(this.props.children)),"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored"),l()(!(this.props.render&&this.props.children&&!X(this.props.children)),"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){l()(!(e.location&&!this.props.location),'<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),l()(!(!e.location&&this.props.location),'<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,o=t.component,i=t.render,a=this.context.router,s=a.history,l=a.route,u=a.staticContext,c={match:e,location:this.props.location||l.location,history:s,staticContext:u};return o?e?r.a.createElement(o,c):null:i?e?i(c):null:"function"==typeof n?n(c):n&&!X(n)?r.a.Children.only(n):null},t}(r.a.Component);K.propTypes={computedMatch:c.a.object,path:c.a.string,exact:c.a.bool,strict:c.a.bool,sensitive:c.a.bool,component:c.a.func,render:c.a.func,children:c.a.oneOfType([c.a.func,c.a.node]),location:c.a.object},K.contextTypes={router:c.a.shape({history:c.a.object.isRequired,route:c.a.object.isRequired,staticContext:c.a.object})},K.childContextTypes={router:c.a.object.isRequired};var Q,J,Z,ee=K,te=n(39),ne=n.n(te);class oe{static Get(){return null!=this._Single&&null!=this._Single||(this._Single=new oe),this._Single}constructor(){this.ID=0,this.Controls=[]}RegisterControl(e){e.ID=this.ID,this.ID++,this.Controls.push(e)}UnregisterControl(e){this.Controls.splice(this.Controls.findIndex(t=>t.ID===e.ID),1)}}Z=void 0,(J="_Single")in(Q=oe)?Object.defineProperty(Q,J,{value:Z,enumerable:!0,configurable:!0,writable:!0}):Q[J]=Z;class re{static Get(){return null!=this._Single&&null!=this._Single||(this._Single=new re),this._Single}constructor(){this.Events=["OnAuthChange","OnItemsChange_Main","OnItemsChange_Move"],this.Listeners={},this.Events.map(function(e){this.Listeners[e]=[]}.bind(this))}RegisterListener(e,t){if(!this.Events.includes(e))throw"Event not found";if(null==t["Event_"+e])throw"Control not implement event function";this.Listeners[e].push(t),t.IsEventListener=!0}UnregistListener(e){Object.keys(this.Listeners).map(function(t){let n=this.Listeners[t].findIndex(t=>t.ID===e.ID);-1!=n&&this.Listeners[t].splice(n,1)}.bind(this))}EventAction(e,t){if(!this.Events.includes(e))throw"Event not found";this.Listeners[e].map(function(n){n["Event_"+e](t)})}}function ie(e,t){if(null==e)throw"LogTools: sender not set";console.log(e+": "+t)}function ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(re,"_Single",void 0);class se extends r.a.Component{constructor(e,t){super(e),this.Name=t,ne()(this),this.GlobalState=se.GlobalState,this.EventRegister=se.eventRegister,this.Log=e=>{!function(e,t){if(null==e)throw"LogTools: sender not set";console.log(e.Name+"_"+e.ID+": "+t)}(this,e)},se.controlRegister.RegisterControl(this),this.Log("start")}componentWillUnmount(){se.controlRegister.UnregisterControl(this),!0===this.IsEventListener&&se.eventRegister.UnregistListener(this)}}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}ae(se,"controlRegister",oe.Get()),ae(se,"eventRegister",re.Get()),ae(se,"GlobalState",{});class ue{}le(ue,"RooDirectoryID",-1),le(ue,"upload_chunk_size",1048576);var ce=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function de(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var pe=function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)},he=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=de(this,e.call.apply(e,[this].concat(i))),o.handleClick=function(e){if(o.props.onClick&&o.props.onClick(e),!e.defaultPrevented&&0===e.button&&!o.props.target&&!pe(e)){e.preventDefault();var t=o.context.router.history,n=o.props,r=n.replace,i=n.to;r?t.replace(i):t.push(i)}},de(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){var e=this.props,t=(e.replace,e.to),n=e.innerRef,o=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(e,["replace","to","innerRef"]);L()(this.context.router,"You should not use <Link> outside a <Router>"),L()(void 0!==t,'You must specify the "to" property');var i=this.context.router.history,a="string"==typeof t?C(t,null,null,i.location):t,s=i.createHref(a);return r.a.createElement("a",ce({},o,{onClick:this.handleClick,href:s,ref:n}))},t}(r.a.Component);he.propTypes={onClick:c.a.func,target:c.a.string,replace:c.a.bool,to:c.a.oneOfType([c.a.string,c.a.object]).isRequired,innerRef:c.a.oneOfType([c.a.string,c.a.func])},he.defaultProps={replace:!1},he.contextTypes={router:c.a.shape({history:c.a.shape({push:c.a.func.isRequired,replace:c.a.func.isRequired,createHref:c.a.func.isRequired}).isRequired}).isRequired};var fe=he;function me(e,t,n){return ie("ApiQuery","query to "+e),fetch(e,{method:t,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}).then(function(e){return e.json()})}class ge{constructor(){this.URL_Auth="api/Auth/Auth",this.URL_UserInfo="api/Auth/UserInfo",this.AuthCoockieName="AuthToken"}async AuthAsync(e,t){return await me(this.URL_Auth,"Post",{Login:e,Password:t}).then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}Logout(){this._SetTocken("")}async GetUserInfoAsync(){return await me(this.URL_UserInfo,"Post").then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}IsAuth(){return""!=this._GetTocken()}_getCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}_GetTocken(){return this._getCookie(this.AuthCoockieName)}_SetTocken(e){document.cookie=this.AuthCoockieName+"="+e}}class ve extends se{constructor(e){super(e,"MenuControl"),this.authServices=new ge,this.EventRegister.RegisterListener("OnAuthChange",this)}Event_OnAuthChange(){this.forceUpdate()}render(){return r.a.createElement("div",null,r.a.createElement("table",null,r.a.createElement("thead",null,r.a.createElement("tr",null,r.a.createElement("td",null,"Menu:"),r.a.createElement("td",null,r.a.createElement(fe,{to:"/"},r.a.createElement("button",null,"FS"))),this.authServices.IsAuth()?r.a.createElement("td",null,r.a.createElement(fe,{to:"/Admin"},r.a.createElement("button",null,"Admin"))):r.a.createElement("td",null)))))}}var ye=n(3),be=n(4),we=n.n(be),Ee=n(24),Ce=n.n(Ee),xe=n(6),Te=n(23),ke=n.n(Te),Se=r.a.createContext(new Map),De=(Se.Consumer,Se.Provider);function Me(e,t){var n=Object(o.useContext)(Se);return e||n.get(t)||t}r.a.Component;var Re=function(e){return e[0].toUpperCase()+Ce()(e).slice(1)};function _e(e,t){var n=void 0===t?{}:t,o=n.displayName,i=void 0===o?Re(e):o,a=n.Component,s=void 0===a?"div":a,l=n.defaultProps,u=r.a.forwardRef(function(t,n){var o=t.className,i=t.bsPrefix,a=t.as,l=void 0===a?s:a,u=Object(ye.a)(t,["className","bsPrefix","as"]),c=Me(i,e);return r.a.createElement(l,Object(d.a)({ref:n,className:we()(o,c)},u))});return u.defaultProps=l,u.displayName=i,u}var Le=r.a.createContext({controlId:void 0}),Pe=r.a.forwardRef(function(e,t){var n=e.bsPrefix,i=e.className,a=e.children,s=e.controlId,l=e.as,u=void 0===l?"div":l,c=Object(ye.a)(e,["bsPrefix","className","children","controlId","as"]);n=Me(n,"form-group");var p=Object(o.useMemo)(function(){return{controlId:s}},[s]);return r.a.createElement(Le.Provider,{value:p},r.a.createElement(u,Object(d.a)({},c,{ref:t,className:we()(i,n)}),a))});Pe.displayName="FormGroup";var Oe=Pe,Ne={type:c.a.string.isRequired,as:c.a.elementType},Fe=r.a.forwardRef(function(e,t){var n=e.as,o=void 0===n?"div":n,i=e.className,a=e.type,s=Object(ye.a)(e,["as","className","type"]);return r.a.createElement(o,Object(d.a)({},s,{ref:t,className:we()(i,a&&a+"-feedback")}))});Fe.displayName="Feedback",Fe.propTypes=Ne,Fe.defaultProps={type:"valid"};var Ae=Fe,Ie=r.a.forwardRef(function(e,t){var n,i,a=e.bsPrefix,s=e.type,l=e.size,u=e.id,c=e.className,p=e.isValid,h=e.isInvalid,f=e.plaintext,m=e.readOnly,g=e.as,v=void 0===g?"input":g,y=Object(ye.a)(e,["bsPrefix","type","size","id","className","isValid","isInvalid","plaintext","readOnly","as"]),b=Object(o.useContext)(Le).controlId;if(a=Me(a,"form-control"),f)(i={})[a+"-plaintext"]=!0,n=i;else if("file"===s){var w;(w={})[a+"-file"]=!0,n=w}else{var E;(E={})[a]=!0,E[a+"-"+l]=l,n=E}return r.a.createElement(v,Object(d.a)({},y,{type:s,ref:t,readOnly:m,id:u||b,className:we()(c,n,p&&"is-valid",h&&"is-invalid")}))});Ie.displayName="FormControl",Ie.Feedback=Ae;var He=Ie,ze=r.a.forwardRef(function(e,t){var n=e.id,i=e.bsPrefix,a=e.className,s=e.isValid,l=e.isInvalid,u=e.isStatic,c=Object(ye.a)(e,["id","bsPrefix","className","isValid","isInvalid","isStatic"]);i=Me(i,"form-check-input");var p=Object(o.useContext)(Le),h=p.controlId,f=p.custom;return r.a.createElement("input",Object(d.a)({},c,{ref:t,id:n||h,className:we()(a,!f&&i,f&&"custom-control-input",s&&"is-valid",l&&"is-invalid",u&&"position-static")}))});ze.displayName="FormCheckInput",ze.defaultProps={type:"checkbox"};var je=ze,Be=r.a.forwardRef(function(e,t){var n=e.bsPrefix,i=e.className,a=e.htmlFor,s=Object(ye.a)(e,["bsPrefix","className","htmlFor"]);n=Me(n,"form-check-label");var l=Object(o.useContext)(Le),u=l.controlId,c=l.custom;return r.a.createElement("label",Object(d.a)({},s,{ref:t,htmlFor:a||u,className:we()(i,!c&&n,c&&"custom-control-label")}))});Be.displayName="FormCheckLabel",Be.defaultProps={type:"checkbox"};var Ue=Be,We=r.a.forwardRef(function(e,t){var n=e.id,i=e.bsPrefix,a=e.inline,s=e.disabled,l=e.isValid,u=e.isInvalid,c=e.feedback,p=e.className,h=e.style,f=e.title,m=e.type,g=e.label,v=e.children,y=e.custom,b=Object(ye.a)(e,["id","bsPrefix","inline","disabled","isValid","isInvalid","feedback","className","style","title","type","label","children","custom"]);i=Me(i,"form-check");var w=Object(o.useContext)(Le).controlId,E=Object(o.useMemo)(function(){return{controlId:n||w,custom:y}},[w,y,n]),C=null!=g&&!1!==g&&!v,x=r.a.createElement(je,Object(d.a)({},b,{type:m,ref:t,isValid:l,isInvalid:u,isStatic:!C,disabled:s}));return r.a.createElement(Le.Provider,{value:E},r.a.createElement("div",{style:h,className:we()(p,!y&&i,y&&"custom-control custom-"+m,a&&(y?"custom-control":i)+"-inline")},v||r.a.createElement(r.a.Fragment,null,x,C&&r.a.createElement(Ue,{title:f},g),(l||u)&&r.a.createElement(Ae,{type:l?"valid":"invalid"},c))))});We.displayName="FormCheck",We.defaultProps={type:"checkbox",inline:!1,disabled:!1,isValid:!1,isInvalid:!1,title:""},We.Input=je,We.Label=Ue;var qe=We,Ge=["xl","lg","md","sm","xs"],Ve=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,i=e.as,a=void 0===i?"div":i,s=Object(ye.a)(e,["bsPrefix","className","as"]),l=Me(n,"col"),u=[],c=[];return Ge.forEach(function(e){var t,n,o,r=s[e];if(delete s[e],null!=r&&"object"==typeof r){var i=r.span;t=void 0===i||i,n=r.offset,o=r.order}else t=r;var a="xs"!==e?"-"+e:"";null!=t&&u.push(!0===t?""+l+a:""+l+a+"-"+t),null!=o&&c.push("order"+a+"-"+o),null!=n&&c.push("offset"+a+"-"+n)}),u.length||u.push(l),r.a.createElement(a,Object(d.a)({},s,{ref:t,className:we.a.apply(void 0,[o].concat(u,c))}))});Ve.displayName="Col";var Ye=Ve,$e=r.a.forwardRef(function(e,t){var n=e.bsPrefix,i=e.column,a=e.srOnly,s=e.className,l=e.htmlFor,u=Object(ye.a)(e,["bsPrefix","column","srOnly","className","htmlFor"]),c=Object(o.useContext)(Le).controlId;n=Me(n,"form-label");var p=we()(s,n,a&&"sr-only",i&&"col-form-label");return l=l||c,i?r.a.createElement(Ye,Object(d.a)({as:"label",className:p,htmlFor:l},u)):r.a.createElement("label",Object(d.a)({ref:t,className:p,htmlFor:l},u))});$e.displayName="FormLabel",$e.defaultProps={column:!1,srOnly:!1};var Xe=$e,Ke=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,i=e.as,a=void 0===i?"small":i,s=e.muted,l=Object(ye.a)(e,["bsPrefix","className","as","muted"]);return n=Me(n,"form-text"),r.a.createElement(a,Object(d.a)({},l,{ref:t,className:we()(o,n,s&&"text-muted")}))});Ke.displayName="FormText";var Qe=Ke,Je=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.inline,i=e.className,a=e.validated,s=e.as,l=void 0===s?"form":s,u=Object(ye.a)(e,["bsPrefix","inline","className","validated","as"]);return n=Me(n,"form"),r.a.createElement(l,Object(d.a)({},u,{ref:t,className:we()(i,a&&"was-validated",o&&n+"-inline")}))});Je.displayName="Form",Je.defaultProps={inline:!1},Je.Row=_e("form-row"),Je.Group=Oe,Je.Control=He,Je.Check=qe,Je.Label=Xe,Je.Text=Qe;var Ze=Je,et=n(17),tt=n.n(et);class nt{static Sho(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;tt.a.success(o,t,{timeOut:3e3,progressBar:!0,closeButton:!0})}static MesOk(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;tt.a.success(o,t,{closeButton:!0,progressBar:!0})}static MesOk_NoHide(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;tt.a.success(o,t,{timeOut:-1,closeButton:!0,progressBar:!0})}static MesEr(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;tt.a.error(o,t,{timeOut:-1,closeButton:!0})}}class ot extends se{constructor(e){super(e,"UserControl"),this.state={UserName:""},this.authServices=new ge,this.authServices.IsAuth()&&this.authServices.GetUserInfoAsync().then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.EventRegister.EventAction("OnAuthChange"),this.EventRegister.EventAction("OnItemsChange_Main"),this.EventRegister.EventAction("OnItemsChange_Move")):(this.setState({UserName:""}),nt.MesEr(e.ResMessage,"Auth"))}.bind(this))}AuthClick(){let e=this.refs.Login.value,t=this.refs.Password.value;this.authServices.AuthAsync(e,t).then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.EventRegister.EventAction("OnAuthChange"),this.EventRegister.EventAction("OnItemsChange_Main"),this.EventRegister.EventAction("OnItemsChange_Move")):(this.setState({UserName:""}),nt.MesEr(e.ResMessage,"Auth"))}.bind(this))}LogoutClick(){this.authServices.Logout(),this.setState({UserName:""}),this.EventRegister.EventAction("OnAuthChange"),this.EventRegister.EventAction("OnItemsChange_Main"),this.EventRegister.EventAction("OnItemsChange_Move")}render(){let e=this.state;return r.a.createElement("div",null,this.authServices.IsAuth()?r.a.createElement("div",null,r.a.createElement("p",null,"Вы авторизованы. Пользователь: ",e.UserName,"."),r.a.createElement("button",{onClick:this.LogoutClick},"Logout")):r.a.createElement("div",null,r.a.createElement("p",null,"Вы не авторизованы ",e.UserName,". Вход:"),r.a.createElement(Ze.Control,{ref:"Login",type:"text",placeholder:"Enter login"}),r.a.createElement(Ze.Text,{className:"text-muted"},"We'll never share your login with anyone else."),r.a.createElement("br",null),r.a.createElement(Ze.Control,{ref:"Password",type:"password",placeholder:"Password"}),r.a.createElement("br",null),r.a.createElement("button",{onClick:this.AuthClick},"Auth")))}}class rt{constructor(){this.URL_DirectoryItems="api/Explorer/GetDirectoryItems?ID=",this.URL_ScanDirectory="api/Explorer/ScanDirectory?ID=",this.URL_Delete="api/Explorer/DeleteFile",this.URL_Move="api/Explorer/MoveElement",this.URL_Download="api/Explorer/GetFile?ID=",this.URL_CreateDirectory="api/Explorer/CreateDirectory?"}async DirectoryGetItemsAsync(e){let t=this.URL_DirectoryItems+e;return await me(t,"Get")}async ScanDirectoryAsync(e){let t=this.URL_ScanDirectory+e;return await me(t,"Get")}async DeleteAsync(e){return await me(this.URL_Delete,"POST",{ID:e})}async MoveAsync(e,t){return await me(this.URL_Move,"POST",{ID:e,NewParent:t})}OpenDownload(e){let t=this.URL_Download+e;window.open(t,"_blank")}async CreateDirectoryAsync(e,t){return await me(this.URL_CreateDirectory,"POST",{ParentID:t,Name:e})}}function it(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var at=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return null!=e}).reduce(function(e,t){if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(){for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];e.apply(this,o),t.apply(this,o)}},null)};function st(e){return!e||"#"===e.trim()}var lt=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).handleClick=o.handleClick.bind(it(o)),o.handleKeyDown=o.handleKeyDown.bind(it(o)),o}Object(xe.a)(t,e);var n=t.prototype;return n.handleClick=function(e){var t=this.props,n=t.disabled,o=t.href,r=t.onClick;(n||st(o))&&e.preventDefault(),n?e.stopPropagation():r&&r(e)},n.handleKeyDown=function(e){" "===e.key&&(e.preventDefault(),this.handleClick(e))},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"a":t,o=e.disabled,i=e.onKeyDown,a=e.innerRef,s=Object(ye.a)(e,["as","disabled","onKeyDown","innerRef"]);return st(s.href)&&(s.role=s.role||"button",s.href=s.href||"#"),o&&(s.tabIndex=-1,s["aria-disabled"]=!0),a&&(s.ref=a),r.a.createElement(n,Object(d.a)({},s,{onClick:this.handleClick,onKeyDown:at(this.handleKeyDown,i)}))},t}(r.a.Component),ut=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.variant,i=e.size,a=e.active,s=e.className,l=e.block,u=e.type,c=e.as,p=Object(ye.a)(e,["bsPrefix","variant","size","active","className","block","type","as"]),h=Me(n,"btn"),f=we()(s,h,a&&"active",h+"-"+o,l&&h+"-block",i&&h+"-"+i);if(p.href)return r.a.createElement(lt,Object(d.a)({},p,{as:c,innerRef:t,className:we()(f,p.disabled&&"disabled")}));var m=c||"button";return t&&(p.ref=t),r.a.createElement(m,Object(d.a)({},p,{type:u,className:f}))});ut.displayName="Button",ut.defaultProps={variant:"primary",active:!1,disabled:!1,type:"button"};var ct=ut;class dt extends se{constructor(e){super(e,"FileExplorerRow"),this.state={Data:this.props.data,ShoSelectColumn:this.props.ShoSelectColumn}}componentWillReceiveProps(e){this.props=e,null!=this.refs.Select&&(this.refs.Select.checked=!1),this.setState({Data:this.props.data,ShoSelectColumn:this.props.ShoSelectColumn})}GetDirectory(){return this.GlobalState[this.props.CurrentDirectoryName]}GetData(){return this.state.Data}GetDataID(){return this.state.Data.ID}IsCheked(){return null!=this.refs.Select&&this.refs.Select.checked}OnDirectoryClick(){this.GetDirectory().ID=this.GetDataID(),this.EventRegister.EventAction(this.GetDirectory().ChangeEvent)}render(){let e=this.state,t=e.Data;return r.a.createElement("tr",null,r.a.createElement("td",null,t.ID),e.ShoSelectColumn?r.a.createElement("td",null,r.a.createElement("input",{ref:"Select",type:"checkbox"})):null,"RootDirectory"===t.Type||"Directory"===t.Type?r.a.createElement("td",null,r.a.createElement(fe,{to:`/?ID=${t.ID}`},r.a.createElement(ct,{id:t.ID,onClick:this.OnDirectoryClick,variant:"outline-dark"},t.Name))):r.a.createElement("td",null,t.Name),r.a.createElement("td",null,t.Type),r.a.createElement("td",null,t.Size))}}class pt extends se{constructor(e){super(e,"FileExplorerControl"),this.state={data:{},ShoSelectColumn:this.GetDirectory().ShoSelectColumn},this.ChildRows=[],this.fileExplorerServices=new rt,this.GetDirectory().ExplorerControl=this,this.EventRegister.RegisterListener(this.GetDirectory().ChangeEvent,this),this.Event_OnItemsChange_Main()}GetDirectory(){return this.GlobalState[this.props.CurrentDirectoryName]}Event_OnItemsChange_Main(){this.LoadDirectory()}Event_OnItemsChange_Move(){this.LoadDirectory()}OnBackClick(e){this.Log("OnBackClick "+this.state.data.ParentID),this.GetDirectory().ID=this.state.data.ParentID,this.EventRegister.EventAction(this.GetDirectory().ChangeEvent)}OnSortClick(e){let t=e.target.attributes[0].value,n=this.state.data;n.items.sort(function(e,t){var n,o,r=arguments.length;if(0===r)return(e,t)=>(e<t?-1:e>t&&1)||0;if(1===r)switch(typeof e){case"number":return e<0?(e,t)=>(e<t?1:e>t&&-1)||0:(e,t)=>(e<t?-1:e>t&&1)||0;case"string":return(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0}if(2===r&&"number"==typeof t)return t<0?(t,n)=>(t[e]<n[e]?1:t[e]>n[e]&&-1)||0:(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0;if("object"==typeof e)n=Object.getOwnPropertyNames(e),o=n.map(t=>e[t]),r=n.length;else{n=new Array(r),o=new Array(r);for(let e=r;e--;)n[e]=arguments[e],o[e]=1}return(e,t)=>{for(let i=0;i<r;i++){if(e[n[i]]<t[n[i]])return o[i];if(e[n[i]]>t[n[i]])return-o[i]}return 0}}(t,1)),this.setState({data:n})}OnScanDirClick(e){let t=this.GetDirectory().ID;this.Log("ScanDirectory "+t),this.fileExplorerServices.ScanDirectoryAsync(t).then(function(e){this.EventRegister.EventAction(this.GetDirectory().ChangeEvent)}.bind(this))}LoadDirectory(){let e=this.GetDirectory().ID;this.Log("LoadDirectory "+e),this.fileExplorerServices.DirectoryGetItemsAsync(e).then(function(t){this.setState({data:t,ShoSelectColumn:!(!this.GetDirectory().ShoSelectColumn||-1==e)})}.bind(this))}GetSelectedID(){return this.ChildRows.filter(e=>e.IsCheked()).map(e=>e.GetDataID())}render(){let e=this.state.data;return"{}"!==JSON.stringify(e)?(this.Log("Data"),r.a.createElement("div",null,this.GetDirectory().ID!=ue.RooDirectoryID?r.a.createElement("p",null,r.a.createElement(fe,{to:`/?ID=${e.ParentID}`},r.a.createElement("button",{onClick:this.OnBackClick},"l- На уровень вверх - ",e.ParentName))):null,r.a.createElement("p",null,e.LogicPath),r.a.createElement("p",null,r.a.createElement("button",{onClick:this.LoadDirectory},"Update"),r.a.createElement("button",{onClick:this.OnScanDirClick},"Rescan")),r.a.createElement("table",null,r.a.createElement("thead",null,r.a.createElement("tr",null,r.a.createElement("th",null,r.a.createElement("button",{property:"ID",onClick:this.OnSortClick},"ID")),this.state.ShoSelectColumn?r.a.createElement("th",null,"Select"):null,r.a.createElement("th",null,r.a.createElement("button",{property:"Name",onClick:this.OnSortClick},"Name")),r.a.createElement("th",null,r.a.createElement("button",{property:"Type",onClick:this.OnSortClick},"Type")),r.a.createElement("th",null,r.a.createElement("button",{property:"Size",onClick:this.OnSortClick},"Size")))),r.a.createElement("tbody",null,e.items.map(function(e,t,n){return[r.a.createElement(dt,{ref:e=>{null!=e?this.ChildRows[t]=e:this.ChildRows.splice(t,1)},ParentComponent:this,CurrentDirectoryName:this.props.CurrentDirectoryName,key:t,ShoSelectColumn:this.state.ShoSelectColumn,data:e})]}.bind(this)))))):(this.Log("NoData"),r.a.createElement("div",null,r.a.createElement("p",null,"NoData")))}}var ht=n(18),ft=n.n(ht),mt=n(12),gt=n.n(mt),vt=n(10),yt=n.n(vt),bt=n(13),wt=n.n(bt),Et=n(40),Ct=n.n(Et),xt=!1,Tt=r.a.createContext(null),kt="unmounted",St="exited",Dt="entering",Mt="entered",Rt=function(e){function t(t,n){var o;o=e.call(this,t,n)||this;var r,i=n&&!n.isMounting?t.enter:t.appear;return o.appearStatus=null,t.in?i?(r=St,o.appearStatus=Dt):r=Mt:r=t.unmountOnExit||t.mountOnEnter?kt:St,o.state={status:r},o.nextCallback=null,o}Object(xe.a)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===kt?{status:St}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Dt&&n!==Mt&&(t=Dt):n!==Dt&&n!==Mt||(t="exiting")}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,o=this.props.timeout;return e=t=n=o,null!=o&&"number"!=typeof o&&(e=o.exit,t=o.enter,n=void 0!==o.appear?o.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=a.a.findDOMNode(this);t===Dt?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===St&&this.setState({status:kt})},n.performEnter=function(e,t){var n=this,o=this.props.enter,r=this.context?this.context.isMounting:t,i=this.getTimeouts(),a=r?i.appear:i.enter;!t&&!o||xt?this.safeSetState({status:Mt},function(){n.props.onEntered(e)}):(this.props.onEnter(e,r),this.safeSetState({status:Dt},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,a,function(){n.safeSetState({status:Mt},function(){n.props.onEntered(e,r)})})}))},n.performExit=function(e){var t=this,n=this.props.exit,o=this.getTimeouts();n&&!xt?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,o.exit,function(){t.safeSetState({status:St},function(){t.props.onExited(e)})})})):this.safeSetState({status:St},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(o){n&&(n=!1,t.nextCallback=null,e(o))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);var o=null==t&&!this.props.addEndListener;e&&!o?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===kt)return null;var t=this.props,n=t.children,o=Object(ye.a)(t,["children"]);if(delete o.in,delete o.mountOnEnter,delete o.unmountOnExit,delete o.appear,delete o.enter,delete o.exit,delete o.timeout,delete o.addEndListener,delete o.onEnter,delete o.onEntering,delete o.onEntered,delete o.onExit,delete o.onExiting,delete o.onExited,"function"==typeof n)return r.a.createElement(Tt.Provider,{value:null},n(e,o));var i=r.a.Children.only(n);return r.a.createElement(Tt.Provider,{value:null},r.a.cloneElement(i,o))},t}(r.a.Component);function _t(){}Rt.contextType=Tt,Rt.propTypes={},Rt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:_t,onEntering:_t,onEntered:_t,onExit:_t,onExiting:_t,onExited:_t},Rt.UNMOUNTED=0,Rt.EXITED=1,Rt.ENTERING=2,Rt.ENTERED=3,Rt.EXITING=4;var Lt,Pt=Rt,Ot=n(41),Nt=n.n(Ot);var Ft=((Lt={})[Dt]="show",Lt[Mt]="show",Lt),At=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).handleEnter=function(e){!function(e){e.offsetHeight}(e),t.props.onEnter&&t.props.onEnter(e)},t}return Object(xe.a)(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.children,o=Object(ye.a)(e,["className","children"]);return r.a.createElement(Pt,Object(d.a)({addEndListener:Nt.a},o,{onEnter:this.handleEnter}),function(e,o){return r.a.cloneElement(n,Object(d.a)({},o,{className:we()("fade",t,n.props.className,Ft[e])}))})},t}(r.a.Component);At.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1};var It=At,Ht=_e("modal-body"),zt=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,i=e.centered,a=e.size,s=e.children,l=e.scrollable,u=Object(ye.a)(e,["bsPrefix","className","centered","size","children","scrollable"]),c=(n=Me(n,"modal"))+"-dialog";return r.a.createElement("div",Object(d.a)({},u,{ref:t,className:we()(c,o,a&&n+"-"+a,i&&c+"-centered",l&&c+"-scrollable")}),r.a.createElement("div",{className:we()(n+"-content")},s))});zt.displayName="ModalDialog";var jt=zt,Bt=_e("modal-footer");var Ut=function(e){var t=Object(o.useRef)(e);return Object(o.useEffect)(function(){t.current=e},[e]),t};function Wt(e){var t=Ut(e);return Object(o.useCallback)(function(){return t.current&&t.current.apply(t,arguments)},[t])}var qt={label:c.a.string.isRequired,onClick:c.a.func},Gt=r.a.forwardRef(function(e,t){var n=e.label,o=e.onClick,i=e.className,a=Object(ye.a)(e,["label","onClick","className"]);return r.a.createElement("button",Object(d.a)({ref:t,type:"button",className:we()("close",i),onClick:o},a),r.a.createElement("span",{"aria-hidden":"true"},"×"),r.a.createElement("span",{className:"sr-only"},n))});Gt.displayName="CloseButton",Gt.propTypes=qt,Gt.defaultProps={label:"Close"};var Vt=Gt,Yt=r.a.createContext({onHide:function(){}}),$t=r.a.forwardRef(function(e,t){var n=e.bsPrefix,i=e.closeLabel,a=e.closeButton,s=e.onHide,l=e.className,u=e.children,c=Object(ye.a)(e,["bsPrefix","closeLabel","closeButton","onHide","className","children"]);n=Me(n,"modal-header");var p=Object(o.useContext)(Yt),h=Wt(function(){p&&p.onHide(),s&&s()});return r.a.createElement("div",Object(d.a)({ref:t},c,{className:we()(l,n)}),u,a&&r.a.createElement(Vt,{label:i,onClick:h}))});$t.displayName="ModalHeader",$t.defaultProps={closeLabel:"Close",closeButton:!1};var Xt,Kt=$t,Qt=_e("modal-title",{Component:(Xt="h4",r.a.forwardRef(function(e,t){return r.a.createElement("div",Object(d.a)({},e,{ref:t,className:we()(e.className,Xt)}))}))}),Jt=n(11),Zt=n.n(Jt),en=n(14),tn=n.n(en),nn=n(25),on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an=".navbar-toggler",sn={show:!1,backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,animation:!0,dialogAs:jt,manager:new(function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).adjustAndStore=function(e,t,n){var o=t.style[e];t.dataset[e]=o,tn()(t,e,parseFloat(tn()(t,e))+n+"px")},t.restore=function(e,t){var n=t.dataset[e];void 0!==n&&(delete t.dataset[e],tn()(t,e,n))},t}Object(xe.a)(t,e);var n=t.prototype;return n.setContainerStyle=function(t,n){var o=this;if(e.prototype.setContainerStyle.call(this,t,n),t.overflowing){var r=wt()();Zt()(n,on).forEach(function(e){return o.adjustAndStore("paddingRight",e,r)}),Zt()(n,rn).forEach(function(e){return o.adjustAndStore("margingRight",e,-r)}),Zt()(n,an).forEach(function(e){return o.adjustAndStore("margingRight",e,r)})}},n.removeContainerStyle=function(t,n){var o=this;e.prototype.removeContainerStyle.call(this,t,n),Zt()(n,on).forEach(function(e){return o.restore("paddingRight",e)}),Zt()(n,rn).forEach(function(e){return o.restore("margingRight",e)}),Zt()(n,an).forEach(function(e){return o.restore("margingRight",e)})},t}(n.n(nn).a))};function ln(e){return r.a.createElement(It,e)}function un(e){return r.a.createElement(It,e)}var cn=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).state={style:{}},t.modalContext={onHide:function(){return t.props.onHide()}},t.setModalRef=function(e){t._modal=e},t.handleDialogMouseDown=function(){t._waitingForMouseUp=!0},t.handleMouseUp=function(e){t._waitingForMouseUp&&e.target===t._modal.dialog&&(t._ignoreBackdropClick=!0),t._waitingForMouseUp=!1},t.handleClick=function(e){t._ignoreBackdropClick||e.target!==e.currentTarget?t._ignoreBackdropClick=!1:t.props.onHide()},t.handleEnter=function(e){var n;e&&(e.style.display="block",t.updateDialogStyle(e));for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEnter&&(n=t.props).onEnter.apply(n,[e].concat(r))},t.handleEntering=function(e){for(var n,o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEntering&&(n=t.props).onEntering.apply(n,[e].concat(r)),ft.a.on(window,"resize",t.handleWindowResize)},t.handleExited=function(e){var n;e&&(e.style.display="");for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onExited&&(n=t.props).onExited.apply(n,r),ft.a.off(window,"resize",t.handleWindowResize)},t.handleWindowResize=function(){t.updateDialogStyle(t._modal.dialog)},t.renderBackdrop=function(e){var n=t.props,o=n.bsPrefix,i=n.backdropClassName;return r.a.createElement("div",Object(d.a)({},e,{className:we()(o+"-backdrop",i)}))},t}Object(xe.a)(t,e);var n=t.prototype;return n.componentWillUnmount=function(){ft.a.off(window,"resize",this.handleWindowResize)},n.updateDialogStyle=function(e){if(yt.a){var t=this.props.manager.isContainerOverflowing(this._modal),n=e.scrollHeight>gt()(e).documentElement.clientHeight;this.setState({style:{paddingRight:t&&!n?wt()():void 0,paddingLeft:!t&&n?wt()():void 0}})}},n.render=function(){var e=this.props,t=e.bsPrefix,n=e.className,o=e.style,i=e.dialogClassName,a=e.children,s=e.dialogAs,l=e.show,u=e.animation,c=e.backdrop,p=e.keyboard,h=e.manager,f=e.onEscapeKeyDown,m=e.onShow,g=e.onHide,v=e.container,y=e.autoFocus,b=e.enforceFocus,w=e.restoreFocus,E=e.onEntered,C=e.onExit,x=e.onExiting,T=(e.onExited,e.onEntering,e.onEnter,e.onEntering,e.backdropClassName,Object(ye.a)(e,["bsPrefix","className","style","dialogClassName","children","dialogAs","show","animation","backdrop","keyboard","manager","onEscapeKeyDown","onShow","onHide","container","autoFocus","enforceFocus","restoreFocus","onEntered","onExit","onExiting","onExited","onEntering","onEnter","onEntering","backdropClassName"])),k=!0===c?this.handleClick:null,S=Object(d.a)({},o,this.state.style);return u||(S.display="block"),r.a.createElement(Yt.Provider,{value:this.modalContext},r.a.createElement(Ct.a,{show:l,backdrop:c,container:v,keyboard:p,autoFocus:y,enforceFocus:b,restoreFocus:w,onEscapeKeyDown:f,onShow:m,onHide:g,onEntered:E,onExit:C,onExiting:x,manager:h,ref:this.setModalRef,style:S,className:we()(n,t),containerClassName:t+"-open",transition:u?ln:void 0,backdropTransition:u?un:void 0,renderBackdrop:this.renderBackdrop,onClick:k,onMouseUp:this.handleMouseUp,onEnter:this.handleEnter,onEntering:this.handleEntering,onExited:this.handleExited},r.a.createElement(s,Object(d.a)({},T,{onMouseDown:this.handleDialogMouseDown,className:i}),a)))},t}(r.a.Component);cn.defaultProps=sn;var dn=function(e,t){"string"==typeof t&&(t={prefix:t});var n=e.prototype&&e.prototype.isReactComponent,i=t,a=i.prefix,s=i.forwardRefAs,l=void 0===s?n?"ref":"innerRef":s;return ke()(function(t,n){var i=Object(d.a)({},t);i[l]=n;var s=Object(o.useContext)(Se);return r.a.createElement(e,Object(d.a)({},i,{bsPrefix:i.bsPrefix||s.get(a)||a}))},{displayName:"Bootstrap("+(e.displayName||e.name)+")"})}(cn,"modal");dn.Body=Ht,dn.Header=Kt,dn.Title=Qt,dn.Footer=Bt,dn.Dialog=jt,dn.TRANSITION_DURATION=300,dn.BACKDROP_TRANSITION_DURATION=150;var pn=dn;class hn extends se{constructor(e){super(e,"ExplorerActionsControl"),this.state={MoveWindowsShow:!1},this.fileExplorerServices=new rt,this.GlobalState.MoveExplorer={ID:this.GlobalState.MainExplorer.ID,ShoSelectColumn:!1,ChangeEvent:"OnItemsChange_Move"}}OnDownloadClick(e){this.GlobalState.MainExplorer.ExplorerControl.GetSelectedID().map(e=>{this.Log("OnDownload "+e),this.fileExplorerServices.OpenDownload(e)})}OnDeleteClick(e){let t=this.GlobalState.MainExplorer.ExplorerControl.GetSelectedID().map(e=>(this.Log("OnDelete "+e),this.fileExplorerServices.DeleteAsync(e)));Promise.all(t).then(function(e){let t="";e.map(function(e){t+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | "}),nt.MesOk(t,"Move"),this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent)}.bind(this))}OnMoveClick(e){let t=this.GlobalState.MainExplorer.ExplorerControl.GetSelectedID();0!=t.length&&(this.selected=t,this.setState({MoveWindowsShow:!0}))}OnCreateDirectoryClick(e){let t=this.refs.DirectoryName.value,n=this.GlobalState.MainExplorer.ID;this.fileExplorerServices.CreateDirectoryAsync(t,n).then(function(e){this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent),nt.MesOk("Complete","CreateDir")}.bind(this)),this.refs.DirectoryName.value=""}OnMoveWindowCloseClick(){this.setState({MoveWindowsShow:!1})}OnMoveWindowClick(){if(this.GlobalState.MainExplorer.ID==this.GlobalState.MoveExplorer.ID)return void this.setState({MoveWindowsShow:!1});let e=this.selected.map(function(e){return this.Log("OnMove "+e),this.fileExplorerServices.MoveAsync(e,this.GlobalState.MoveExplorer.ID)}.bind(this));Promise.all(e).then(function(e){let t="";e.map(function(e){t+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | "}),nt.MesOk(t,"Move"),this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent)}.bind(this)),this.setState({MoveWindowsShow:!1})}render(){return r.a.createElement("div",null,r.a.createElement("p",null,"ExplorerControlPanel"),r.a.createElement("p",null,r.a.createElement("input",{ref:"DirectoryName"}),r.a.createElement("button",{onClick:this.OnCreateDirectoryClick},"CreateDirectory")),r.a.createElement("table",null,r.a.createElement("thead",null,r.a.createElement("tr",null,r.a.createElement("th",null,r.a.createElement("button",{onClick:this.OnDownloadClick},"Скачать")),r.a.createElement("th",null,r.a.createElement("button",{onClick:this.OnDeleteClick},"Удалить")),r.a.createElement("th",null,r.a.createElement("button",{onClick:this.OnMoveClick},"Переместить"))))),r.a.createElement(pn,{ref:"Modal",show:this.state.MoveWindowsShow,onHide:this.OnMoveWindowCloseClick,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},r.a.createElement(pn.Header,{closeButton:!0},r.a.createElement(pn.Title,null,"Select destination directory")),r.a.createElement(pn.Body,null,r.a.createElement(pt,{ref:"FileExplorerControl",ParentComponent:this,CurrentDirectoryName:"MoveExplorer"})),r.a.createElement(pn.Footer,null,r.a.createElement(ct,{variant:"secondary",onClick:this.OnMoveWindowCloseClick},"Cansel"),r.a.createElement(ct,{variant:"primary",onClick:this.OnMoveWindowClick},"Move to directory"))))}}class fn{constructor(){this.URL_Start="/api/UploadFiles/StartUpload",this.URL_Upload="/api/UploadFiles/UploadBlob",this.URL_Cansel="/api/UploadFiles/Cansel",this.upload_chunk_size=ue.upload_chunk_size,this.ID=-1,this._ContinueDownload=!1,this._file=null,this._ParentID=null,this.OnProggresseChange=null,this.OnIDReceived=null,this.OnError=null}async _ReadBlobAsync(e,t){return new Promise(function(n,o){let r=this._file.slice(e,t),i=new FileReader;i.onload=function(){n(i.result)},i.onerror=o,i.readAsDataURL(r)}.bind(this))}async _StartUploadAsync(){let e;return await me(this.URL_Start,"Post",{ParentID:this._ParentID,Name:this._file.name,Size:this._file.size}).then(function(t){e=t}.bind(this)),e}async _UploadBlobAsync(e,t){if(ie("UploadServices","_UploadBlobAsync"),!this._ContinueDownload)return{State:!0};if(""!=e){let n;return ie("UploadServices",this.URL_Upload+t),await me(this.URL_Upload,"Post",{ID:this.ID,chunk:e}).then(function(e){n=e}.bind(this)),n}}async UploadFileAsync(e,t){this._file=e,this._ParentID=t;let n=await this._StartUploadAsync();if(n.State){this._ContinueDownload=!0,this.ID=n.ID,null!=this.OnIDReceived&&this.OnIDReceived(this.ID);for(let t=0,n=0;t<this._file.size;t+=this.upload_chunk_size,n++){if(!this._ContinueDownload)return;let o=await this._ReadBlobAsync(t,t+this.upload_chunk_size),r=await this._UploadBlobAsync(o,n);if(!r.State)return void(null!=this.OnError&&this.OnError(r.Msg));let i=Math.round(100*t/e.size);ie("UploadServices","p = "+i),null!=this.OnProggresseChange&&this.OnProggresseChange(i)}this._ContinueDownload=!1}else null!=this.OnError&&this.OnError(n.Msg)}Cansel(){this._ContinueDownload=!1,setTimeout(function(){me(this.URL_Cansel,"Post",{ID:this.ID})}.bind(this),500)}}class mn extends se{constructor(e){super(e,"UploaderControl"),this.state={progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""},this.uploadServices=new fn,this.uploadServices.OnProggresseChange=this.OnProgresseChange,this.uploadServices.OnError=this.OnError}UploadClick(){let e=this.refs.file,t=e.files;if(0==t.length)return;let n=t[0];this.setState({ButtonUploadEnable:!1,_state:1,FileInfo:{name:n.name,size:n.size}}),this.uploadServices.UploadFileAsync(n,this.GlobalState.MainExplorer.ID).then(function(){nt.MesOk("Complete","Upload"),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""}),this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent),e.value=""}.bind(this))}CancelClick(){this.uploadServices.Cansel(),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{}})}OnProgresseChange(e){this.setState({progress:e})}OnError(e){this.setState({progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:e})}render(){return r.a.createElement("div",null,r.a.createElement("h2",null,"Upload"),r.a.createElement("p",null,r.a.createElement("input",{ref:"file",type:"file",disabled:!this.state.ButtonUploadEnable}),r.a.createElement("button",{disabled:!this.state.ButtonUploadEnable,onClick:this.UploadClick},"Upload"),r.a.createElement("button",{disabled:this.state.ButtonUploadEnable,onClick:this.CancelClick},"Cancel")),1==this.state._state?r.a.createElement("div",null,r.a.createElement("p",null,"Прогресс ",this.state.progress," %"),r.a.createElement("p",null,"Выполняется загрука файла:"),r.a.createElement("p",null,"Имя файла: ",this.state.FileInfo.name),r.a.createElement("p",null,"Размеры файла: ",this.state.FileInfo.size)):"",""!=this.state.ResultMsg?r.a.createElement("p",null,"Результат: ",this.state.ResultMsg):null)}}var gn=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,i=Object(ye.a)(e,["bsPrefix","className"]),a=Me(n,"btn-toolbar");return r.a.createElement("div",Object(d.a)({},i,{ref:t,className:we()(o,a)}))});gn.displayName="ButtonToolbar",gn.defaultProps={role:"toolbar"};var vn=gn;class yn extends se{constructor(e){super(e,"BootstrapControl")}ToastifyTest(){this.Leght=(null==this.Leght?0:this.Leght)+500}render(){return r.a.createElement("div",null,r.a.createElement("p",null,"Bootstrap test"),r.a.createElement(vn,null,r.a.createElement(ct,{onClick:this.ToastifyTest,variant:"outline-primary"},"Primary"),r.a.createElement(ct,{variant:"outline-secondary"},"Secondary"),r.a.createElement(ct,{variant:"outline-success"},"Success"),r.a.createElement(ct,{variant:"outline-warning"},"Warning"),r.a.createElement(ct,{variant:"outline-danger"},"Danger"),r.a.createElement(ct,{variant:"outline-info"},"Info"),r.a.createElement(ct,{variant:"outline-light"},"Light"),r.a.createElement(ct,{variant:"outline-dark"},"Dark")))}}class bn extends se{constructor(e){super(e,"FileExplorerPage");var t=new URL(window.location.href).searchParams.get("ID");this.GlobalState.MainExplorer=null!=t?{ID:t,ShoSelectColumn:!0,ChangeEvent:"OnItemsChange_Main"}:{ID:-1,ShoSelectColumn:!0,ChangeEvent:"OnItemsChange_Main"}}OnRegistersClick(){this.GlobalState,se.controlRegister,this.EventRegister}render(){return r.a.createElement("div",null,r.a.createElement("button",{onClick:this.OnRegistersClick},"Registers"),r.a.createElement("hr",null),r.a.createElement(ve,{ref:"MenuControl",ParentComponent:this}),r.a.createElement("hr",null),r.a.createElement(ot,{ref:"UserControl",ParentComponent:this}),r.a.createElement("hr",null),r.a.createElement(pt,{ref:"FileExplorerControl",ParentComponent:this,CurrentDirectoryName:"MainExplorer"}),r.a.createElement("hr",null),this.GlobalState.MainExplorer.ID!=ue.RooDirectoryID?r.a.createElement("div",null,r.a.createElement(hn,{ref:"ExplorerActionsControl",ParentComponent:this}),r.a.createElement("hr",null),r.a.createElement(mn,{ref:"UploaderControl",ParentComponent:this}),r.a.createElement("hr",null)):null,r.a.createElement("hr",null),r.a.createElement(yn,null),r.a.createElement("hr",null))}}n(84);function wn(e,t){return void 0!==e[t]}function En(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function Cn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var xn=r.a.createContext(null),Tn=r.a.createContext(null),kn=n(42),Sn=n.n(kn),Dn=r.a.createContext(),Mn=function(e,t){return null!=e?String(e):t||null},Rn=Dn,_n=r.a.createContext(null),Ln=r.a.createContext(null),Pn=function(){},On=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).state={navContext:null},t.handleSelect=function(e,n){var o=t.props,r=o.onSelect,i=o.parentOnSelect;null!=e&&(r&&r(e,n),i&&i(e,n))},t.handleKeyDown=function(e){var n,o=t.props.onKeyDown;switch(o&&o(e),e.key){case"ArrowLeft":case"ArrowUp":n=t.getNextActiveChild(-1);break;case"ArrowRight":case"ArrowDown":n=t.getNextActiveChild(1);break;default:return}n&&(e.preventDefault(),t.handleSelect(n.dataset.rbEventKey,e),t._needsRefocus=!0)},t.attachRef=function(e){t.listNode=e},t}Object(xe.a)(t,e),t.getDerivedStateFromProps=function(e){var t=e.activeKey,n=e.getControlledId,o=e.getControllerId;return{navContext:{role:e.role,activeKey:Mn(t),getControlledId:n||Pn,getControllerId:o||Pn}}};var n=t.prototype;return n.componentDidUpdate=function(){if(this._needsRefocus&&this.listNode){var e=this.listNode.querySelector("[data-rb-event-key].active");e&&e.focus()}},n.getNextActiveChild=function(e){if(!this.listNode)return null;var t=Zt()(this.listNode,"[data-rb-event-key]:not(.disabled)"),n=this.listNode.querySelector(".active"),o=t.indexOf(n);if(-1===o)return null;var r=o+e;return r>=t.length&&(r=0),r<0&&(r=t.length-1),t[r]},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"ul":t,o=(e.onSelect,e.parentOnSelect,e.getControlledId,e.getControllerId,e.activeKey,Object(ye.a)(e,["as","onSelect","parentOnSelect","getControlledId","getControllerId","activeKey"]));return"tablist"===o.role&&(o.onKeyDown=this.handleKeyDown),r.a.createElement(Rn.Provider,{value:this.handleSelect},r.a.createElement(_n.Provider,{value:this.state.navContext},r.a.createElement(n,Object(d.a)({},o,{onKeyDown:this.handleKeyDown,ref:this.attachRef}))))},t}(r.a.Component),Nn=Sn()([Rn,Ln],function(e,t,n){var o=n.role;return t?{activeKey:t.activeKey,parentOnSelect:e,role:o||"tablist",getControllerId:t.getControllerId,getControlledId:t.getControlledId}:{parentOnSelect:e}},On),Fn=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,i=e.children,a=e.as,s=void 0===a?"div":a,l=Object(ye.a)(e,["bsPrefix","className","children","as"]);return n=Me(n,"nav-item"),r.a.createElement(s,Object(d.a)({},l,{ref:t,className:we()(o,n)}),i)});Fn.displayName="NavItem";var An=Fn,In=r.a.forwardRef(function(e,t){var n=e.active,i=e.className,a=e.tabIndex,s=e.eventKey,l=e.onSelect,u=e.onClick,c=e.as,p=Object(ye.a)(e,["active","className","tabIndex","eventKey","onSelect","onClick","as"]),h=Mn(s,p.href),f=Object(o.useContext)(Rn),m=Object(o.useContext)(_n),g=n;m&&(p.role||"tablist"!==m.role||(p.role="tab"),p["data-rb-event-key"]=h,p.id=m.getControllerId(h),p["aria-controls"]=m.getControlledId(h),g=null==n&&null!=h?m.activeKey===h:n),"tab"===p.role&&(p.tabIndex=g?a:-1,p["aria-selected"]=g);var v=Wt(function(e){u&&u(e),null!=h&&(l&&l(h,e),f&&f(h,e))});return r.a.createElement(c,Object(d.a)({},p,{ref:t,onClick:v,className:we()(i,g&&"active")}))});In.defaultProps={disabled:!1};var Hn=In,zn={disabled:!1,as:lt},jn=r.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.disabled,i=e.className,a=e.href,s=e.eventKey,l=e.onSelect,u=e.as,c=Object(ye.a)(e,["bsPrefix","disabled","className","href","eventKey","onSelect","as"]);return n=Me(n,"nav-link"),r.a.createElement(Hn,Object(d.a)({},c,{href:a,ref:t,eventKey:s,as:u,disabled:o,onSelect:l,className:we()(i,n,o&&"disabled")}))});jn.displayName="NavLink",jn.defaultProps=zn;var Bn=jn,Un=r.a.forwardRef(function(e,t){var n,i,a,s=function(e,t){return Object.keys(t).reduce(function(n,r){var i,a=n[En(r)],s=n[r],l=Object(ye.a)(n,[En(r),r].map(Cn)),u=t[r],c=Object(o.useRef)({}),p=Object(o.useState)(a),h=p[0],f=p[1],m=wn(e,r),g=wn(c.current,r);c.current=e,!m&&g&&f(a);var v=e[u],y=Object(o.useCallback)(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];v&&v.apply(void 0,[e].concat(n)),f(e)},[f,v]);return Object(d.a)({},l,((i={})[r]=m?s:h,i[u]=y,i))},e)}(e,{activeKey:"onSelect"}),l=s.as,u=void 0===l?"div":l,c=s.bsPrefix,p=s.variant,h=s.fill,f=s.justify,m=s.navbar,g=s.className,v=s.children,y=s.activeKey,b=Object(ye.a)(s,["as","bsPrefix","variant","fill","justify","navbar","className","children","activeKey"]);c=Me(c,"nav");var w=Object(o.useContext)(xn),E=Object(o.useContext)(Tn);return w?(i=w.bsPrefix,m=null==m||m):E&&(a=E.cardHeaderBsPrefix),r.a.createElement(Nn,Object(d.a)({as:u,ref:t,activeKey:y,className:we()(g,(n={},n[c]=!m,n[i+"-nav"]=m,n[a+"-"+p]=!!a,n[c+"-"+p]=!!p,n[c+"-fill"]=h,n[c+"-justified"]=f,n))},b),v)});Un.displayName="Nav",Un.defaultProps={justify:!1,fill:!1},Un.Item=An,Un.Link=Bn;var Wn=Un,qn=n(26);class Gn{constructor(){this.URL_GetUsers="api/User/GetUserList",this.URL_SetUsers="api/User/SetUserList",this.ID=0}async GetUsersAsync(){return await me(this.URL_GetUsers,"Post").then(function(e){return e.Successe&&(this.Groups=e.Groups),e}.bind(this))}async SetUsersAsync(e){return await me(this.URL_SetUsers,"Post",e).then(function(e){return e}.bind(this))}CreateUser(){return this.ID--,{ID:this.ID,Name:"NewUser"+this.ID,Password:"QWERTY",Active:!0,Changes:2,Groups:this.Groups.map(e=>({ID:e.ID,Name:e.Name,EnterInGroup:"Пользователи"==e.Name}))}}CreateStubUser(){return{Users:[],ShoGroups:!1,UserGroups:{ID:-1,Name:"",Password:"",Active:!1,Changes:-1,Groups:[{ID:-11,Name:"",EnterInGroup:!1}]}}}}class Vn extends se{constructor(e){super(e,"UserListControl"),this.userServices=new Gn,this.state={Users:[],ShoGroups:!1,UserGroups:this.userServices.CreateStubUser()},this.columns=[{title:"ID",field:"ID"},{title:"Name",field:"Name",editor:"input"},{title:"Password",field:"Password",editor:"input"},{title:"Active",field:"Active",editor:"tick"},{title:"Groups",formatter:this.ButtonFormatter,align:"center",cellClick:this.OnGroupsClick},{title:"Delete",formatter:this.ButtonFormatter,align:"center",cellClick:this.DeleteUserClick}],this.columns_groups=[{title:"ID",field:"ID"},{title:"Name",field:"Name"},{title:"EnterInGroup",field:"EnterInGroup",editor:"tick"}],this.DownloadUsers()}DownloadUsers(){this.userServices.GetUsersAsync().then(function(e){let t=e.Users;this.Groups=e.Groups,this.setState({Users:t})}.bind(this))}UploadUsers(){this.userServices.SetUsersAsync(this.state.Users).then(function(e){e.Successe?nt.MesOk(e.ResMessage,"Save"):nt.MesEr(e.ResMessage,"Save"),this.DownloadUsers()}.bind(this))}ButtonFormatter(e,t,n){return"<i class='fa fa-print'><button>Action</button></i>"}OnCellChange(e){let t=this.state.Users,n=e.getRow()._row.data.ID;var o=t.filter(e=>e.ID===n)[0];0===o.Changes&&(o.Changes=1)}OnCellChange_Groups(e){0===this.state.UserGroups.Changes&&(this.state.UserGroups.Changes=1)}UpdateClick(){this.DownloadUsers()}CreateUserCick(){let e=this.userServices.CreateUser(),t=this.state.Users;t.push(e),this.setState({Users:t})}DeleteUserClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users,r=o.filter(e=>e.ID===n)[0];2===r.Changes?o.splice(o.findIndex(e=>e.ID===n),1):r.Changes=3,this.setState({Users:o})}OnGroupsClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users.filter(e=>e.ID===n)[0];this.setState({ShoGroups:!0,UserGroups:o})}OnGroupsClose(){this.setState({ShoGroups:!1})}render(){return r.a.createElement("div",null,r.a.createElement("button",{onClick:this.CreateUserCick},"CreateUser"),r.a.createElement("button",{onClick:this.DownloadUsers},"Update(Изменения будут утеряны)"),r.a.createElement("button",{onClick:this.UploadUsers},"SaveChanges"),r.a.createElement(qn.ReactTabulator,{ref:"table",data:this.state.Users.filter(e=>3!=e.Changes),columns:this.columns,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange}),r.a.createElement(pn,{ref:"Modal",show:this.state.ShoGroups,onHide:this.OnGroupsClose,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},r.a.createElement(pn.Header,{closeButton:!0},r.a.createElement(pn.Title,null,"User Groups: ",this.state.UserGroups.ID+" "+this.state.UserGroups.Name)),r.a.createElement(pn.Body,null,r.a.createElement(qn.ReactTabulator,{ref:"table_UserGroups",data:this.state.UserGroups.Groups,columns:this.columns_groups,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange_Groups})),r.a.createElement(pn.Footer,null,r.a.createElement(ct,{variant:"secondary",onClick:this.OnGroupsClose},"Close"))))}}class Yn extends se{constructor(e){super(e,"AdministratorPage"),this.state={ActiveWindows:0},this.authServices=new ge}OnUsersClick(){this.setState({ActiveWindows:0})}OnGroupsClick(){this.setState({ActiveWindows:1})}render(){return r.a.createElement("div",null,r.a.createElement("hr",null),r.a.createElement(ve,{ref:"MenuControl",ParentComponent:this}),r.a.createElement("hr",null),this.authServices.IsAuth()?r.a.createElement("div",null,r.a.createElement(Wn,{variant:"tabs"},r.a.createElement(Wn.Item,null,r.a.createElement(Wn.Link,{onClick:this.OnUsersClick},"Users")),r.a.createElement(Wn.Item,null,r.a.createElement(Wn.Link,{onClick:this.OnGroupsClick}," Groups"))),0==this.state.ActiveWindows?r.a.createElement("div",null,r.a.createElement(Vn,{ref:"UserListControl"})):r.a.createElement("div",null,"GroupsWindow")):r.a.createElement("p",null,"Вы не авторизованы"))}}a.a.render(r.a.createElement(class extends se{constructor(e){super(e,"RouteSystem")}render(){return r.a.createElement(H,null,r.a.createElement(V,null,r.a.createElement(ee,{ref:"CurrentPage",exact:!0,path:"/",component:bn}),r.a.createElement(ee,{ref:"CurrentPage",exact:!0,path:"/App",component:bn}),r.a.createElement(ee,{ref:"CurrentPage",exact:!0,path:"/index.html",component:bn}),r.a.createElement(ee,{ref:"CurrentPage",path:"/?ID=:ID",component:bn}),r.a.createElement(ee,{ref:"CurrentPage",path:"/Admin",component:Yn})))}},null),document.getElementById("App")),console.log("index.js")}]);
//# sourceMappingURL=app_bundle.js.map
\ No newline at end of file
diff --git a/FileServer/Web/Scripts/app_bundle.js.map b/FileServer/Web/Scripts/app_bundle.js.map
index 544fe63..1f23015 100644
--- a/FileServer/Web/Scripts/app_bundle.js.map
+++ b/FileServer/Web/Scripts/app_bundle.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/react/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/react-autobind/index.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/react-tabulator/lib/Utils.js","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/react-tabulator/lib/index.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/@restart/context/forwardRef.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/react-overlays/ModalManager.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulator.js","webpack:///./node_modules/pick-react-known-prop/dist/index.js","webpack:///./node_modules/react-tabulator/lib/ConfigUtils.js","webpack:///./node_modules/tabulator-tables/dist/js/tabulator.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/react-overlays/utils/getContainer.js","webpack:///./node_modules/react-overlays/Modal.js","webpack:///./node_modules/dom-helpers/transition/end.js","webpack:///./node_modules/@restart/context/mapContextToProps.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-autobind/lib/autoBind.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/react-dom/server.browser.js","webpack:///./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack:///./node_modules/react-tabulator/lib/React15Tabulator.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulatorExample.js","webpack:///./node_modules/react-tabulator/lib/editors/DateEditor.js","webpack:///./node_modules/react-tabulator/lib/editors/MultiSelectEditor.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/ReactTags.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Tag.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Input.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Suggestions.js","webpack:///./node_modules/react-tabulator/lib/formatters/MultiValueFormatter.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/react-overlays/utils/isOverflowing.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/react-overlays/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/Portal.js","webpack:///./node_modules/react-overlays/WaitForContainer.js","webpack:///./node_modules/react-overlays/utils/ownerDocument.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/formatters/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./src/Tools/LogTools.js","webpack:///./src/Tools/Configuration.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./src/Tools/ApiQuery.js","webpack:///./src/Services/AuthServices.js","webpack:///./src/React/Controls/MenuControl.jsx","webpack:///./node_modules/react-bootstrap/es/ThemeProvider.js","webpack:///./node_modules/react-bootstrap/es/utils/createWithBsPrefix.js","webpack:///./node_modules/react-bootstrap/es/FormContext.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/Feedback.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormCheckInput.js","webpack:///./node_modules/react-bootstrap/es/FormCheckLabel.js","webpack:///./node_modules/react-bootstrap/es/FormCheck.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/react-bootstrap/es/FormLabel.js","webpack:///./node_modules/react-bootstrap/es/FormText.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./src/Tools/Notification.js","webpack:///./src/React/Controls/UserControl.jsx","webpack:///./src/Services/FileExplorerServices.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./src/React/Controls/FileExplorer/FileExplorerRow.jsx","webpack:///./src/React/Controls/FileExplorer/FileExplorerControl.jsx","webpack:///./src/Tools/Sort.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/utils/triggerBrowserReflow.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack:///./node_modules/@restart/hooks/esm/useEventCallback.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/ModalContext.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/react-bootstrap/es/utils/divWithClassName.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/utils/BootstrapModalManager.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./src/React/Controls/FileExplorer/ExplorerActionsControl.jsx","webpack:///./src/Services/UploadServices.js","webpack:///./src/React/Controls/FileExplorer/UploaderControl.jsx","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./src/React/Controls/BootstrapControl.jsx","webpack:///./src/React/Pages/FileExplorerPage.jsx","webpack:///./node_modules/uncontrollable/esm/utils.js","webpack:///./node_modules/uncontrollable/esm/hook.js","webpack:///./node_modules/react-bootstrap/es/NavbarContext.js","webpack:///./node_modules/react-bootstrap/es/CardContext.js","webpack:///./node_modules/react-bootstrap/es/SelectableContext.js","webpack:///./node_modules/react-bootstrap/es/NavContext.js","webpack:///./node_modules/react-bootstrap/es/TabContext.js","webpack:///./node_modules/react-bootstrap/es/AbstractNav.js","webpack:///./node_modules/react-bootstrap/es/NavItem.js","webpack:///./node_modules/react-bootstrap/es/AbstractNavItem.js","webpack:///./node_modules/react-bootstrap/es/NavLink.js","webpack:///./node_modules/react-bootstrap/es/Nav.js","webpack:///./src/Services/UserServices.js","webpack:///./src/React/Controls/Admin/UserListControl.jsx","webpack:///./src/React/Pages/AdministratorPage.jsx","webpack:///./src/React/RouteSystem.jsx","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_extends","assign","target","arguments","length","source","apply","this","__webpack_exports__","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","arg","argType","push","Array","isArray","inner","join","default","undefined","obj","_inheritsLoose","subClass","superClass","constructor","__proto__","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","error","warning","condition","format","a","b","e","f","Error","args","argIndex","replace","framesToPop","_default","window","document","createElement","element","selector","found","maybeID","maybeClass","nameOnly","slice","simpleSelectorRE","test","getElementById","getElementsByClassName","toArray","getElementsByTagName","querySelectorAll","Function","node","ownerDocument","_interopRequireDefault","recalc","size","_inDOM","scrollDiv","style","position","top","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","css","transforms","props","_camelizeStyle","_getComputedStyle2","getPropertyValue","_hyphenateStyle","forEach","_isTransform","_removeStyle","_properties","transform","cssText","React","react_dom_1","clone","JSON","parse","stringify","isSameArray","reactFormatter","JSX","cell","formatterParams","onRendered","cellEl","getElement","CompWithMoreProps","cloneElement","render","querySelector","__WEBPACK_AMD_DEFINE_ARRAY__","define","$","$container","listener","previousToast","toastId","toastType","info","success","toastr","clear","$toastElement","clearOptions","options","getOptions","getContainer","clearToast","toastsToClear","children","clearContainer","remove","removeToast","message","title","optionsOverride","notify","type","iconClass","iconClasses","subscribe","callback","version","containerId","attr","addClass","positionClass","appendTo","createContainer","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","publish","map","extend","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","state","startTime","Date","toastClass","suffix","escapeHtml","append","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showDuration","showEasing","onShown","timeOut","setTimeout","hideToast","parseFloat","getTime","setInterval","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","event","stopPropagation","cancelBubble","onCloseClick","debug","log","override","method","closeMethod","closeDuration","closeEasing","clearTimeout","onHidden","endTime","extendedTimeOut","stop","percentage","is","ReactTabulator_1","React15Tabulator_1","ReactTabulatorExample_1","Utils_1","ReactTabulator","React15Tabulator","ReactTabulatorExample","_on","on","_off","off","_filter","filter","_listen","listen","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","split","letter","shouldUseNative","from","symbols","to","_typeof","iterator","_react2","_createChainableTypeChecker2","propName","componentName","location","propFullName","propValue","propType","isValidElement","nodeType","validate","checkType","isRequired","componentNameSafe","propFullNameSafe","_len","_key","concat","chainedCheckType","renderFn","_temp","_ref","propTypes","defaultProps","_ref$allowFallback","allowFallback","_ref$displayName","displayName","ref","_react","forwardRef","string","rHyphen","_","chr","toUpperCase","_class","_style","_scrollbarSize","_isOverflowing","_manageAriaHidden","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","data","scrollbarSize","_proto","isContainerOverflowing","modal","containerIndexFromModal","overflowing","arr","cb","idx","some","setContainerStyle","containerState","container","paddingRight","parseInt","removeContainerStyle","add","className","modalIdx","containerIdx","hideSiblings","splice","removeClass","showSiblings","_data$modals","backdrop","dialog","ariaHidden","isTopModal","extendStatics","__extends","setPrototypeOf","__","__assign","ReactDOM","pick_react_known_prop_1","ConfigUtils_1","Tabulator","default_1","_super","_this","htmlProps","mainId","Math","floor","random","table","pickValidHTMLProps","pickHTMLProps","componentDidMount","domEle","findDOMNode","that","_a","columns","propOptions","propsToOptions","layout","tableBuilding","dataLoaded","setState","componentWillUnmount","destroy","getDerivedStateFromProps","noData","componentDidUpdate","setData","data-instance","Component","id","loaded","pickSVGProps","_pickHtmlProps2","_pickSvgProps2","_htmlAttributes2","_pickProps2","ReactHTMLAttrs","reduce","attrs","prop","Boolean","abbr","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","challenge","charset","checked","cite","class","cols","colSpan","command","content","contentEditable","contextMenu","controls","coords","crossOrigin","dateTime","defer","dir","disabled","download","draggable","dropzone","encType","for","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","hidden","high","href","hrefLang","htmlFor","httpEquiv","icon","inputMode","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","list","loop","manifest","max","maxLength","media","mediaGroup","min","minLength","multiple","muted","noValidate","open","optimum","pattern","ping","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","shape","sizes","sortable","span","spellCheck","src","srcDoc","srcSet","start","step","tabIndex","translate","typeMustMatch","useMap","wmode","wrap","_lodash","_lodash2","out","objectTag","func","funcProto","objectProto","funcToString","toString","objectCtorString","objectToString","getPrototype","getPrototypeOf","isObjectLike","result","isHostObject","proto","Ctor","_svgAttributes2","accentHeight","accumulate","additive","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","azimuth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clipPathUnits","contentScriptType","contentStyleType","cx","cy","descent","diffuseConstant","divisor","dur","dx","dy","edgeMode","elevation","end","exponent","externalResourcesRequired","fill","filterRes","filterUnits","fontFamily","fontSize","fontStretch","fontStyle","fx","fy","g1","g2","glyphame","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","horizOriginY","ideographic","in","in2","intercept","k","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","offset","onAbort","onActivate","onBegin","onClick","onEnd","onError","onFocusIn","onFocusOut","onLoad","onMouseDown","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onRepeat","onResize","onScroll","onUnload","onZoom","operator","order","orient","orientation","origin","overlinePosition","overlineThickness","panose1","path","pathLength","patternContentUnits","patternTransform","patternUnits","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","slope","spacing","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","strikethroughPosition","strikethroughThickness","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","u1","u2","underlinePosition","underlineThickness","unicode","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","values","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","widths","x","xHeight","x1","x2","xChannelSelector","xlink","xml","y","y1","y2","yChannelSelector","z","zoomAndPan","alignmentBaseline","baselineShift","clipPath","clipRule","clip","colorInterpolationFilters","colorInterpolation","colorProfile","colorRendering","color","cursor","direction","display","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontSizeAdjust","fontVariant","fontWeight","glyphOrientationHorizontal","glyphOrientationVertical","imageRendering","kerning","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","mask","opacity","pointerEvents","shapeRendering","stopColor","stopOpacity","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","stroke","textAnchor","textDecoration","textRendering","unicodeBidi","visibility","wordSpacing","writingMode","server_1","NOOPS","output","_i","defaultOptions_1","opt","callbackNames_1","callbackName","renderToString","__WEBPACK_AMD_DEFINE_FACTORY__","factory","findIndex","predicate","len","thisArg","kValue","find","ColumnManager","blockHozScrollEvent","headersElement","createHeadersElement","createHeaderElement","rowManager","columnsByIndex","columnsByField","scrollLeft","insertBefore","firstChild","el","classList","headerVisible","initialize","setRowManager","manager","getHeadersElement","scrollHorizontal","left","hozAdjust","scrollWidth","marginLeft","modExists","frozenColumns","generateColumnsFromRowData","row","sorter","col","field","isNaN","match","setColumns","self","reset","def","_addColumn","_reIndexColumns","responsiveLayout","redraw","definition","before","nextToColumn","column","Column","colEl","index","findColumnIndex","parentIndex","getTopColumn","nextEl","parentNode","nextSibling","unshift","registerColumnField","registerColumnPosition","reRegisterPosition","_verticalAlignHeaders","minHeight","clearVerticalAlign","getHeight","verticalAlign","columnVertAlign","adjustTableSize","findColumn","subject","ColumnComponent","_getSelf","HTMLElement","getColumnByField","getColumnByIndex","getFirstVisibileColumn","visible","getColumns","getRealColumns","traverse","getDefinitions","active","getDefinition","getDefinitionTree","getComponents","structured","getComponent","getWidth","moveColumn","after","_moveColumnInArray","columnMoved","columnManager","persistentLayout","persistence","save","updateRows","toIndex","fromIndex","cells","scrollToColumn","ifVisible","adjust","Promise","resolve","reject","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","warn","generateCells","generateCell","getFlexBaseWidth","totalWidth","fixedWidth","scrollHeight","clientHeight","minWidth","colWidth","columnMinWidth","addColumn","columnCalcs","activeRows","getMode","reinitializeWidth","reinitialize","deregisterColumn","getField","helpers","elVisible","resetScroll","update","footerManager","_column","getCells","getVisibility","show","isGroup","toggle","delete","getSubColumns","getParentColumn","parent","scrollTo","getTable","headerFilterFocus","setHeaderFilterFocus","reloadHeaderFilter","setHeaderFilterValue","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","contentElement","groupElement","createGroupElement","tooltip","hozAlign","fieldStructure","getFieldValue","setFieldValue","setField","checkDefinition","cellEvents","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","widthStyled","minWidthStyled","widthFixed","_mapDepricatedFunctionality","newCol","attachColumn","checkColumnVisibility","rowHandle","movableRows","moveRow","setHandle","_buildHeader","setAttribute","_this2","defaultOptionList","nestedFieldSeparator","_getNestedData","_getFlatData","_setNesteData","_setFlatData","hideInHtml","htmlOutput","setTooltip","headerTooltip","tooltipsHeader","localize","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","resizableColumns","resizeColumns","initializeColumn","headerFilter","headerFilterPlaceholder","setHeaderFilterColumnPlaceholder","movableColumns","topCalc","bottomCalc","addEventListener","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","headerTapHold","cellEdited","cellEditing","cellEditCancelled","sort","editor","edit","validator","mutator","accessor","cssClass","setMinWidth","tooltips","align","_buildColumnHeaderTitle","titleHolderElement","editableTitle","titleElement","focus","columnTitleChanged","text","_formatColumnHeaderTitle","formatter","contents","params","mockCell","titleFormatter","getFormatter","getValue","titleFormatterParams","Node","innerHTML","dataObj","structure","alignment","parentHeight","getGroupElement","offsetHeight","paddingTop","getFirstColumn","getLastColumn","updateBranches","colDefs","columnVisibilityChanged","silent","responsiveToggle","updateColumnVisibility","matchChildWidths","childWidth","maxWidth","setWidth","setWidthActual","checkCellHeights","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","cellCount","Cell","hideHeaderFilterElements","fitToData","showHeaderFilterElements","clearWidth","deleteCell","RowManager","createHolderElement","tableElement","createTableElement","firstRender","renderMode","activeRowsCount","displayRows","displayRowsCount","scrollTop","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","getTableElement","getRowPosition","setColumnManager","setRenderMode","groupBy","groupRows","scrollHeaders","scrollVertical","ajaxProgressiveLoad","ajax","nextPage","findRow","Row","RowComponent","getRowFromDataObject","getRowFromPosition","scrollToRow","rowTop","_this3","rowIndex","getDisplayRows","rowEl","scrollToRowPosition","scrollToRowIfVisible","elOffset","abs","_virtualRenderFill","renderInPosition","_this4","pagination","_setDataActual","reRenderInPosition","autoColumns","dataLoading","_wipeElements","history","selectRow","clearSelectionData","reactiveData","watchData","refreshActiveData","wipe","deleteRow","blockRedraw","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","rowDeleted","dataEdited","getData","updateGroupRows","addRow","pos","addRowActual","addRows","_this5","findAddRowPos","reverse","item","addRowPos","dispRows","paginationAddRow","page","getPageSize","assignRowToGroup","getGroup","_moveRowInArray","rowAdded","moveRowActual","rowMoved","toGroup","fromGroup","removeRow","insertRow","styleRow","clearData","getRowIndex","findRowIndex","getDisplayRowIndex","nextDisplayRow","rowOnly","nextRow","prevDisplayRow","prevRow","getDataCount","_genRemoteRequest","ajaxSorting","sorters","getSort","paginationDataSentNames","ajaxFiltering","filters","getFilters","setParams","sendRequest","then","catch","filterRefresh","setPage","loadData","sorterRefresh","loadOrignalData","progressiveLoad","stage","skipStage","cancelEdit","selectable","selectablePersistence","deselectRows","resetDisplayRows","frozenRows","isFrozen","getDisplayIndex","setDisplayIndex","getNextDisplayIndex","setDisplayRows","getRows","dataTree","setMaxRows","renderTable","layoutColumnsOnNewData","getVisibleRows","viewable","topEdge","bottomEdge","topFound","topRow","bottomRow","offsetTop","getRenderMode","topOffset","diff","virtualDom","renderStarted","_simpleRender","renderEmptyScroll","renderComplete","_clearVirtualDom","checkClassicModeGroupHeaderWidth","onlyGroupHeaders","paddingBottom","forceMove","holder","topPad","rowsHeight","topPadHeight","heightOccupied","ceil","rowHeight","initialized","normalizeHeight","vDomScrollHeight","countGroups","topDiff","bottomDiff","margin","_addTopRow","_removeBottomRow","_removeTopRow","_addBottomRow","topRowHeight","_quickNormalizeRowHeight","bottomRowHeight","virtualDomBuffer","otherHeight","external","maxHeight","tableWidth","browser","createEvent","initEvent","dispatchEvent","Event","_row","getCell","getIndex","getPosition","pageTo","setPageToRow","move","moveToRow","updateData","select","selectRows","deselect","toggleSelect","toggleRow","isSelected","isRowSelected","freeze","freezeRow","unfreeze","unfreezeRow","treeCollapse","collapseRow","treeExpand","expandRow","treeToggle","getTreeParent","getTreeChildren","reformat","getNextRow","getPrevRow","heightStyled","manualHeight","outerHeight","generateElement","detachElement","initializeRow","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","deleteCells","layoutRow","cellRendered","rowFormatter","resizableRows","resizeRows","reinitializeHeight","setHeight","clearHeight","transformRow","watchRow","_this6","attrname","block","unblock","setValueProcessData","getChildField","rowUpdated","getCellIndex","findCell","findNextEditableCell","nextCell","allowEdit","check","findPrevEditableCell","prevCell","toRow","_this7","deleteActual","_deselectRow","group","recalcRowGroup","CellComponent","_cell","getOldValue","getRow","getColumn","setValue","mutate","restoreOldValue","setValueActual","nav","checkHeight","oldValue","build","_configureCell","textAlign","tooltipGenerationMode","_generateTooltip","_bindClickEvents","_bindTouchEvents","_bindMouseEvents","bindEditor","initializeCell","component","preventDefault","selection","range","createTextRange","moveToElementText","getSelection","createRange","selectNode","removeAllRanges","addRange","_generateContents","formatValue","newValue","changed","transformCell","layoutElement","editCell","editing","getCurrentCell","calcs","next","right","prev","up","down","FooterManager","links","_initialize","footerElement","activate","deactivate","link","footerRedraw","browserSlow","initializeElement","initializeOptions","_create","comms","register","defaultOptions","autoResize","initialSort","initialFilter","initialHeaderFilter","columnHeaderSortMulti","sortOrderReverse","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardPasteParser","clipboardPasteAction","clipboardCopyConfig","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","blob","downloadComplete","downloadConfig","dataTreeElementColumn","dataTreeBranchElement","dataTreeChildIndent","dataTreeChildField","dataTreeCollapseElement","dataTreeExpandElement","dataTreeStartExpanded","dataTreeRowExpanded","dataTreeRowCollapsed","printAsHtml","printFormatter","printHeader","printFooter","printCopyStyle","printVisibleRows","printConfig","selectableRangeMode","selectableRollingSelection","selectableCheck","locale","langs","persistentSort","persistentFilter","persistenceID","persistenceMode","responsiveLayoutCollapseStartOpen","responsiveLayoutCollapseUseFormatters","responsiveLayoutCollapseFormatter","paginationSize","paginationButtonCount","paginationSizeSelector","paginationElement","paginationDataSent","paginationDataReceived","ajaxURL","ajaxURLGenerator","ajaxParams","ajaxConfig","ajaxContentType","ajaxRequestFunc","ajaxLoader","ajaxLoaderLoading","ajaxLoaderError","ajaxProgressiveLoadDelay","ajaxProgressiveLoadScrollMargin","groupStartOpen","groupValues","groupHeader","htmlOutputConfig","movableRowsConnectedTables","movableRowsSender","movableRowsReceiver","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","tableBuilt","rowSelectionChanged","rowSelected","rowDeselected","rowResized","columnResized","htmlImporting","htmlImported","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","groupToggleElement","groupClosedShowCalcs","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","pageLoaded","localized","validationFailed","historyUndo","historyRedo","_clearSelection","empty","_clearObjectPointers","bindModules","tagName","htmlTableImport","parseTable","_buildElement","_loadInitialData","_this8","mod","_detectBrowser","setHeaderFilterPlaceholder","installLang","setLocale","load","setSort","setFilter","resizeTable","print","deregister","unwatchData","clearBindings","ua","navigator","userAgent","setDataFromLocalFile","extensions","_this9","input","file","files","reader","FileReader","readAsText","onload","_setData","onerror","config","blockActiveRequest","inPosition","getUrl","setConfig","setUrl","searchRows","search","searchData","getHtml","htmlTableExport","printFullscreen","getAjaxUrl","replaceData","_this10","responses","addData","_this11","updateOrAddData","_this12","newRows","_this13","_this14","updateOrAddRow","_this15","updateRow","_this16","_this17","fromRow","copyToClipboard","selectorParams","copy","getColumnDefinitions","getColumnLayout","parseColumns","setColumnLayout","mergeDefinition","showColumn","hideColumn","toggleColumn","deleteColumn","_this18","getLocale","getLang","sortList","getSorters","clearSort","addFilter","all","getHeaderFilters","removeFilter","clearFilter","clearHeaderFilter","deselectRow","toggleSelectRow","getSelectedRows","getSelectedData","setMaxPage","_this19","setPageSize","previousPage","getPage","getPageMax","setGroupBy","groups","setGroupStartOpen","setGroupHeader","getGroups","getGroupedData","getCalcResults","getResults","navigatePrev","currentCell","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","undo","redo","getHistoryUndoSize","getHistoryRedoSize","filename","downloadToTab","tableComms","receive","moduleBindings","extendModule","registerModule","plugin","box","getBoundingClientRect","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","deepClone","tables","lookupTable","query","matches","results","matchElement","Layout","modes","fitData","fitDataFill","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","gap","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Localize","bindings","headerFilters","_setLangProp","desiredLocale","language","toLowerCase","prefix","traverseLang","trans","_executeBindings","getText","pathArray","_getLangElement","root","level","rootPath","_loop","binding","items","loading","page_size","first","first_title","last","last_title","prev_title","next_title","Comms","getConnections","selectors","connections","con","send","connection","commsReceived","Accessor","allowedTypes","charAt","lookupAccessor","accessors","dataIn","Ajax","url","urlGenerator","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","loaderPromise","requestOrder","template","trim","defaultLoaderPromise","defaultURLGenerator","initializeProgressive","getParams","_loadDefaultConfig","defaultConfig","_loadDataProgressive","_loadDataStandard","_this20","generateParamsList","serializeParams","encoded","encodeURIComponent","requestNo","_this21","showLoader","hideLoader","showError","contentType","contentTypeFormatters","Accept","credentials","fetch","ok","json","status","statusText","Content-Type","FormData","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","rowsToData","generateRow","recalcGroup","getRowGroup","rowData","bottom","generateRowData","generateTopRow","generateBottomRow","disable","enable","paramKey","hasTopCalcs","hasBottomCalcs","getKey","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","avg","calcParams","precision","sum","Number","toFixed","count","Clipboard","copySelector","copySelectorParams","copyFormatter","copyFormatterParams","pasteParser","pasteAction","htmlElement","blocked","processConfig","generateContent","clipboardData","outerHTML","originalEvent","paste","setPasteParser","setPasteAction","columnHeaders","rowGroups","clipboardCopyHeader","originalSelectionText","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","valid","internal","sel","textRange","selectNodeContents","setSelector","setFormatter","execCommand","copySelectors","copyFormatters","generateSimpleHeaders","generateColumnGroupHeaders","_this22","colData","processColumnGroup","_this23","groupData","subGroup","subGroupData","groupHeadersToRows","parseColumnGroup","rowArray","buildComplexRows","_this24","processGroupData","_this25","getCalcRow","calcData","buildOutput","_this26","generateHTML","parseRowGroupData","calcObj","_this27","oddRow","evenRow","calcRow","firstRow","firstCell","firstGroup","styleCells","headerEl","addCalcRow","processRows","isCalc","j","mapElementStyles","header","headerHolderEl","columnEl","generateHeaders","getComputedStyle","processGroup","groupEl","groupCellEl","lookup","background-color","font-weight","font-family","font-size","border-top","border-left","border-right","border-bottom","fromStyle","userSelection","raw","headerFindSuccess","columnMap","shift","insert","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","dummyEl","firstCol","childArray","controlEl","generateControlElement","cloneNode","marginRight","paddingLeft","_this28","oldControl","replaceChild","_this29","getChildren","child","_this30","generateChildren","sub","_this31","childData","childRow","checkForRestyle","Download","fields","interceptCallback","downloadFunc","downloaders","processColumns","processDefinitions","processData","mime","triggerDownload","columnGroups","processedDefinitions","processDefinition","_this32","maxDepth","processedColumn","depth","downloadTitle","_this33","_this34","newTab","Blob","URL","createObjectURL","msSaveOrOpenBlob","csv","setFileContents","fileContents","titles","delimiter","parseRows","parseGroup","bom","pdf","headerDepth","autoTableParams","rowGroupStyles","fillColor","rowCalcStyles","jsPDFParams","jsPDF","unit","parseValue","parseRow","styles","doc","autoTable","addPageContent","head","documentProcessing","xlsx","sheetName","workbook","SheetNames","Sheets","groupRowIndexs","groupColumnIndexs","calcRowIndexs","generateSheet","sheet","XLSX","utils","sheet_add_aoa","encode_range","merges","merge","generateMerges","rowsToSheet","sheetOnly","sheets","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Edit","mouseClick","recursionBlock","invalidEdit","editable","editorParams","editors","clearEditor","contains","focusCellNoEvent","forceEdit","cellEditor","rendered","blur","cancel","cellValue","onChange","padding","boxSizing","keyCode","textarea","whiteSpace","resize","heightNow","number","blurFunc","removeEventListener","initialValue","listEl","dataItems","displayItems","currentItem","blurable","getUniqueColumnValues","sortValuesList","parseItems","inputValues","curentValue","dataList","displayList","processComplexListItem","listItemFormatter","setCurrentItem","chooseItem","fillList","hideList","cancelItem","stopImmediatePropagation","showList","autocomplete","allItems","filterList","term","intialLoad","searchObjs","searchFunc","showListOnEmpty","current","showInputValue","freetext","allowEmpty","itemList","star","maxStars","getAttribute","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","textOverflow","progress","mouseDrag","mouseDragWidth","percent","handle","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","indeterminate","marginTop","Filter","headerFilterElements","headerFilterColumns","prevSuccess","filterFunc","filterType","tagType","attrType","emptyFunc","headerFilterFunc","headerFilterFuncParams","fieldVal","colVal","generateHeaderFilterElement","filterElement","editorElement","cellWrapper","typingTimer","searchTrigger","_this35","headerElement","oldFilterElement","oldFilterElementIndex","oldColumnIndex","headerFilterEmptyCheck","headerFilterParams","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","filtersToArray","_this36","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","=","filterVal","rowVal","filterParams","<","<=",">",">=","!=","regex","RegExp","like","Format","crossElement","formatters","plaintext","renderedCallback","sanitizeHTML","entityMap","&","\"","'","/","`","emptyToSpace","html","money","integer","decimal","rgx","floatVal","decimalSym","thousandSym","thousand","symbol","symbolAfter","urlPrefix","labelField","urlField","image","truthy","allowTruthy","tick","tickElement","cross","datetime","inputFormat","outputFormat","invalid","invalidPlaceholder","newDatetime","moment","isValid","datetimediff","humanize","date","traffic","percentValue","colors","legend","legendColor","legendAlign","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","collapse","FrozenColumns","leftColumns","rightColumns","leftMargin","rightMargin","rightPadding","initializationMode","scrollEndTimer","edge","frozen","_this37","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","_this38","_this39","FrozenRows","styleRows","GroupComponent","_group","getParentGroup","toggleVisibility","groupManager","Group","generator","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","old","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","initializeGroupHeader","_this40","allowedValues","_createGroup","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","scrollHeader","removeGroup","getHeadersAndRows","noCalc","_visSet","getRowCount","compoment","addBindingsd","childNodes","GroupRows","langValue","lookupFunc","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","History","undoers","redoers","cellEdit","rowAdd","rowDelete","newRow","_rebindRow","rowMove","oldRow","HtmlTableImport","fieldIndex","hasIndex","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","optionsList","attrib","_attribValue","_findCol","exists","textContent","HtmlTableExport","cloneTableStyle","colVisProp","genereateTable","generateHeaderElements","generateBodyElements","_this41","_this42","columnVisCheck","_this43","_this44","bodyEl","text-align","padding-top","padding-left","padding-right","padding-bottom","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","mergedBindings","mapBindings","bindEvents","_this45","_loop2","actions","mapBinding","symbolsList","ctrl","code","checkBinding","ctrlKey","shiftKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","keyBlock","newPos","scrollMax","navLeft","navRight","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","touches","pageX","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectedTable","connectedRow","mouseup","tableRowDrop","pageY","previousSibling","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connect","disconnect","dropComplete","sender","senders","receiver","receivers","fromTable","toTable","Mutator","enabled","lookupMutator","mutators","mutatorEdit","Page","pageSizes","button","pagesElement","firstBut","prevBut","nextBut","lastBut","pageSizeSelect","generatePageSizeSelectList","_this46","itemEl","pageSelectLabel","_key2","paginationDataReceivedNames","trigger","_this47","_this48","_setPageButtons","leftSize","rightSize","_generatePageButton","_this49","_this50","_this51","_getRemotePage","oldParams","pageParams","_this52","_parseRemoteData","last_page","footer","current_page","Persistence","persistProps","localStorage","retreiveData","getItem","cookie","cookiePos","substr","oldCols","newCols","_findColumn","validateSorters","saveData","setItem","expireDate","setDate","getDate","toUTCString","definitions","Print","manualBlock","replaceTable","cleanup","footerContent","scrollX","scrollY","footerEl","tableEl","ReactiveData","origFuncs","currentVersion","configurable","pop","startRow","oldRows","writable","watchKey","getOwnPropertyDescriptor","set","unwatchRow","ResizeColumns","startColumn","startWidth","prevHandle","variableHeight","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","resizable","mouseMove","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","ResizeObserver","entry","observe","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","formatCollapsedData","responsive","generateCollapsedContent","generateCollapsedRowContent","working","generateCollapsedRowData","mockCellComponent","listContents","div","SelectRow","selecting","lastClickedRow","selectPrev","selectedRows","_rowSelectionChanged","endSelect","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","metaKey","toggledRow","_selectRow","rowInfo","selectedRow","Sort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","newSortList","findSorter","clearColumnHeaders","setColumnHeader","_sortItem","_sortRow","el1Comp","el2Comp","el1","el2","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","localeCompare","time","boolean","array","calc","alphanum","as","bs","a1","b1","L","rd","isFinite","Validate","_extractValidator","parts","_buildValidator","parameters","validators","float","numeric","unique","cellData","eventName","handler","capture","attachEvent","srcElement","currentTarget","detachEvent","context","compareDocumentPosition","fallback","baseVal","_camelize","msPattern","animationEnd","animationDelay","animationTiming","animationDuration","animationName","transitionEnd","transitionDuration","transitionDelay","transitionTiming","transitionProperty","_getTransitionPropert","vendorMap","O","Moz","Webkit","ms","vendors","vendor","getTransitionProperties","timing","delay","defaultContainer","_reactDom","_activeElement","_contains","_propTypes","_componentOrElement","_elementType","_ModalManager","_Portal","_getContainer","_ownerDocument","_assertThisInitialized","ReferenceError","modalManager","Modal","_React$Component","_args","exited","onPortalRendered","onShow","containerClassName","removeKeydownListener","handleDocumentKeyDown","removeFocusListener","enforceFocus","onHide","restoreFocus","restoreLastFocus","setDialogRef","setBackdropRef","handleHidden","_this$props","onExited","handleBackdropClick","onBackdropClick","keyboard","onEscapeKeyDown","_isMounted","currentActiveElement","renderBackdrop","_this$props2","Transition","backdropTransition","appear","nextProps","transition","getSnapshotBeforeUpdate","prevProps","lastFocus","_this$props3","_this$props4","renderDialog","_this$props4$role","onExit","onExiting","onEnter","onEntering","onEntered","dialogProps","aria-modal","newProps","omitProps","unmountOnExit","Fragment","bool","oneOfType","oneOf","Manager","backup","fakeEvent","done","parseDuration","_parseDuration","str","mult","maybeOpts","mapToProps","$mapContextToProps","consumers","_forwardRef","getDisplayName","ensureConsumer","Consumer","maybeArrayOfConsumers","_ref$forwardRefAs","forwardRefAs","SingleConsumer","contextTransform","_extends2","propsWithRef","_extends3","reduceRight","Context","_len2","contexts","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","exec","escaped","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","token","segment","attachKeys","re","flags","sensitive","strict","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","q","u","v","w","aa","ba","A","B","g","h","ca","C","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","D","E","refs","updater","F","G","isReactComponent","forceUpdate","H","isPureReactComponent","I","J","K","__self","__source","M","$$typeof","_owner","N","P","Q","keyPrefix","R","U","S","T",":","escape","ea","fa","V","da","W","X","Children","only","createRef","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","_context","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","StrictMode","Suspense","createFactory","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","Y","Z","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","Da","Ea","Fa","Ga","Ha","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","animation","Xa","Ya","Za","$a","ab","bb","db","eb","fb","gb","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","ib","eventPool","jb","destructor","hb","getPooled","persist","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","vb","detail","wb","zb","xb","altKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","datetime-local","email","month","password","tel","week","Mb","nodeName","Nb","correspondingUseElement","Ob","Pb","Rb","_valueTracker","stopTracking","Qb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","_debugOwner","_debugSource","fileName","lineNumber","kc","lc","mc","nc","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","rc","sc","tc","pc","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","controlled","xc","yc","zc","Ac","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","clientX","clientY","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","sibling","gd","elapsedTime","pseudoElement","jd","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","od","pd","dataTransfer","qd","targetTouches","changedTouches","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Nd","HTMLIFrameElement","contentWindow","Od","Qd","focusedElem","selectionRange","Md","selectionStart","selectionEnd","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","Zd","ae","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","mathml","svg","ge","he","ie","je","MSApp","execUnsafeLocalFunction","namespaceURI","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","me","ne","oe","setProperty","substring","pe","menuitem","area","base","br","embed","hr","img","keygen","meta","param","track","wbr","qe","se","te","ue","ve","we","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","He","Ie","Je","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","elementType","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","Ve","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","jf","kf","baseState","tf","_reactInternalFiber","lf","nf","mf","payload","of","pf","qf","rf","sf","uf","shouldComponentUpdate","vf","contextType","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","UNSAFE_componentWillMount","componentWillMount","zf","Af","_stringRef","Bf","Cf","Map","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","pg","lastRenderedReducer","dispatch","qg","lastRenderedState","eagerReducer","eagerState","rg","deps","sg","tg","ug","vg","wg","readContext","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","Qg","getDerivedStateFromError","Rg","pendingContext","Sg","timedOutAt","Tg","Ug","hf","We","hydrate","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","stack","kh","lh","mh","nh","oh","ph","WeakSet","qh","rh","sh","th","vh","wh","xh","yh","_reactRootContainer","zh","wasMultiple","Ce","uh","hi","Xh","has","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Zh","pendingCommitExpirationTime","ef","Pd","Yh","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","Ri","Ti","Mi","commit","unmount","createBatch","Vi","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","Wi","Xi","global","previous","priorityLevel","requestAnimationFrame","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","objPrototype","toBind","descriptor","wontBind","fn","boundFn","boundMethod","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","any","arrayOf","instanceOf","objectOf","exact","checkPropTypes","PropTypes","noGlobal","getProto","class2type","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","jQuery","init","rtrim","isArrayLike","jquery","num","pushStack","elems","ret","prevObject","each","elem","eq","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","makeArray","inArray","second","grep","invert","callbackExpect","guid","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","booleans","whitespace","identifier","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escapedWhitespace","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","nid","newSelector","newContext","qsa","toSelector","testContext","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","what","simple","forward","ofType","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","not","matcher","unmatched","elemLang","hash","hasFocus","selectedIndex","even","odd","lt","gt","radio","checkbox","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","special","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","tr","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","buildFragment","scripts","ignored","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","checkClone","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","isSimulated","offsetX","offsetY","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","replaceWith","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","rboxStyle","curCSS","computed","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","border","expand","expanded","propHooks","run","eased","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","accepts","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","finalText","crossDomain","host","hasContent","ifModified","beforeSend","nativeStatusText","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","parentOffset","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","Uint16Array","listing","pre","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","read","fallbackFrame","renderDOM","Infinity","renderToStaticMarkup","renderToNodeStream","renderToStaticNodeStream","DateEditor_1","MultiSelectEditor_1","MultiValueFormatter_1","alert","age","dob","rating","passed","pets","colorOptions","red","green","yellow","editableColumns","data-custom-attr","newData","date_fns_1","inputCss","Editor","setValueOnSuccess","ev","onKeyPress","onBlur","valueDt","awareOfUnicodeTokens","onKeyUp","ReactTags","autofocus","handleDelete","newValues","handleAddition","handleBlur","parentElement","suggestions","tags","allowNew","autoresize","minQueryLength","Tag","Input","Suggestions","KEYS","CLASS_NAMES","rootFocused","selectedTag","selectedTagName","searchInput","suggestionActive","suggestionDisabled","superclass","focused","expandable","inputEventHandlers","onFocus","handleFocus","onInput","handleInput","onKeyDown","handleKeyDown","handleInputChange","ref$1","delimiters","delimiterChars","handleDelimiter","allowBackspace","deleteTag","suggestion","addTag","handleClick","addOnBlur","handleValidate","clearInputOnDelete","this$1","TagComponent","tagComponent","onDelete","aria-live","aria-relevant","inputAttributes","listboxId","suggestionsFilter","maxSuggestionsLength","SIZER_STYLES","STYLE_PROPS","inputWidth","copyInputStyles","updateInputWidth","inputStyle","sizer","aria-autocomplete","aria-label","aria-owns","aria-activedescendant","aria-expanded","escapeForRegExp","markIt","filterSuggestions","handleMouseDown","aria-disabled","createCellEl","_querySelectorAll","_reactIs","isValidElementType","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","_addClass","_removeClass","_hasClass","replaceClassName","origClass","classToRemove","_hyphenate","rUpper","currentStyle","rposition","runStyle","runtimeStyle","rsLeft","pixelLeft","removeProperty","supportedTransforms","_isWindow","innerWidth","bodyIsOverflowing","_ref2","_ref3","BLACKLIST","exclude","_WaitForContainer","onContainerResolved","WaitForContainer","setContainer","_container","componentOrElement","_createChainableTypeChecker","toInteger","dirtyNumber","NaN","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","dirtyOptions","additionalDigits","RangeError","dateStrings","dateString","timeString","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","setUTCFullYear","validateDate","dayOfYear","isLeapYear","isLeapYearIndex","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","parseDate","timestamp","hours","minutes","validateTime","seconds","parseTime","timezoneString","absoluteOffset","validateTimezone","parseTimezone","isoWeekYear","getUTCDay","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","addDays","dirtyAmount","amount","addMilliseconds","addHours","startOfWeek","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","getDay","setHours","cloneObject","dirtyObject","startOfISOWeek","startOfWeekOptions","getISOWeekYear","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","startOfDay","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","setISOWeekYear","dirtyISOWeekYear","addISOWeekYears","addMinutes","getDaysInMonth","monthIndex","getMonth","lastDayOfMonth","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","setMonth","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","minDistance","timeToCompare","currentDate","distance","closestTo","compareAsc","dateLeft","dateRight","compareDesc","differenceInCalendarISOWeekYears","MILLISECONDS_IN_WEEK","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarMonths","getQuarter","differenceInCalendarQuarters","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","differenceInDays","sign","difference","differenceInMilliseconds","differenceInHours","subISOWeekYears","differenceInISOWeekYears","differenceInMinutes","differenceInMonths","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","eachDayOfInterval","dirtyInterval","startDate","dates","eachWeekOfInterval","endDate","startDateWeek","endDateWeek","weeks","currentWeek","isSunday","isWeekend","eachWeekendOfInterval","dateInterval","weekends","startOfMonth","endOfMonth","eachWeekendOfMonth","startOfYear","cleanDate","endOfYear","eachWeekendOfYear","endOfDay","endOfDecade","decade","endOfHour","setMinutes","endOfWeek","endOfISOWeek","endOfWeekOptions","endOfISOWeekYear","setMilliseconds","getMilliseconds","endOfMinute","endOfQuarter","currentMonth","endOfSecond","formatDistanceLocale","lessThanXSeconds","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","formatDistance","addSuffix","comparison","formatRelative","baseDate","ordinalNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","defaulFormattingWidth","parsePattern","parseResult","firstWeekContainsDate","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","getUTCFullYear","getUTCISOWeek","startOfUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","getUTCWeek","firstWeek","startOfUTCWeekYear","dayPeriodEnum","addLeadingZeros","targetLength","formatTimezone","dirtyDelimeter","delimeter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezoneShort","signedYear","signedWeekYear","weekYear","getUTCMonth","isoWeek","dayOfMonth","setUTCMonth","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","timezoneOffset","_originalDate","originalDate","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","defaultLocale","utcDate","formatterOptions","firstCharacter","longFormatter","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","dirtyBaseDate","localizeOptions","months","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethodFn","roundingMethod","utcBaseDate","fromUnixTime","dirtyUnixTime","getDayOfYear","getDaysInYear","getDecade","getHours","getISODay","getISOWeek","getISOWeeksInYear","thisYear","valueOf","getMinutes","getOverlappingDaysInIntervals","differenceInMs","getSeconds","getUnixTime","getWeekYear","startOfWeekYear","getWeek","getWeekOfMonth","startWeekDay","getWeeksInMonth","getYear","isAfter","isBefore","isDate","isEqual","dirtyLeftDate","dirtyRightDate","isFirstDayOfMonth","isFriday","isLastDayOfMonth","isMonday","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameWeekOptions","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","startOfMinute","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameMonth","startOfQuarter","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameYear","isSaturday","isThursday","isTuesday","isWednesday","isWithinInterval","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfWeekOptions","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","setUTCDay","dirtyDay","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","parsers","priority","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","formatString","subFnOptions","setters","dateToSystemTimezone","uniquePrioritySetters","setterArray","convertedDate","roundToNearestMinutes","dirtyNearestTo","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","currentDay","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyMilliseconds","dirtyMinutes","dirtyMonth","setQuarter","dirtyQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","subDays","subHours","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","formatDistance_formatDistance","formatRelative_formatRelative","lastDayOfMonth_lastDayOfMonth","isAbsolute","pathname","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","part","valueEqual","isProduction","invariant","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unlisten","_possibleConstructorReturn","Router","instance","Constructor","_classCallCheck","computeMatch","_inherits","router","isExact","BrowserRouter","createHistory","patternCache","cacheCount","compilePath","cacheKey","compiledPattern","matchPath","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","Switch","_element$props","pathProp","computedMatch","isEmptyChildren","Route","nextContext","_context$router","staticContext","Log","Configuration","isModifiedEvent","Link","innerRef","_objectWithoutProperties","ApiQuery","AuthServices_AuthServices","URL_Auth","URL_UserInfo","AuthCoockieName","[object Object]","login","Login","Password","Successe","_SetTocken","Token","Logout","IsAuth","_GetTocken","_getCookie","decodeURIComponent","MenuControl","super","autoBind","authServices","AuthServices","OnAuthChange","react_default","es_Link","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","ThemeProvider","pascalCase","camelize","createWithBsPrefix","_ref$Component","BsComponent","bsPrefix","_ref2$as","resolvedPrefix","FormContext","controlId","FormGroup","_ref$as","Feedback","FormControl","_classes","isInvalid","_classes2","_classes3","FormCheckInput","isStatic","_useContext","custom","FormCheckLabel","FormCheck","inline","feedback","innerFormContext","hasLabel","Label","DEVICE_SIZES","Col","spans","brkPoint","_propValue$span","infix","FormLabel","srOnly","FormText","Form","validated","Check","Text","Notification_Notification","Timestring","UserControl","UserName","GetUserInfoAsync","ParentComponent","Notification","MesEr","ResMessage","AuthClick","AuthAsync","LogoutClick","es_Form","FileExplorerServices_FileExplorerServices","URL_DirectoryItems","URL_ScanDirectory","URL_Delete","URL_Move","URL_Download","URL_CreateDirectory","elemID","directoryID","NewParent","OpenDownload","dirname","ParentID","Name","createChainedFunction","funcs","acc","isTrivialHref","SafeAnchor","_this$props2$as","Button","variant","FileExplorerRow","ShoSelect","Select","GetDate","GetRowID","GetDataID","IsCheked","OnDirectoryClick","Type","es_Button","Size","FileExplorerControl","ChildRows","fileExplorerServices","FileExplorerServices","LoadDirectory","OnBackClick","SetID","OnSortClick","SortProperty","orders","ArrayCompare","GetID","DirectoryGetItemsAsync","OnScanDirClick","ScanDirectoryAsync","GetSelectedID","RooDirectoryID","ParentName","LogicPath","FileExplorerRow_FileExplorerRow","esm_config","UNMOUNTED","EXITED","ENTERING","ENTERED","initialStatus","isMounting","enter","appearStatus","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","childProps","TransitionGroupContext","EXITING","_fadeStyles","fadeStyles","Fade","handleEnter","triggerBrowserReflow","innerProps","ModalDialog","centered","scrollable","dialogClass","useCommittedRef","useEventCallback","CloseButton","aria-hidden","ModalContext","ModalHeader","closeLabel","Selector","dialogAs","BootstrapModalManager","adjustAndStore","actual","dataset","restore","getScrollbarSize","DialogTransition","BackdropTransition","modalContext","setModalRef","_modal","handleDialogMouseDown","_waitingForMouseUp","handleMouseUp","_ignoreBackdropClick","updateDialogStyle","handleEntering","_len3","_key3","handleWindowResize","handleExited","_len4","_key4","backdropClassName","containerIsOverflowing","modalIsOverflowing","_this$props5","dialogClassName","Dialog","clickHandler","baseModalStyle","BaseModal","DecoratedModal","isClassy","_opts","_opts$forwardRefAs","createBootstrapComponent","Body","Header","Title","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","ExplorerActionsControl","ResultMsg","MoveWindowsShow","GetUserList","SaveUserList","OnDownloadClick","OnDeleteClick","promises","DeleteAsync","Result","MesOk","OnItemsChange","OnMoveClick","OnCreateDirectoryClick","DirectoryName","CreateDirectoryAsync","OnMoveWindowCloseClick","SelectedID","OnMoveWindowClick","MoveAsync","es_Modal","aria-labelledby","FileExplorerControl_FileExplorerControl","UploadServices_UploadServices","URL_Start","URL_Upload","URL_Cansel","upload_chunk_size","_ContinueDownload","_file","_ParentID","OnProggresseChange","OnIDReceived","OnError","startByte","stopByte","bin_data","ChunkNumb","State","chunk","parent_id","start_info","_StartUploadAsync","_ReadBlobAsync","_UploadBlobAsync","Msg","Cansel","UploaderControl","ButtonUploadEnable","_state","FileInfo","uploadServices","UploadServices","OnProgresseChange","UploadClick","UploadFileAsync","CancelClick","Process","ButtonToolbar","BootstrapControl","ToastifyTest","Leght","es_ButtonToolbar","FileExplorerPage","Url_ID","searchParams","CurrentID","MenuControl_MenuControl","UserControl_UserControl","ExplorerActionsControl_ExplorerActionsControl","UploaderControl_UploaderControl","BootstrapControl_BootstrapControl","isProp","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","SelectableContext","makeEventKey","eventKey","NavContext","TabContext","AbstractNav","navContext","handleSelect","parentOnSelect","nextActiveChild","getNextActiveChild","rbEventKey","_needsRefocus","attachRef","listNode","activeKey","getControlledId","getControllerId","activeChild","nextIndex","mapContextToProps","tabContext","NavItem","AbstractNavItem","navKey","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","cardHeaderBsPrefix","_useUncontrolled","fieldName","Utils","propsValue","handlerName","_useState","stateValue","wasProp","propsHandler","useUncontrolled","_useUncontrolled$as","justify","navbar","navbarContext","NavbarContext","cardContext","CardContext","Item","UserServices_UserServices","URL_GetUsers","URL_SetUsers","users","UserListControl","Users","ShoGroups","UserGroups","Active","Changes","Groups","EnterInGroup","userServices","UserServices","ButtonFormatter","OnGroupsClick","DeleteUserClick","columns_groups","DownloadUsers","GetUsersAsync","UploadUsers","SetUsersAsync","OnCellChange","data_row","OnCellChange_Groups","UpdateClick","CreateUserCick","new_user","user","OnGroupsClose","lib","AdministratorPage","ActiveWindows","OnUsersClick","es_Nav","UserListControl_UserListControl","es_BrowserRouter","react_router_dom_es_Switch","react_router_dom_es_Route"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,SAIAlC,IAAAmC,EAAA,mCC/EEhC,EAAOD,QAAUkC,EAAQ,kCCHZ,SAASC,IAetB,OAdAA,EAAWvB,OAAOwB,QAAU,SAAUC,GACpC,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CACzC,IAAIsC,EAASF,UAAUpC,GAEvB,IAAK,IAAIuB,KAAOe,EACV5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAC/CY,EAAOZ,GAAOe,EAAOf,IAK3B,OAAOY,IAGOI,MAAMC,KAAMJ,WAf9BxC,EAAAU,EAAAmC,EAAA,sBAAAR,qBCiBElC,EAAOD,QAAUkC,EAAQ,GAARA,iCCjBJ,SAASU,EAA8BJ,EAAQK,GAC5D,GAAc,MAAVL,EAAgB,MAAO,GAC3B,IAEIf,EAAKvB,EAFLmC,EAAS,GACTS,EAAalC,OAAOmC,KAAKP,GAG7B,IAAKtC,EAAI,EAAGA,EAAI4C,EAAWP,OAAQrC,IACjCuB,EAAMqB,EAAW5C,GACb2C,EAASG,QAAQvB,IAAQ,IAC7BY,EAAOZ,GAAOe,EAAOf,IAGvB,OAAOY,EAZTvC,EAAAU,EAAAmC,EAAA,sBAAAC,qBCAA,IAAAK;;;;;;;;;;;CAOC,WACA,aAEA,IAAIC,EAAS,GAAGnB,eAEhB,SAASoB,IAGR,IAFA,IAAIC,EAAU,GAELlD,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAC1C,IAAImD,EAAMf,UAAUpC,GACpB,GAAKmD,EAAL,CAEA,IAAIC,SAAiBD,EAErB,GAAgB,WAAZC,GAAoC,WAAZA,EAC3BF,EAAQG,KAAKF,QACP,GAAIG,MAAMC,QAAQJ,IAAQA,EAAId,OAAQ,CAC5C,IAAImB,EAAQP,EAAWV,MAAM,KAAMY,GAC/BK,GACHN,EAAQG,KAAKG,QAER,GAAgB,WAAZJ,EACV,IAAK,IAAI7B,KAAO4B,EACXH,EAAO7C,KAAKgD,EAAK5B,IAAQ4B,EAAI5B,IAChC2B,EAAQG,KAAK9B,IAMjB,OAAO2B,EAAQO,KAAK,KAGgB1D,EAAOD,SAC3CmD,EAAWS,QAAUT,EACrBlD,EAAOD,QAAUmD,QAGXU,KAAAZ,EAAA,WACL,OAAOE,GADFV,MAAAzC,EAAe,OAAfC,EAAAD,QAAAiD,GAtCP,oBCPDhD,EAAOD,QAAUkC,EAAQ,mBCMzBjC,EAAOD,QANP,SAAgC8D,GAC9B,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CACnCF,QAAWE,kCCFA,SAASC,EAAeC,EAAUC,GAC/CD,EAASlC,UAAYlB,OAAOY,OAAOyC,EAAWnC,WAC9CkC,EAASlC,UAAUoC,YAAcF,EACjCA,EAASG,UAAYF,EAHvBnE,EAAAU,EAAAmC,EAAA,sBAAAoB,mCCEA,SAASK,IAEP,GAC4C,oBAAnCC,gCAC4C,mBAA5CA,+BAA+BD,SAcxC,IAEEC,+BAA+BD,SAASA,GACxC,MAAOE,GAGPC,QAAQC,MAAMF,IAOhBF,GACAnE,EAAOD,QAAUkC,EAAQ,kCClB3B,IAEIuC,EAAU,aA2CdxE,EAAOD,QAAUyE,gCCbjBxE,EAAOD,QA5BS,SAAS0E,EAAWC,EAAQC,EAAGC,EAAGtE,EAAGC,EAAGsE,EAAGC,GAOzD,IAAKL,EAAW,CACd,IAAIF,EACJ,QAAeX,IAAXc,EACFH,EAAQ,IAAIQ,MACV,qIAGG,CACL,IAAIC,EAAO,CAACL,EAAGC,EAAGtE,EAAGC,EAAGsE,EAAGC,GACvBG,EAAW,GACfV,EAAQ,IAAIQ,MACVL,EAAOQ,QAAQ,MAAO,WAAa,OAAOF,EAAKC,SAE3CzE,KAAO,sBAIf,MADA+D,EAAMY,YAAc,EACdZ,kCC1CVxE,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAIyB,IAAgC,oBAAXC,SAA0BA,OAAOC,WAAYD,OAAOC,SAASC,eAEtFxF,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAO,sCCNxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAOR,SAAa6B,EAASC,GACpB,IAIIC,EAJAC,EAA0B,MAAhBF,EAAS,GACnBG,EAA6B,MAAhBH,EAAS,GACtBI,EAAWF,GAAWC,EAAaH,EAASK,MAAM,GAAKL,EAI3D,GAHeM,EAAiBC,KAAKH,GAInC,OAAIF,GACFH,EAAUA,EAAQS,eAAiBT,EAAUF,UACrCI,EAAQF,EAAQS,eAAeJ,IAAa,CAACH,GAAS,IAG5DF,EAAQU,wBAA0BN,EAAmBO,EAAQX,EAAQU,uBAAuBL,IACzFM,EAAQX,EAAQY,qBAAqBX,IAG9C,OAAOU,EAAQX,EAAQa,iBAAiBZ,KApB1C,IAAIM,EAAmB,WACnBI,EAAUG,SAASzE,UAAUJ,KAAKrB,KAAKkG,SAASzE,UAAUzB,KAAM,GAAG0F,OAsBvE9F,EAAOD,QAAUA,EAAO,sCC5BxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAER,SAAuB4C,GACrB,OAAOA,GAAQA,EAAKC,eAAiBlB,UAGvCtF,EAAOD,QAAUA,EAAO,sCCPxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAMR,SAAuB+C,GACrB,KAAKC,GAAiB,IAATA,GAAcD,IACrBE,EAAOjD,QAAS,CAClB,IAAIkD,EAAYvB,SAASC,cAAc,OACvCsB,EAAUC,MAAMC,SAAW,WAC3BF,EAAUC,MAAME,IAAM,UACtBH,EAAUC,MAAMG,MAAQ,OACxBJ,EAAUC,MAAMI,OAAS,OACzBL,EAAUC,MAAMK,SAAW,SAC3B7B,SAAS8B,KAAKC,YAAYR,GAC1BF,EAAOE,EAAUS,YAAcT,EAAUU,YACzCjC,SAAS8B,KAAKI,YAAYX,GAI9B,OAAOF,GAnBT,IAEIA,EAFAC,EAASH,EAAuBxE,EAAQ,KAsB5CjC,EAAOD,QAAUA,EAAO,sCC3BxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAcR,SAAe4C,EAAM3E,EAAUV,GAC7B,IAAIuG,EAAM,GACNC,EAAa,GACbC,EAAQ/F,EAEZ,GAAwB,iBAAbA,EAAuB,CAChC,QAAcgC,IAAV1C,EACF,OAAOqF,EAAKO,OAAM,EAAIc,EAAejE,SAAS/B,MAAc,EAAIiG,EAAmBlE,SAAS4C,GAAMuB,kBAAiB,EAAIC,EAAgBpE,SAAS/B,KAE/I+F,EAAQ,IAAI/F,GAAYV,EAI7BP,OAAOmC,KAAK6E,GAAOK,QAAQ,SAAUxG,GACnC,IAAIN,EAAQyG,EAAMnG,GAEbN,GAAmB,IAAVA,GAEH,EAAI+G,EAAatE,SAASnC,GACnCkG,GAAclG,EAAM,IAAMN,EAAQ,KAElCuG,IAAO,EAAIM,EAAgBpE,SAASnC,GAAO,KAAON,EAAQ,KAJ1D,EAAIgH,EAAavE,SAAS4C,GAAM,EAAIwB,EAAgBpE,SAASnC,MAQ7DkG,IACFD,GAAOU,EAAYC,UAAY,KAAOV,EAAa,KAGrDnB,EAAKO,MAAMuB,SAAW,IAAMZ,GAzC9B,IAAIG,EAAiBnB,EAAuBxE,EAAQ,KAEhD8F,EAAkBtB,EAAuBxE,EAAQ,KAEjD4F,EAAqBpB,EAAuBxE,EAAQ,KAEpDiG,EAAezB,EAAuBxE,EAAQ,KAE9CkG,EAAclG,EAAQ,IAEtBgG,EAAexB,EAAuBxE,EAAQ,KAkClDjC,EAAOD,QAAUA,EAAO,uCClDxBA,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBsG,EAActG,EAAQ,GAI1BlC,EAAQyI,MAHR,SAAe3E,GACX,OAAO4E,KAAKC,MAAMD,KAAKE,UAAU9E,KAerC9D,EAAQ6I,YAZR,SAAqBjE,EAAGC,GACpB,IAAI3E,EAAI0E,EAAErC,OACV,GAAIrC,IAAM2E,EAAEtC,OACR,OAAO,EAEX,KAAOrC,KACH,GAAI0E,EAAE1E,KAAO2E,EAAE3E,GACX,OAAO,EAGf,OAAO,GAgBXF,EAAQ8I,eAbR,SAAwBC,GACpB,OAAO,SAAyBC,EAAMC,EAAiBC,GASnD,OALAA,EAAW,WACP,IAAIC,EAASH,EAAKI,aACdC,EAAoBd,EAAMe,aAAaP,EAAK,CAAEC,KAAMA,IACxDR,EAAYe,OAAOF,EAAmBF,EAAOK,cAAc,qBAExD,uDC/Bf,IAAAC,EAAAxG,EAqdEnD,EAAA,IAvcE4J,EAAO,CAAC5J,EAAA,UAAF+D,KAAAZ,EAAA,SAAuB0G,GACzB,OAAQ,WACJ,IAAIC,EACAC,EAsBAC,EArBAC,EAAU,EACVC,EAAY,CACZxF,MAAO,QACPyF,KAAM,OACNC,QAAS,UACTzF,QAAS,WAGT0F,EAAS,CACTC,MA0EJ,SAAeC,EAAeC,GAC1B,IAAIC,EAAUC,IACTZ,GAAca,EAAaF,GAC3BG,EAAWL,EAAeE,EAASD,IAmB5C,SAAyBC,GAErB,IADA,IAAII,EAAgBf,EAAWgB,WACtB1K,EAAIyK,EAAcpI,OAAS,EAAGrC,GAAK,EAAGA,IAC3CwK,EAAWf,EAAEgB,EAAczK,IAAKqK,GArBhCM,CAAeN,IA7EnBO,OAiFJ,SAAgBT,GACZ,IAAIE,EAAUC,IACTZ,GAAca,EAAaF,GAC5BF,GAAuD,IAAtCV,EAAE,SAAUU,GAAe9H,OAC5CwI,EAAYV,GAGZT,EAAWgB,WAAWrI,QACtBqH,EAAWkB,UAxFftG,MAgBJ,SAAewG,EAASC,EAAOC,GAC3B,OAAOC,EAAO,CACVC,KAAMpB,EAAUxF,MAChB6G,UAAWb,IAAac,YAAY9G,MACpCwG,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KArBXR,aAAcA,EACdR,KAoCJ,SAAce,EAASC,EAAOC,GAC1B,OAAOC,EAAO,CACVC,KAAMpB,EAAUC,KAChBoB,UAAWb,IAAac,YAAYrB,KACpCe,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KAzCXV,QAAS,GACTgB,UA4CJ,SAAmBC,GACf3B,EAAW2B,GA5CXtB,QA+CJ,SAAiBc,EAASC,EAAOC,GAC7B,OAAOC,EAAO,CACVC,KAAMpB,EAAUE,QAChBmB,UAAWb,IAAac,YAAYpB,QACpCc,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KApDXQ,QAAS,QACThH,QAuDJ,SAAiBuG,EAASC,EAAOC,GAC7B,OAAOC,EAAO,CACVC,KAAMpB,EAAUvF,QAChB4G,UAAWb,IAAac,YAAY7G,QACpCuG,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,MAxDf,OAAOd,EAcP,SAASM,EAAaF,EAAS/I,GAG3B,OAFK+I,IAAWA,EAAUC,MAC1BZ,EAAaD,EAAE,IAAMY,EAAQmB,cACdnJ,OACJqH,GAEPpI,IACAoI,EAiFR,SAAyBW,GAMrB,OALAX,EAAaD,EAAE,UACVgC,KAAK,KAAMpB,EAAQmB,aACnBE,SAASrB,EAAQsB,gBAEXC,SAASnC,EAAEY,EAAQlI,SACvBuH,EAvFUmC,CAAgBxB,IAE1BX,GAkEX,SAASc,EAAYL,EAAeE,EAASD,GACzC,IAAI0B,KAAQ1B,IAAgBA,EAAa0B,QAAQ1B,EAAa0B,MAC9D,SAAI3B,IAAkB2B,GAA+C,IAAtCrC,EAAE,SAAUU,GAAe9H,SACtD8H,EAAcE,EAAQ0B,YAAY,CAC9BC,SAAU3B,EAAQ4B,aAClBC,OAAQ7B,EAAQ8B,WAChBC,SAAU,WAAcvB,EAAYV,MAEjC,IA0Df,SAASkC,EAAQtH,GACR4E,GACLA,EAAS5E,GAGb,SAASkG,EAAOqB,GACZ,IAAIjC,EAAUC,IACVa,EAAYmB,EAAInB,WAAad,EAAQc,UAOzC,QALqC,IAAzBmB,EAAItB,kBACZX,EAAUZ,EAAE8C,OAAOlC,EAASiC,EAAItB,iBAChCG,EAAYmB,EAAItB,gBAAgBG,WAAaA,IAyLjD,SAAoBd,EAASiC,GACzB,GAAIjC,EAAQmC,kBAAmB,CAC3B,GAAIF,EAAIxB,UAAYlB,EAChB,OAAO,EAEPA,EAAgB0C,EAAIxB,QAG5B,OAAO,EA9LP2B,CAAWpC,EAASiC,GAAxB,CAEAzC,IAEAH,EAAaa,EAAaF,GAAS,GAEnC,IAAIqC,EAAa,KACbvC,EAAgBV,EAAE,UAClBkD,EAAgBlD,EAAE,UAClBmD,EAAkBnD,EAAE,UACpBoD,EAAmBpD,EAAE,UACrBqD,EAAgBrD,EAAEY,EAAQ0C,WAC1BC,EAAc,CACdN,WAAY,KACZO,QAAS,KACTC,YAAa,MAEbC,EAAW,CACXtD,QAASA,EACTuD,MAAO,UACPC,UAAW,IAAIC,KACfjD,QAASA,EACTiC,IAAKA,GAeT,OA0FQA,EAAInB,WACJhB,EAAcuB,SAASrB,EAAQkD,YAAY7B,SAASP,GAY5D,WACI,GAAImB,EAAIvB,MAAO,CACX,IAAIyC,EAASlB,EAAIvB,MACbV,EAAQoD,aACRD,EAASC,EAAWnB,EAAIvB,QAE5B4B,EAAce,OAAOF,GAAQ9B,SAASrB,EAAQsD,YAC9CxD,EAAcuD,OAAOf,IA7FzBiB,GAiGJ,WACI,GAAItB,EAAIxB,QAAS,CACb,IAAI0C,EAASlB,EAAIxB,QACbT,EAAQoD,aACRD,EAASC,EAAWnB,EAAIxB,UAE5B8B,EAAgBc,OAAOF,GAAQ9B,SAASrB,EAAQwD,cAChD1D,EAAcuD,OAAOd,IAvGzBkB,GA4GIzD,EAAQ0D,cACRjB,EAAcpB,SAASrB,EAAQ2D,YAAYvC,KAAK,OAAQ,UACxDtB,EAAc8D,QAAQnB,IAKtBzC,EAAQ2C,cACRH,EAAiBnB,SAASrB,EAAQ6D,eAClC/D,EAAc8D,QAAQpB,IAKtBxC,EAAQ8D,KACRhE,EAAcuB,SAAS,OA7CvBrB,EAAQ+D,YACR1E,EAAWuE,QAAQ9D,GAEnBT,EAAWgE,OAAOvD,GAzE1B,WACI,IAAIkE,EAAY,GAChB,OAAQ/B,EAAInB,WACR,IAAK,gBACL,IAAK,aACDkD,EAAa,SACb,MACJ,QACIA,EAAY,YAEpBlE,EAAcsB,KAAK,YAAa4C,GAbhCC,GAkDAnE,EAAcoE,OAEdpE,EAAcE,EAAQmE,YAClB,CAACxC,SAAU3B,EAAQoE,aAAcvC,OAAQ7B,EAAQqE,WAAYtC,SAAU/B,EAAQsE,UAG/EtE,EAAQuE,QAAU,IAClBlC,EAAamC,WAAWC,EAAWzE,EAAQuE,SAC3C5B,EAAYE,YAAc6B,WAAW1E,EAAQuE,SAC7C5B,EAAYC,SAAU,IAAIK,MAAO0B,UAAYhC,EAAYE,YACrD7C,EAAQ2C,cACRA,EAAYN,WAAauC,YAAYC,EAAgB,MA5CzD7E,EAAQ8E,cACRhF,EAAciF,MAAMC,EAAaC,IAGhCjF,EAAQkF,SAAWlF,EAAQmF,cAC5BrF,EAAcsF,MAAMX,GAGpBzE,EAAQ0D,aAAejB,GACvBA,EAAc2C,MAAM,SAAUC,GACtBA,EAAMC,gBACND,EAAMC,uBACwBhM,IAAvB+L,EAAME,eAAqD,IAAvBF,EAAME,eACjDF,EAAME,cAAe,GAGrBvF,EAAQwF,cACRxF,EAAQwF,aAAaH,GAGzBZ,GAAU,KAIdzE,EAAQkF,SACRpF,EAAcsF,MAAM,SAAUC,GAC1BrF,EAAQkF,QAAQG,GAChBZ,MAzEZzC,EAAQc,GAEJ9C,EAAQyF,OAASzL,SACjBA,QAAQ0L,IAAI5C,GAGThD,EAEP,SAASsD,EAAWnL,GAKhB,OAJc,MAAVA,IACAA,EAAS,IAGNA,EACF2C,QAAQ,KAAM,SACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QAgJvB,SAAS6J,EAAUkB,GACf,IAAIC,EAASD,IAAoC,IAAxB3F,EAAQ6F,YAAwB7F,EAAQ6F,YAAc7F,EAAQ0B,WACnFC,EAAWgE,IAAsC,IAA1B3F,EAAQ8F,cAC/B9F,EAAQ8F,cAAgB9F,EAAQ4B,aAChCC,EAAS8D,IAAoC,IAAxB3F,EAAQ+F,YAAwB/F,EAAQ+F,YAAc/F,EAAQ8B,WACvF,IAAI1C,EAAE,SAAUU,GAAe9H,QAAW2N,EAI1C,OADAK,aAAarD,EAAYN,YAClBvC,EAAc8F,GAAQ,CACzBjE,SAAUA,EACVE,OAAQA,EACRE,SAAU,WACNvB,EAAYV,GACZkG,aAAa3D,GACTrC,EAAQiG,UAA+B,WAAnBnD,EAASC,OAC7B/C,EAAQiG,WAEZnD,EAASC,MAAQ,SACjBD,EAASoD,QAAU,IAAIjD,KACvBjB,EAAQc,MAKpB,SAASmC,KACDjF,EAAQuE,QAAU,GAAKvE,EAAQmG,gBAAkB,KACjD9D,EAAamC,WAAWC,EAAWzE,EAAQmG,iBAC3CxD,EAAYE,YAAc6B,WAAW1E,EAAQmG,iBAC7CxD,EAAYC,SAAU,IAAIK,MAAO0B,UAAYhC,EAAYE,aAIjE,SAASmC,IACLgB,aAAa3D,GACbM,EAAYC,QAAU,EACtB9C,EAAcsG,MAAK,GAAM,GAAMpG,EAAQmE,YACnC,CAACxC,SAAU3B,EAAQoE,aAAcvC,OAAQ7B,EAAQqE,aAIzD,SAASQ,IACL,IAAIwB,GAAe1D,EAAYC,SAAW,IAAIK,MAAO0B,WAAchC,EAAYE,YAAe,IAC9FL,EAAiB7F,MAAM0J,EAAa,MAI5C,SAASpG,IACL,OAAOb,EAAE8C,OAAO,GA1ST,CACHiD,cAAc,EACdjC,WAAY,QACZ/B,YAAa,kBACbsE,OAAO,EAEPtB,WAAY,SACZC,aAAc,IACdC,WAAY,QACZC,aAAShL,EACToI,WAAY,UACZE,aAAc,IACdE,WAAY,QACZmE,cAAU3M,EACVuM,aAAa,EACbC,eAAe,EACfC,aAAa,EACbjB,cAAc,EAEdqB,gBAAiB,IACjBpF,YAAa,CACT9G,MAAO,cACPyF,KAAM,aACNC,QAAS,gBACTzF,QAAS,iBAEb4G,UAAW,aACXQ,cAAe,kBACfiD,QAAS,IACTjB,WAAY,cACZE,aAAc,gBACdJ,YAAY,EACZtL,OAAQ,OACR4K,UAAW,yCACXiB,WAAY,qBACZI,aAAa,EACb5B,mBAAmB,EACnBQ,aAAa,EACbkB,cAAe,iBACfC,KAAK,GAmQ0BlE,EAAOI,SAG9C,SAASQ,EAAYV,GACZT,IAAcA,EAAaa,KAC5BJ,EAAcwG,GAAG,cAGrBxG,EAAcS,SACdT,EAAgB,KACqB,IAAjCT,EAAWgB,WAAWrI,SACtBqH,EAAWkB,SACXhB,OAAgBjG,KAhcpB,IADNpB,MAAAzC,EAAAyJ,MAAAxJ,EAAAD,QAAAiD,iCCbVjD,EAAQsB,YAAa,EACrB,IAAIwP,EAAmB5O,EAAQ,IAC3B6O,EAAqB7O,EAAQ,IAC7B8O,EAA0B9O,EAAQ,IAClC+O,EAAU/O,EAAQ,IACtBjC,EAAOD,QAAU,CACbkR,eAAgBJ,EAAgB,QAChCK,iBAAkBJ,EAAkB,QACpCK,sBAAuBJ,EAAuB,QAC9ClI,eAAgBmI,EAAQnI,8CCR5B,IAAIpC,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAIyN,EAAM3K,EAAuBxE,EAAQ,KAEzClC,EAAQsR,GAAKD,EAAIzN,QAEjB,IAAI2N,EAAO7K,EAAuBxE,EAAQ,KAE1ClC,EAAQwR,IAAMD,EAAK3N,QAEnB,IAAI6N,EAAU/K,EAAuBxE,EAAQ,KAE7ClC,EAAQ0R,OAASD,EAAQ7N,QAEzB,IAAI+N,EAAUjL,EAAuBxE,EAAQ,KAE7ClC,EAAQ4R,OAASD,EAAQ/N,QACzB,IAAIyB,EAAW,CACbiM,GAAID,EAAIzN,QACR4N,IAAKD,EAAK3N,QACV8N,OAAQD,EAAQ7N,QAChBgO,OAAQD,EAAQ/N,SAElB5D,EAAQ4D,QAAUyB;;;;;ECpBlB,IAAIwM,EAAwBjR,OAAOiR,sBAC/B9P,EAAiBnB,OAAOkB,UAAUC,eAClC+P,EAAmBlR,OAAOkB,UAAUiQ,qBAExC,SAASC,EAASC,GACjB,GAAIA,QACH,MAAM,IAAIC,UAAU,yDAGrB,OAAOtR,OAAOqR,GA+CfhS,EAAOD,QA5CP,WACC,IACC,IAAKY,OAAOwB,OACX,OAAO,EAMR,IAAI+P,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzCvR,OAAOyR,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,GACHpS,EAAI,EAAGA,EAAI,GAAIA,IACvBoS,EAAM,IAAMF,OAAOG,aAAarS,IAAMA,EAKvC,GAAwB,eAHXU,OAAOyR,oBAAoBC,GAAO9F,IAAI,SAAU7K,GAC5D,OAAO2Q,EAAM3Q,KAEHgC,KAAK,IACf,OAAO,EAIR,IAAI6O,EAAQ,GAIZ,MAHA,uBAAuBC,MAAM,IAAIxK,QAAQ,SAAUyK,GAClDF,EAAME,GAAUA,IAGf,yBADE9R,OAAOmC,KAAKnC,OAAOwB,OAAO,GAAIoQ,IAAQ7O,KAAK,IAM9C,MAAOW,GAER,OAAO,GAIQqO,GAAoB/R,OAAOwB,OAAS,SAAUC,EAAQG,GAKtE,IAJA,IAAIoQ,EAEAC,EADAC,EAAKd,EAAS3P,GAGTJ,EAAI,EAAGA,EAAIK,UAAUC,OAAQN,IAAK,CAG1C,IAAK,IAAIR,KAFTmR,EAAOhS,OAAO0B,UAAUL,IAGnBF,EAAe1B,KAAKuS,EAAMnR,KAC7BqR,EAAGrR,GAAOmR,EAAKnR,IAIjB,GAAIoQ,EAAuB,CAC1BgB,EAAUhB,EAAsBe,GAChC,IAAK,IAAI1S,EAAI,EAAGA,EAAI2S,EAAQtQ,OAAQrC,IAC/B4R,EAAiBzR,KAAKuS,EAAMC,EAAQ3S,MACvC4S,EAAGD,EAAQ3S,IAAM0S,EAAKC,EAAQ3S,MAMlC,OAAO4S,iCCtFRlS,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAAI4R,EAA4B,mBAAX9R,QAAoD,iBAApBA,OAAO+R,SAAwB,SAAUlP,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAX7C,QAAyB6C,EAAII,cAAgBjD,QAAU6C,IAAQ7C,OAAOa,UAAY,gBAAkBgC,GAIlQmP,EAAUvM,EAFDxE,EAAQ,IAMjBgR,EAA+BxM,EAFDxE,EAAQ,KAI1C,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAiBvF9D,EAAQ4D,SAAU,EAAIsP,EAA6BtP,SAfnD,SAAkBgE,EAAOuL,EAAUC,EAAeC,EAAUC,GAC1D,IAAIC,EAAY3L,EAAMuL,GAClBK,OAAgC,IAAdD,EAA4B,YAAcR,EAAQQ,GAExE,OAAIN,EAAQrP,QAAQ6P,eAAeF,GAC1B,IAAIvO,MAAM,WAAaqO,EAAW,KAAOC,EAAe,uCAA+CF,EAAgB,qJAG9G,WAAbI,GAAqD,mBAArBD,EAAUhK,QAAiD,IAAvBgK,EAAUG,SAI5E,KAHE,IAAI1O,MAAM,WAAaqO,EAAW,KAAOC,EAAe,eAAiBC,EAAY,kBAA0BH,EAAgB,mDAO1InT,EAAOD,QAAUA,EAAO,sCChCxBY,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ4D,QAYR,SAAoC+P,GAClC,SAASC,EAAUC,EAAYjM,EAAOuL,EAAUC,EAAeC,EAAUC,GACvE,IAAIQ,EAAoBV,GAAiB,gBACrCW,EAAmBT,GAAgBH,EAEvC,GAAuB,MAAnBvL,EAAMuL,GACR,OAAIU,EACK,IAAI7O,MAAM,YAAcqO,EAAW,KAAOU,EAAmB,2BAAmCD,EAAoB,MAGtH,KAGT,IAAK,IAAIE,EAAO1R,UAAUC,OAAQ0C,EAAOzB,MAAMwQ,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9FhP,EAAKgP,EAAO,GAAK3R,UAAU2R,GAG7B,OAAON,EAASlR,WAAMoB,EAAW,CAAC+D,EAAOuL,EAAUW,EAAmBT,EAAUU,GAAkBG,OAAOjP,IAG3G,IAAIkP,EAAmBP,EAAUlS,KAAK,MAAM,GAG5C,OAFAyS,EAAiBN,WAAaD,EAAUlS,KAAK,MAAM,GAE5CyS,GAETlU,EAAOD,QAAUA,EAAO,sCCxCxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAMR,SAAoBwQ,EAAUC,GAC5B,IAAIC,OAAiB,IAAVD,EAAmB,GAAKA,EAC/BE,EAAYD,EAAKC,UACjBC,EAAeF,EAAKE,aACpBC,EAAqBH,EAAKI,cAC1BA,OAAuC,IAAvBD,GAAwCA,EACxDE,EAAmBL,EAAKM,YACxBA,OAAmC,IAArBD,EAA8BP,EAAS3T,MAAQ2T,EAASQ,YAAcD,EAEpFpL,EAAS,SAAgB3B,EAAOiN,GAClC,OAAOT,EAASxM,EAAOiN,IAGzB,OAAOjU,OAAOwB,OAAO0S,EAAOlR,QAAQmR,aAAeL,EAAgBI,EAAOlR,QAAQmR,WAAWxL,GAAU,SAAU3B,GAC/G,OAAO2B,EAAO3B,EAAO,OACpB,CACDgN,YAAaA,EACbL,UAAWA,EACXC,aAAcA,KAtBlB,IAEgC1Q,EAF5BgR,GAE4BhR,EAFI5B,EAAQ,KAES4B,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,iCCLvF9D,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAGR,SAAkBoR,GAChB,OAAOA,EAAO7P,QAAQ8P,EAAS,SAAUC,EAAGC,GAC1C,OAAOA,EAAIC,iBAJf,IAAIH,EAAU,QAQdhV,EAAOD,QAAUA,EAAO,sCCVxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAIyR,EAAS3O,EAAuBxE,EAAQ,KAExCoT,EAAS5O,EAAuBxE,EAAQ,KAExCqT,EAAiB7O,EAAuBxE,EAAQ,KAEhDsT,EAAiB9O,EAAuBxE,EAAQ,KAEhDuT,EAAoBvT,EAAQ,IAEhC,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAmBvF,IA2IIuB,EAzIJ,WACE,SAASqQ,EAAarB,GACpB,IAAIC,OAAiB,IAAVD,EAAmB,GAAKA,EAC/BsB,EAAwBrB,EAAKsB,iBAC7BA,OAA6C,IAA1BD,GAA0CA,EAC7DE,EAAwBvB,EAAKwB,wBAC7BA,OAAoD,IAA1BD,GAA0CA,EAExEnT,KAAKkT,iBAAmBA,EACxBlT,KAAKoT,wBAA0BA,EAC/BpT,KAAKqT,OAAS,GACdrT,KAAKsT,WAAa,GAClBtT,KAAKuT,KAAO,GACZvT,KAAKwT,eAAgB,EAAIX,EAAe3R,WAG1C,IAAIuS,EAAST,EAAa5T,UAsH1B,OApHAqU,EAAOC,uBAAyB,SAAgCC,GAC9D,IAAIJ,EAAOvT,KAAKuT,KAAKvT,KAAK4T,wBAAwBD,IAClD,OAAOJ,GAAQA,EAAKM,aAGtBJ,EAAOG,wBAA0B,SAAiCD,GAChE,OA3CiBG,EA2CE9T,KAAKuT,KA3CFQ,EA2CQ,SAAUjW,GACtC,OAAoC,IAA7BA,EAAEuV,OAAO/S,QAAQqT,IA3CxBK,GAAO,EACXF,EAAIG,KAAK,SAAUnW,EAAGN,GACpB,GAAIuW,EAAGjW,EAAGN,GAER,OADAwW,EAAMxW,GACC,IAGJwW,EART,IAAqBF,EAAKC,EACpBC,GA+CJP,EAAOS,kBAAoB,SAA2BC,EAAgBC,GACpE,IAAI/P,EAAQ,CACVK,SAAU,UAIZyP,EAAe9P,MAAQ,CACrBK,SAAU0P,EAAU/P,MAAMK,SAC1B2P,aAAcD,EAAU/P,MAAMgQ,cAG5BF,EAAeN,cAGjBxP,EAAMgQ,aAAeC,UAAS,EAAI1B,EAAO1R,SAASkT,EAAW,iBAAmB,EAAG,IAAMpU,KAAKwT,cAAgB,OAGhH,EAAIZ,EAAO1R,SAASkT,EAAW/P,IAGjCoP,EAAOc,qBAAuB,SAA8BJ,EAAgBC,GAC1E,IAAI/P,EAAQ8P,EAAe9P,MAC3BnG,OAAOmC,KAAKgE,GAAOkB,QAAQ,SAAUxG,GACnCqV,EAAU/P,MAAMtF,GAAOsF,EAAMtF,MAIjC0U,EAAOe,IAAM,SAAab,EAAOS,EAAWK,GAC1C,IAAIC,EAAW1U,KAAKqT,OAAO/S,QAAQqT,GAC/BgB,EAAe3U,KAAKsT,WAAWhT,QAAQ8T,GAE3C,IAAkB,IAAdM,EACF,OAAOA,EAUT,GAPAA,EAAW1U,KAAKqT,OAAOxT,OACvBG,KAAKqT,OAAOxS,KAAK8S,GAEb3T,KAAKkT,mBACP,EAAIH,EAAkB6B,cAAcR,EAAWT,IAG3B,IAAlBgB,EAEF,OADA3U,KAAKuT,KAAKoB,GAActB,OAAOxS,KAAK8S,GAC7Be,EAGT,IAAInB,EAAO,CACTF,OAAQ,CAACM,GAETjT,QAAS+T,EAAYA,EAAU1E,MAAM,OAAS,GAC9C8D,aAAa,EAAIf,EAAe5R,SAASkT,IAU3C,OAPIpU,KAAKoT,yBACPpT,KAAKkU,kBAAkBX,EAAMa,GAG/Bb,EAAK7S,QAAQ6E,QAAQoN,EAAOzR,QAAQgI,SAASlK,KAAK,KAAMoV,IACxDpU,KAAKsT,WAAWzS,KAAKuT,GACrBpU,KAAKuT,KAAK1S,KAAK0S,GACRmB,GAGTjB,EAAOrL,OAAS,SAAgBuL,GAC9B,IAAIe,EAAW1U,KAAKqT,OAAO/S,QAAQqT,GAEnC,IAAkB,IAAde,EAAJ,CAIA,IAAIC,EAAe3U,KAAK4T,wBAAwBD,GAC5CJ,EAAOvT,KAAKuT,KAAKoB,GACjBP,EAAYpU,KAAKsT,WAAWqB,GAKhC,GAJApB,EAAKF,OAAOwB,OAAOtB,EAAKF,OAAO/S,QAAQqT,GAAQ,GAC/C3T,KAAKqT,OAAOwB,OAAOH,EAAU,GAGF,IAAvBnB,EAAKF,OAAOxT,OACd0T,EAAK7S,QAAQ6E,QAAQoN,EAAOzR,QAAQ4T,YAAY9V,KAAK,KAAMoV,IAEvDpU,KAAKoT,yBACPpT,KAAKuU,qBAAqBhB,EAAMa,GAG9BpU,KAAKkT,mBACP,EAAIH,EAAkBgC,cAAcX,EAAWT,GAGjD3T,KAAKsT,WAAWuB,OAAOF,EAAc,GACrC3U,KAAKuT,KAAKsB,OAAOF,EAAc,QAC1B,GAAI3U,KAAKkT,iBAAkB,CAEhC,IAAI8B,EAAezB,EAAKF,OAAOE,EAAKF,OAAOxT,OAAS,GAChDoV,EAAWD,EAAaC,SACxBC,EAASF,EAAaE,QAC1B,EAAInC,EAAkBoC,aAAY,EAAOD,IACzC,EAAInC,EAAkBoC,aAAY,EAAOF,MAI7CxB,EAAO2B,WAAa,SAAoBzB,GACtC,QAAS3T,KAAKqT,OAAOxT,QAAUG,KAAKqT,OAAOrT,KAAKqT,OAAOxT,OAAS,KAAO8T,GAGlEX,EAtIT,GA0IA1V,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAQ4D,sCC9KzB,IACQmU,EADJC,EAAatV,MAAQA,KAAKsV,YACtBD,EAAgB,SAAUvX,EAAGqE,GAI7B,OAHAkT,EAAgBnX,OAAOqX,gBAClB,CAAE9T,UAAW,cAAgBX,OAAS,SAAUhD,EAAGqE,GAAKrE,EAAE2D,UAAYU,IACvE,SAAUrE,EAAGqE,GAAK,IAAK,IAAI7C,KAAK6C,EAAOA,EAAE9C,eAAeC,KAAIxB,EAAEwB,GAAK6C,EAAE7C,MACpDxB,EAAGqE,IAErB,SAAUrE,EAAGqE,GAEhB,SAASqT,IAAOxV,KAAKwB,YAAc1D,EADnCuX,EAAcvX,EAAGqE,GAEjBrE,EAAEsB,UAAkB,OAAN+C,EAAajE,OAAOY,OAAOqD,IAAMqT,EAAGpW,UAAY+C,EAAE/C,UAAW,IAAIoW,KAGnFC,EAAYzV,MAAQA,KAAKyV,UAAa,WAStC,OARAA,EAAWvX,OAAOwB,QAAU,SAAShB,GACjC,IAAK,IAAIa,EAAG/B,EAAI,EAAGyB,EAAIW,UAAUC,OAAQrC,EAAIyB,EAAGzB,IAE5C,IAAK,IAAI8B,KADTC,EAAIK,UAAUpC,GACOU,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KACzDZ,EAAEY,GAAKC,EAAED,IAEjB,OAAOZ,IAEKqB,MAAMC,KAAMJ,YAEhCtC,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBkW,EAAWlW,EAAQ,GACnBmW,EAA0BnW,EAAQ,IAClCoW,EAAgBpW,EAAQ,IACxB+O,EAAU/O,EAAQ,IAElBqW,EAAYrW,EAAQ,IACpBsW,EAA2B,SAAUC,GAErC,SAASD,IACL,IAAIE,EAAmB,OAAXD,GAAmBA,EAAOhW,MAAMC,KAAMJ,YAAcI,KAgBhE,OAfAgW,EAAMpL,MAAQ,CACV2I,KAAM,IAEVyC,EAAM7D,IAAM,KACZ6D,EAAMC,UAAY,KAClBD,EAAME,OAAS,eAAgB,IAAIpL,KAAS,IAAMqL,KAAKC,MAAsB,QAAhBD,KAAKE,UAClEL,EAAMM,MAAQ,KACdN,EAAMO,mBAAqB,WAElBP,EAAMC,YACPD,EAAMC,UAAYN,EAAwBa,cAAcR,EAAM9Q,cACvD8Q,EAAMC,UAAN,YACAD,EAAMC,UAAN,UAGRD,EAuDX,OAzEAV,EAAUQ,EAAWC,GAoBrBD,EAAU1W,UAAUqX,kBAAoB,WACpC,IAAIC,EAAShB,EAASiB,YAAY3W,KAAKmS,KACnCyE,EAAO5W,KACP6W,EAAK7W,KAAKkF,MAAO4R,EAAUD,EAAGC,QAASvD,EAAOsD,EAAGtD,KAAM1L,EAAUgP,EAAGhP,QACpEkP,EAAcnB,EAAcoB,eAAehX,KAAKkF,OACpD,IAAI2Q,EAAUa,EAAQjB,EAAS,CAAEqB,QAASA,GAAWC,EAAa,CAAEE,OAAQ,aACxEC,cAAe,WACXN,EAAKN,MAAQtW,KACb4W,EAAK1R,MAAMgS,eAAgBN,EAAK1R,MAAMgS,iBAE1CC,WAAY,WACRP,EAAK1R,MAAMiS,YAAaP,EAAK1R,MAAMiS,eAClCtP,EAAS,CACd0L,KAAMA,KAGNA,GAAQA,EAAK1T,OAAS,GACtBG,KAAKoX,SAAS,CAAE7D,KAAMA,KAG9BuC,EAAU1W,UAAUiY,qBAAuB,WACvCrX,KAAKsW,MAAMgB,WAIfxB,EAAUyB,yBAA2B,SAAUrS,EAAO0F,GAElD,IAAI4M,GAAUtS,EAAMqO,MAA8B,IAAtBrO,EAAMqO,KAAK1T,OACvC,OAAK+K,GAAS4M,EAEH,KAEP5M,GAA+B,IAAtBA,EAAM2I,KAAK1T,QAAsC,IAAtBqF,EAAMqO,KAAK1T,OACxC,KAEP+K,GAAS1F,EAAMqO,OAEVhF,EAAQpI,YAAYyE,EAAM2I,KAAMrO,EAAMqO,MAChCkC,EAAS,GAAI7K,EAAO,CAAE2I,KAAMrO,EAAMqO,OAG1C,IAGXuC,EAAU1W,UAAUqY,mBAAqB,WACrCzX,KAAKsW,MAAMoB,QAAQ1X,KAAK4K,MAAM2I,OAElCuC,EAAU1W,UAAUyH,OAAS,WACzB,IAAImP,EAAQhW,KACZA,KAAKuW,qBACL,IAAI9B,EAAYzU,KAAKkF,MAAMuP,UAC3B,OAAO5O,EAAM/C,cAAc,MAAO2S,EAAS,CAAEtD,IAAK,SAAUA,GAAO,OAAQ6D,EAAM7D,IAAMA,GAASwF,gBAAiB3X,KAAKkW,QAAUlW,KAAKiW,UAAW,CAAExB,UAAWA,MAE1JqB,EA1EoB,CA2E7BjQ,EAAM+R,WACRta,EAAO,QAAcwY,iBC7GrBvY,EAAOD,QACG,SAASI,GAET,IAAIP,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCC,QAAS,GACTua,GAAIxa,EACJya,QAAQ,GAUT,OANApa,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOua,QAAS,EAGTva,EAAOD,QAcf,OATAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBkC,EAAI,GAGjBlC,EAAoB,GAvC3B,CA0CA,CAEJ,SAASG,EAAQD,EAASF,GAE/B,aAEAc,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQya,aAAeza,EAAQkZ,mBAAgBrV,EAE/C,IAEI6W,EAAkBhU,EAFD5G,EAAoB,IAMrC6a,EAAiBjU,EAFD5G,EAAoB,IAIxC,SAAS4G,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF9D,EAAQkZ,cAAgBwB,EAAgB9W,QACxC5D,EAAQya,aAAeE,EAAe/W,SAIjC,SAAS3D,EAAQD,EAASF,GAE/B,aAEAc,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAAIgB,EAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,GAInPuY,EAAmBlU,EAFD5G,EAAoB,IAMtC+a,EAAcnU,EAFD5G,EAAoB,IAIrC,SAAS4G,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF,IAKIgX,EAAiB3Y,EAAS,GAAIyY,EAAiBhX,QALvC,CAAC,QAAS,WAAY,iBAAkB,eAAgB,SAAU,SAAU,WAAY,WAAY,SAAU,QAAS,iBAAkB,cAAe,QAAS,WAAY,YAAa,WAAY,UAAW,SAAU,WAAY,eAAgB,UAAW,WAAY,oBAAqB,UAAW,QAAS,gBAGnU,SAAU,WAAY,UAAW,gBAAiB,SAAU,QAAS,gBAAiB,SAAU,YAAa,cAAe,aAAc,cAAe,aAAc,cAAe,SAAU,UAAW,UAAW,YAAa,aAAc,UAAW,cAAe,eAAgB,eAAgB,cAAe,aAAc,cAAe,YAAa,UAAW,WAAY,WAAY,gBAAiB,aAAc,cAAe,eAAgB,UAAW,mBAAoB,qBAAsB,sBAAuB,YAAa,gBAAiB,gBAAiB,cAAe,kBAAmB,sBAAuB,uBAAwB,iBAAkB,iBAAkB,gBAAiB,eAAgB,WAAY,UAAW,YAAa,mBAAoB,mBAAoB,YAAa,cAAe,UAAW,UAAW,eAAgB,mBAAoB,cAAe,UAAW,SAAU,YAAa,aAAc,eAAgB,WAAY,YAAa,YAAa,YAAa,eAAgB,iBAAkB,YAAa,SAAU,UAAW,mBAAoB,iBAAkB,uBAAwB,kBAAmB,YAE7kCmX,OAAO,SAAUC,EAAOC,GAExF,OADAD,EAAMC,GAAQA,EACPD,GACN,KAEHhb,EAAQ4D,SAAU,EAAIiX,EAAYjX,SAAS,SAAUqX,GACnD,OAAOC,QAAQJ,EAAeG,KAAU,gBAAgBhV,KAAKgV,MAK1D,SAAShb,EAAQD;;;;;AAOtB,aAMAC,EAAOD,QAAU,CACfmb,KAAQ,OACRC,OAAU,SACVC,cAAiB,iBACjBC,UAAa,YACbC,OAAU,SACVC,gBAAmB,kBACnBC,kBAAqB,oBACrBC,IAAO,MACPC,MAAS,QACTC,aAAgB,eAChBC,UAAa,YACbC,SAAY,WACZC,YAAe,cACfC,YAAe,cACfC,UAAa,YACbC,QAAW,UACXC,QAAW,UACXC,KAAQ,OACRC,MAAS,QACTlF,UAAa,QACbmF,KAAQ,OACRC,QAAW,UACXC,QAAW,UACXC,QAAW,UACXC,gBAAmB,kBACnBC,YAAe,cACfC,SAAY,WACZC,OAAU,SACVC,YAAe,cACf7G,KAAQ,OACR8G,SAAY,WACZnZ,QAAW,UACXoZ,MAAS,QACTC,IAAO,MACPC,SAAY,WACZC,SAAY,WACZC,UAAa,YACbC,SAAY,WACZC,QAAW,UACXC,IAAO,MACPC,KAAQ,OACRC,WAAc,aACdC,YAAe,cACfC,WAAc,aACdC,eAAkB,iBAClBC,WAAc,aACdC,YAAe,cACfC,QAAW,UACX5W,OAAU,SACV6W,OAAU,SACVC,KAAQ,OACRC,KAAQ,OACRC,SAAY,WACZC,QAAW,MACXC,UAAa,aACbC,KAAQ,OACR/D,GAAM,KACNgE,UAAa,YACbC,MAAS,QACTC,OAAU,SACVC,SAAY,WACZC,QAAW,UACXC,UAAa,YACbC,SAAY,WACZC,KAAQ,OACRC,MAAS,QACTC,KAAQ,OACRC,KAAQ,OACRC,KAAQ,OACRC,SAAY,WACZC,IAAO,MACPC,UAAa,YACbC,MAAS,QACTC,WAAc,aACdpP,OAAU,SACVqP,IAAO,MACPC,UAAa,YACbC,SAAY,WACZC,MAAS,QACTlf,KAAQ,OACRmf,WAAc,aACdC,KAAQ,OACRC,QAAW,UACXC,QAAW,UACXC,KAAQ,OACRC,YAAe,cACfC,OAAU,SACVC,QAAW,UACXC,WAAc,aACdC,SAAY,WACZC,IAAO,MACPC,SAAY,WACZC,KAAQ,OACRC,KAAQ,OACRC,QAAW,UACXC,QAAW,UACXC,MAAS,QACTC,OAAU,SACVC,UAAa,YACbC,SAAY,WACZC,SAAY,WACZC,MAAS,QACTra,KAAQ,OACRsa,MAAS,QACTC,SAAY,WACZC,KAAQ,OACRC,WAAc,aACdC,IAAO,MACPC,OAAU,SACVC,OAAU,SACVC,MAAS,QACTC,KAAQ,OACR3a,MAAS,QACT4a,SAAY,WACZtf,OAAU,SACV4I,MAAS,QACT2W,UAAa,YACbxW,KAAQ,OACRyW,cAAiB,gBACjBC,OAAU,SACV3gB,MAAS,QACT+F,MAAS,QACT6a,MAAS,QACTC,KAAQ,SAML,SAAS/hB,EAAQD,EAASF,GAE/B,aAEAc,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAIgC2C,EAJ5Bme,EAAUniB,EAAoB,GAE9BoiB,GAE4Bpe,EAFMme,IAEene,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF9D,EAAQ4D,QAAU,SAAU8N,GAC1B,OAAO,SAAU9J,GACf,KAAK,EAAIsa,EAASte,SAASgE,GAAQ,MAAM,IAAI5C,MAAM,kCACnD,IAAImd,EAAM,GACV,IAAK,IAAI1gB,KAAOmG,EACVA,EAAM7F,eAAeN,IAAQiQ,EAAOjQ,KACtC0gB,EAAI1gB,GAAOmG,EAAMnG,IAGrB,OAAO0gB,KAMN,SAASliB,EAAQD,GAYtB,IAAIoiB,EAAY,kBAoChB,IAPiBC,EAAMha,EAOnBia,EAAY/b,SAASzE,UACrBygB,EAAc3hB,OAAOkB,UAGrB0gB,EAAeF,EAAUG,SAGzB1gB,EAAiBwgB,EAAYxgB,eAG7B2gB,EAAmBF,EAAaniB,KAAKO,QAOrC+hB,EAAiBJ,EAAYE,SAG7BG,GA3BaP,EA2BUzhB,OAAOiiB,eA3BXxa,EA2B2BzH,OA1BzC,SAASyC,GACd,OAAOgf,EAAKha,EAAUhF,MAiG1BpD,EAAOD,QAdP,SAAuBmB,GACrB,IAjCF,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAgCpB2hB,CAAa3hB,IACdwhB,EAAetiB,KAAKc,IAAUihB,GA3GpC,SAAsBjhB,GAGpB,IAAI4hB,GAAS,EACb,GAAa,MAAT5hB,GAA0C,mBAAlBA,EAAMshB,SAChC,IACEM,KAAY5hB,EAAQ,IACpB,MAAO2D,IAEX,OAAOie,EAkGwCC,CAAa7hB,GAC1D,OAAO,EAET,IAAI8hB,EAAQL,EAAazhB,GACzB,GAAc,OAAV8hB,EACF,OAAO,EAET,IAAIC,EAAOnhB,EAAe1B,KAAK4iB,EAAO,gBAAkBA,EAAM/e,YAC9D,MAAuB,mBAARgf,GACbA,aAAgBA,GAAQV,EAAaniB,KAAK6iB,IAASR,IAQlD,SAASziB,EAAQD,EAASF,GAE/B,aAEAc,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAEI0Z,EAAcnU,EAFD5G,EAAoB,IAMjCqjB,EAAkBzc,EAFD5G,EAAoB,IAIzC,SAAS4G,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF9D,EAAQ4D,SAAU,EAAIiX,EAAYjX,SAAS,SAAUqX,GACnD,OAAOC,QAAQiI,EAAgBvf,QAAQqX,OAKpC,SAAShb,EAAQD;;;;;AAOtB,aAMAC,EAAOD,QAAU,CAIfojB,aAAgB,gBAChBC,WAAc,aACdC,SAAY,WACZC,WAAc,aACdC,UAAa,YACbC,WAAc,cACdC,OAAU,SACVC,cAAiB,gBACjBC,cAAiB,gBACjBC,QAAW,UACXC,cAAiB,gBACjBC,YAAe,cACfC,KAAQ,OACRC,MAAS,QACTC,KAAQ,OACRC,GAAM,KACNC,SAAY,WACZC,UAAa,aACbhI,MAAS,QACTiI,cAAiB,gBACjBC,kBAAqB,oBACrBC,iBAAoB,mBACpBC,GAAM,KACNC,GAAM,KACNlkB,EAAK,IACLmkB,QAAW,UACXC,gBAAmB,kBACnBC,QAAW,UACXC,IAAO,MACPC,GAAM,KACNC,GAAM,KACNC,SAAY,WACZC,UAAa,YACbC,IAAO,MACPC,SAAY,WACZC,0BAA6B,4BAC7BC,KAAQ,OACRC,UAAa,YACbC,YAAe,cACfC,WAAc,cACdC,SAAY,YACZC,YAAe,eACfC,UAAa,aACbjhB,OAAU,SACViO,KAAQ,OACRiT,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,SAAY,aACZC,SAAY,WACZC,kBAAqB,oBACrBC,cAAiB,gBACjBC,QAAW,UACXlf,OAAU,SACVmf,UAAa,cACbC,aAAgB,iBAChBC,aAAgB,iBAChBjM,GAAM,KACNkM,YAAe,cACfC,GAAM,KACNC,IAAO,MACPC,UAAa,YACbC,EAAK,IACLC,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,aAAgB,eAChBC,iBAAoB,mBACpBC,UAAa,YACbC,WAAc,aACdC,SAAY,WACZtI,KAAQ,OACRuI,aAAgB,eAChBC,kBAAqB,oBACrBC,MAAS,QACTC,aAAgB,eAChBC,YAAe,cACfC,YAAe,cACfC,iBAAoB,mBACpBC,UAAa,YACbC,aAAgB,eAChB3I,IAAO,MACPE,MAAS,QACTnP,OAAU,SACVqP,IAAO,MACPne,KAAQ,OACRZ,KAAQ,OACRunB,WAAc,aACdC,OAAU,SACVC,QAAW,UACXC,WAAc,aACdC,QAAW,UACXC,QAAW,UACXC,MAAS,QACTC,QAAW,UACXC,UAAa,YACbC,WAAc,aACdC,OAAU,SACVC,YAAe,cACfC,YAAe,cACfC,WAAc,aACdC,YAAe,cACfC,UAAa,YACbC,SAAY,WACZC,SAAY,WACZC,SAAY,WACZC,SAAY,WACZC,OAAU,SACVC,SAAY,WACZC,MAAS,QACTC,OAAU,SACVC,YAAe,cACfC,OAAU,SACVC,iBAAoB,oBACpBC,kBAAqB,qBACrBC,QAAW,WACXC,KAAQ,OACRC,WAAc,aACdC,oBAAuB,sBACvBC,iBAAoB,mBACpBC,aAAgB,eAChBC,OAAU,SACVC,UAAa,YACbC,UAAa,YACbC,UAAa,YACbC,cAAiB,gBACjBC,oBAAuB,sBACvBC,eAAkB,iBAClBxpB,EAAK,IACLypB,OAAU,SACVC,KAAQ,OACRC,KAAQ,OACRC,gBAAmB,mBACnBC,YAAe,cACfC,UAAa,YACbC,mBAAsB,qBACtBC,iBAAoB,mBACpBC,QAAW,UACXlI,OAAU,SACVmI,OAAU,SACVC,GAAM,KACNC,GAAM,KACNC,MAAS,QACTC,KAAQ,OACRC,MAAS,QACTC,QAAW,UACXC,iBAAoB,mBACpBC,iBAAoB,mBACpBC,aAAgB,eAChBC,YAAe,cACfC,aAAgB,eAChBC,MAAS,QACTC,MAAS,QACTC,YAAe,cACfC,sBAAyB,yBACzBC,uBAA0B,0BAC1BlX,OAAU,SACVjO,MAAS,QACTolB,aAAgB,eAChBC,eAAkB,iBAClBC,YAAe,cACfhqB,OAAU,SACViqB,QAAW,UACXC,QAAW,UACXC,WAAc,aACdvhB,MAAS,QACT6H,GAAM,KACNzK,UAAa,YACb+C,KAAQ,OACRqhB,GAAM,KACNC,GAAM,KACNC,kBAAqB,qBACrBC,mBAAsB,sBACtBC,QAAW,UACXC,aAAgB,gBAChBC,WAAc,eACdC,YAAe,eACfC,SAAY,YACZC,aAAgB,gBAChBC,cAAiB,iBACjBC,OAAU,SACV3hB,QAAW,UACX4hB,SAAY,aACZC,YAAe,gBACfC,YAAe,gBACfC,QAAW,UACXC,WAAc,aACdvmB,MAAS,QACTwmB,OAAU,SACVC,EAAK,IACLC,QAAW,WACXC,GAAM,KACNC,GAAM,KACNC,iBAAoB,mBACpBC,MAAS,QACTC,IAAO,MACPC,EAAK,IACLC,GAAM,KACNC,GAAM,KACNC,iBAAoB,mBACpBC,EAAK,IACLC,WAAc,aAIdC,kBAAqB,qBACrBC,cAAiB,iBACjBC,SAAY,YACZC,SAAY,YACZC,KAAQ,OACRC,0BAA6B,8BAC7BC,mBAAsB,sBACtBC,aAAgB,gBAChBC,eAAkB,kBAClBC,MAAS,QACTC,OAAU,SACVC,UAAa,YACbC,QAAW,UACXC,iBAAoB,oBACpBC,iBAAoB,oBACpBC,YAAe,eACfC,SAAY,YACZ9d,OAAU,SACV+d,WAAc,cACdC,aAAgB,gBAChBC,eAAkB,mBAClBC,YAAe,eACfC,WAAc,cACdC,2BAA8B,+BAC9BC,yBAA4B,6BAC5BC,eAAkB,kBAClBC,QAAW,UACXC,cAAiB,iBACjBC,cAAiB,iBACjBC,UAAa,aACbC,UAAa,aACbC,YAAe,eACfC,KAAQ,OACRC,QAAW,UACXppB,SAAY,WACZqpB,cAAiB,iBACjBC,eAAkB,kBAClBC,UAAa,aACbC,YAAe,eACfC,gBAAmB,mBACnBC,iBAAoB,oBACpBC,cAAiB,iBACjBC,eAAkB,kBAClBC,iBAAoB,oBACpBC,cAAiB,iBACjBC,YAAe,eACfC,OAAU,SACVC,WAAc,cACdC,eAAkB,kBAClBC,cAAiB,iBACjBC,YAAe,eACfC,WAAc,aACdC,YAAe,eACfC,YAAe,iDCltBlB3xB,EAAQsB,YAAa,EACrB,IAAIswB,EAAW1vB,EAAQ,IAEnB2vB,EAAQ,aAEZ7xB,EAAQ0Z,eAAiB,SAAU9R,GAO/B,IANA,IAAIkqB,EAAS,GAMJC,EAAK,EAAGC,EALI,CAAC,SAAU,SAAU,yBAA0B,iBAAkB,kBAClF,mBAAoB,gBAAiB,aAAc,WAAY,iBAAkB,wBACjF,cAAe,gBAAiB,gBAAiB,QAAS,cAAe,YAAa,sBACtF,wBAAyB,yBAA0B,sBAAuB,uBAC1E,uBAAwB,eAAgB,eACQD,EAAKC,EAAiBzvB,OAAQwvB,IAAM,CACpF,IAAIE,EAAMD,EAAiBD,QACD,IAAfnqB,EAAMqqB,KACbH,EAAOG,GAAOrqB,EAAMqqB,IAe5B,IAZA,IAYS1Y,EAAK,EAAG2Y,EAZG,CAAC,aAAc,WAAY,cAAe,aAAc,SAAU,YAAa,aAC/F,WAAY,aAAc,WAAY,aAAc,sBAAuB,cAAe,gBAAiB,aAC3G,YAAa,eAAgB,cAAe,UAAW,aAAc,cAAe,cAAe,aAAc,oBACjH,cAAe,gBAAiB,qBAAsB,0BACtD,cAAe,iBAAkB,gBAAiB,YAAa,eAAgB,gBAC/E,gBAAiB,eAAgB,cAAe,aAAc,aAC9D,iBAAkB,eAAgB,YAAa,gBAAiB,eAAgB,cAAe,aAC/F,gBAAiB,iBAAkB,aAAc,YAAa,eAAgB,cAC9E,yBAA0B,aAAc,gBAAiB,eAAgB,WAAY,cAAe,eACpG,0BAA2B,kBAAmB,wBAAyB,yBAA0B,4BAA6B,sBAAuB,4BAA6B,2BAClL,mBAAoB,kBAAmB,kBAAmB,sBAC1D,wBAAyB,gBAAiB,oBACI3Y,EAAK2Y,EAAgB3vB,OAAQgX,IAAM,CACjF,IAAI4Y,EAAeD,EAAgB3Y,GACnCuY,EAAOK,GAAgBvqB,EAAMuqB,IAAiBN,EAMlD,MAJsC,iBAA3BjqB,EAAK,gBAEZkqB,EAAM,cAAoBF,EAASQ,eAAexqB,EAAK,gBAEpDkqB,oBCvCX,IAAAO,EAAApvB,EAIoBqvB,EAJhBvf,EAA4B,mBAAX9R,QAAoD,iBAApBA,OAAO+R,SAAwB,SAAUlP,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAX7C,QAAyB6C,EAAII,cAAgBjD,QAAU6C,IAAQ7C,OAAOa,UAAY,gBAAkBgC,GAIlPwuB,EAQX,WAER,aAKK9uB,MAAM1B,UAAUywB,WAEpB3xB,OAAOC,eAAe2C,MAAM1B,UAAW,YAAa,CAEnDX,MAAO,SAAeqxB,GAKrB,GAAY,MAAR9vB,KAEH,MAAM,IAAIwP,UAAU,iCAGrB,IAAIvR,EAAIC,OAAO8B,MAKX+vB,EAAM9xB,EAAE4B,SAAW,EAKvB,GAAyB,mBAAdiwB,EAEV,MAAM,IAAItgB,UAAU,gCAgBrB,IAVA,IAAIwgB,EAAUpwB,UAAU,GAKpBukB,EAAI,EAKDA,EAAI4L,GAAK,CAcf,IAAIE,EAAShyB,EAAEkmB,GAEf,GAAI2L,EAAUnyB,KAAKqyB,EAASC,EAAQ9L,EAAGlmB,GAEtC,OAAOkmB,EAMRA,IAMD,OAAQ,KASNrjB,MAAM1B,UAAU8wB,MAEpBhyB,OAAOC,eAAe2C,MAAM1B,UAAW,OAAQ,CAE9CX,MAAO,SAAeqxB,GAKrB,GAAY,MAAR9vB,KAEH,MAAM,IAAIwP,UAAU,iCAGrB,IAAIvR,EAAIC,OAAO8B,MAKX+vB,EAAM9xB,EAAE4B,SAAW,EAKvB,GAAyB,mBAAdiwB,EAEV,MAAM,IAAItgB,UAAU,gCAgBrB,IAVA,IAAIwgB,EAAUpwB,UAAU,GAKpBukB,EAAI,EAKDA,EAAI4L,GAAK,CAcf,IAAIE,EAAShyB,EAAEkmB,GAEf,GAAI2L,EAAUnyB,KAAKqyB,EAASC,EAAQ9L,EAAGlmB,GAEtC,OAAOgyB,EAMR9L,QAYJ,IAAIgM,EAAgB,SAAuB7Z,GAE1CtW,KAAKsW,MAAQA,EAGbtW,KAAKowB,qBAAsB,EAE3BpwB,KAAKqwB,eAAiBrwB,KAAKswB,uBAE3BtwB,KAAK+C,QAAU/C,KAAKuwB,sBAGpBvwB,KAAKwwB,WAAa,KAGlBxwB,KAAK8W,QAAU,GAGf9W,KAAKywB,eAAiB,GAGtBzwB,KAAK0wB,eAAiB,GAGtB1wB,KAAK2wB,WAAa,EAElB3wB,KAAK+C,QAAQ6tB,aAAa5wB,KAAKqwB,eAAgBrwB,KAAK+C,QAAQ8tB,aAM7DV,EAAc/wB,UAAUkxB,qBAAuB,WAE9C,IAAIQ,EAAKjuB,SAASC,cAAc,OAIhC,OAFAguB,EAAGC,UAAUvc,IAAI,qBAEVsc,GAGRX,EAAc/wB,UAAUmxB,oBAAsB,WAE7C,IAAIO,EAAKjuB,SAASC,cAAc,OAShC,OAPAguB,EAAGC,UAAUvc,IAAI,oBAEZxU,KAAKsW,MAAMzO,QAAQmpB,eAEvBF,EAAGC,UAAUvc,IAAI,2BAGXsc,GAGRX,EAAc/wB,UAAU6xB,WAAa,aA0BrCd,EAAc/wB,UAAU8xB,cAAgB,SAAUC,GAEjDnxB,KAAKwwB,WAAaW,GAMnBhB,EAAc/wB,UAAUsH,WAAa,WAEpC,OAAO1G,KAAK+C,SAMbotB,EAAc/wB,UAAUgyB,kBAAoB,WAE3C,OAAOpxB,KAAKqwB,gBAkBbF,EAAc/wB,UAAUiyB,iBAAmB,SAAUC,GAEpD,IAAIC,EAAY,EACZC,EAAcxxB,KAAK+C,QAAQyuB,YAAcxxB,KAAKsW,MAAMvT,QAAQ+B,YAKhE9E,KAAK+C,QAAQ4tB,WAAaW,EAKtBA,EAAOE,GAEVD,EAAYD,EAAOE,EAEnBxxB,KAAK+C,QAAQsB,MAAMotB,YAAcF,EAAY,MAG7CvxB,KAAK+C,QAAQsB,MAAMotB,WAAa,EASjCzxB,KAAK2wB,WAAaW,EAEdtxB,KAAKsW,MAAMob,UAAU,kBAExB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAcN,oBAOnClB,EAAc/wB,UAAUwyB,2BAA6B,SAAUre,GAE9D,IACIse,EACAC,EAFAlY,EAAO,GAIX,GAAIrG,GAAQA,EAAK1T,OAAQ,CAIxB,IAAK,IAAId,KAFT8yB,EAAMte,EAAK,GAEU,CAEpB,IAAIwe,EAAM,CAETC,MAAOjzB,EAEPwJ,MAAOxJ,GAIJN,EAAQozB,EAAI9yB,GAEhB,YAAyB,IAAVN,EAAwB,YAAc4R,EAAQ5R,IAE5D,IAAK,YAEJqzB,EAAS,SAET,MAED,IAAK,UAEJA,EAAS,UAET,MAED,IAAK,SAIHA,EAFGhxB,MAAMC,QAAQtC,GAER,QAGA,SAGV,MAED,QASGqzB,EAPGG,MAAMxzB,IAAoB,KAAVA,EAKhBA,EAAMyzB,MAAM,wCAEN,WAGA,SARD,SAgBZH,EAAID,OAASA,EAEblY,EAAK/Y,KAAKkxB,GAGX/xB,KAAKsW,MAAMzO,QAAQiP,QAAU8C,EAE7B5Z,KAAKmyB,WAAWnyB,KAAKsW,MAAMzO,QAAQiP,WAIrCqZ,EAAc/wB,UAAU+yB,WAAa,SAAUvY,EAAMiY,GAIpD,IAFA,IAAIO,EAAOpyB,KAEJoyB,EAAK/B,eAAeQ,YAC1BuB,EAAK/B,eAAetrB,YAAYqtB,EAAK/B,eAAeQ,YACpDuB,EAAKtb,QAAU,GAEhBsb,EAAK3B,eAAiB,GAEtB2B,EAAK1B,eAAiB,GAKlB0B,EAAK9b,MAAMob,UAAU,kBAExBU,EAAK9b,MAAM5Y,QAAQi0B,cAAcU,QAGlCzY,EAAKrU,QAAQ,SAAU+sB,EAAK90B,GAE3B40B,EAAKG,WAAWD,KAGjBF,EAAKI,kBAEDJ,EAAK9b,MAAMzO,QAAQ4qB,kBAAoBL,EAAK9b,MAAMob,UAAU,oBAAoB,IAEnFU,EAAK9b,MAAM5Y,QAAQ+0B,iBAAiBxB,aAGrCmB,EAAKM,QAAO,IAGbvC,EAAc/wB,UAAUmzB,WAAa,SAAUI,EAAYC,EAAQC,GAElE,IAAIC,EAAS,IAAIC,EAAOJ,EAAY3yB,MAChCgzB,EAAQF,EAAOpsB,aACfusB,EAAQJ,EAAe7yB,KAAKkzB,gBAAgBL,GAAgBA,EAEhE,GAAIA,GAAgBI,GAAS,EAAG,CAE/B,IAAIE,EAAcnzB,KAAK8W,QAAQxW,QAAQuyB,EAAaO,gBAEhDC,EAASR,EAAansB,aAEtBksB,GAEH5yB,KAAK8W,QAAQjC,OAAOse,EAAa,EAAGL,GAEpCO,EAAOC,WAAW1C,aAAaoC,EAAOK,KAGtCrzB,KAAK8W,QAAQjC,OAAOse,EAAc,EAAG,EAAGL,GAExCO,EAAOC,WAAW1C,aAAaoC,EAAOK,EAAOE,mBAI1CX,GAEH5yB,KAAK8W,QAAQ0c,QAAQV,GAErB9yB,KAAKqwB,eAAeO,aAAakC,EAAOpsB,aAAc1G,KAAKqwB,eAAeQ,cAG1E7wB,KAAK8W,QAAQjW,KAAKiyB,GAElB9yB,KAAKqwB,eAAezrB,YAAYkuB,EAAOpsB,eAIzC,OAAOosB,GAGR3C,EAAc/wB,UAAUq0B,oBAAsB,SAAU1B,GAEnDA,EAAIY,WAAWX,QAElBhyB,KAAK0wB,eAAeqB,EAAIY,WAAWX,OAASD,IAI9C5B,EAAc/wB,UAAUs0B,uBAAyB,SAAU3B,GAE1D/xB,KAAKywB,eAAe5vB,KAAKkxB,IAG1B5B,EAAc/wB,UAAUozB,gBAAkB,WAEzCxyB,KAAKywB,eAAiB,GAEtBzwB,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAOa,wBAOTxD,EAAc/wB,UAAUw0B,sBAAwB,WAE/C,IAAIxB,EAAOpyB,KACP6zB,EAAY,EAEhBzB,EAAKtb,QAAQvR,QAAQ,SAAUutB,GAE9B,IAAIruB,EAEJquB,EAAOgB,sBAEPrvB,EAASquB,EAAOiB,aAEHF,IAEZA,EAAYpvB,KAId2tB,EAAKtb,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAOkB,cAAc5B,EAAK9b,MAAMzO,QAAQosB,gBAAiBJ,KAG1DzB,EAAK5B,WAAW0D,mBAMjB/D,EAAc/wB,UAAU+0B,WAAa,SAAUC,GAI9C,MAAyE,gBAAjD,IAAZA,EAA0B,YAAc/jB,EAAQ+jB,IA+BpDp0B,KAAK0wB,eAAe0D,KAAY,EA7BnCA,aAAmBrB,EAKfqB,EACGA,aAAmBC,EAKtBD,EAAQE,aAAc,EACI,oBAAhBC,aAA+BH,aAAmBG,aAhB1Dv0B,KAqBQ8W,QAAQoZ,KAAK,SAAU4C,GAEvC,OAAOA,EAAO/vB,UAAYqxB,MAgBtB,GAGRjE,EAAc/wB,UAAUo1B,iBAAmB,SAAUxC,GAEpD,OAAOhyB,KAAK0wB,eAAesB,IAG5B7B,EAAc/wB,UAAUq1B,iBAAmB,SAAUxB,GAEpD,OAAOjzB,KAAKywB,eAAewC,IAG5B9C,EAAc/wB,UAAUs1B,uBAAyB,SAAUzB,GAO1D,OALIA,EAAQjzB,KAAKywB,eAAeZ,UAAU,SAAUkC,GAEnD,OAAOA,EAAI4C,YAGI,GAAI30B,KAAKywB,eAAewC,IAGzC9C,EAAc/wB,UAAUw1B,WAAa,WAEpC,OAAO50B,KAAK8W,SAGbqZ,EAAc/wB,UAAU8zB,gBAAkB,SAAUJ,GAEnD,OAAO9yB,KAAKywB,eAAeZ,UAAU,SAAUkC,GAE9C,OAAOe,IAAWf,KAOpB5B,EAAc/wB,UAAUy1B,eAAiB,WAExC,OAAO70B,KAAKywB,gBAMbN,EAAc/wB,UAAU01B,SAAW,SAAUhsB,GAEjC9I,KAENywB,eAAelrB,QAAQ,SAAUutB,EAAQt1B,GAE7CsL,EAASgqB,EAAQt1B,MAOnB2yB,EAAc/wB,UAAU21B,eAAiB,SAAUC,GAElD,IACI5F,EAAS,GAUb,OAXWpvB,KAGNywB,eAAelrB,QAAQ,SAAUutB,KAEhCkC,GAAUA,GAAUlC,EAAO6B,UAE/BvF,EAAOvuB,KAAKiyB,EAAOmC,mBAId7F,GAMRe,EAAc/wB,UAAU81B,kBAAoB,WAE3C,IACI9F,EAAS,GAOb,OARWpvB,KAGN8W,QAAQvR,QAAQ,SAAUutB,GAE9B1D,EAAOvuB,KAAKiyB,EAAOmC,eAAc,MAG3B7F,GAGRe,EAAc/wB,UAAU+1B,cAAgB,SAAUC,GAEjD,IACIhG,EAAS,GAQb,OAPcgG,EAFHp1B,KAEqB8W,QAFrB9W,KAEoCywB,gBAEvClrB,QAAQ,SAAUutB,GAEzB1D,EAAOvuB,KAAKiyB,EAAOuC,kBAGbjG,GAGRe,EAAc/wB,UAAUk2B,SAAW,WAElC,IAAI9wB,EAAQ,EAUZ,OARAxE,KAAKywB,eAAelrB,QAAQ,SAAUutB,GAEjCA,EAAO6B,UAEVnwB,GAASsuB,EAAOwC,cAIX9wB,GAGR2rB,EAAc/wB,UAAUm2B,WAAa,SAAUrlB,EAAME,EAAIolB,GAExDx1B,KAAKy1B,mBAAmBz1B,KAAK8W,QAAS5G,EAAME,EAAIolB,GAEhDx1B,KAAKy1B,mBAAmBz1B,KAAKywB,eAAgBvgB,EAAME,EAAIolB,GAAO,GAE1Dx1B,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiBxB,aAGjCjxB,KAAKsW,MAAMzO,QAAQ6tB,aAEtB11B,KAAKsW,MAAMzO,QAAQ6tB,YAAY/3B,KAAKqC,KAAKsW,MAAOpG,EAAKmlB,eAAgBr1B,KAAKsW,MAAMqf,cAAcR,iBAG3Fn1B,KAAKsW,MAAMzO,QAAQ+tB,kBAAoB51B,KAAKsW,MAAMob,UAAU,eAAe,IAE9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,YAItC3F,EAAc/wB,UAAUq2B,mBAAqB,SAAU3e,EAAS5G,EAAME,EAAIolB,EAAOO,GAEhF,IACIC,EADAC,EAAYnf,EAAQxW,QAAQ4P,GAG5B+lB,GAAa,IAEhBnf,EAAQjC,OAAOohB,EAAW,IAE1BD,EAAUlf,EAAQxW,QAAQ8P,KAEX,EAEVolB,IAEHQ,GAAoB,GAIrBA,EAAUC,EAGXnf,EAAQjC,OAAOmhB,EAAS,EAAG9lB,GAEvB6lB,GAEH/1B,KAAKsW,MAAMka,WAAWzS,KAAKxY,QAAQ,SAAUssB,GAE5C,GAAIA,EAAIqE,MAAMr2B,OAAQ,CAErB,IAAIyG,EAAOurB,EAAIqE,MAAMrhB,OAAOohB,EAAW,GAAG,GAE1CpE,EAAIqE,MAAMrhB,OAAOmhB,EAAS,EAAG1vB,QAOlC6pB,EAAc/wB,UAAU+2B,eAAiB,SAAUrD,EAAQxuB,EAAU8xB,GACpE,IAAIpgB,EAAQhW,KAERsxB,EAAO,EACP/L,EAAS,EACT8Q,EAAS,EACTrD,EAAQF,EAAOpsB,aAEnB,OAAO,IAAI4vB,QAAQ,SAAUC,EAASC,GAYrC,QAVwB,IAAblyB,IAEVA,EAAW0R,EAAMM,MAAMzO,QAAQ4uB,6BAGP,IAAdL,IAEVA,EAAYpgB,EAAMM,MAAMzO,QAAQ6uB,yBAG7B5D,EAAO6B,QAAS,CAKnB,OAAQrwB,GAEP,IAAK,SAEL,IAAK,SAEJ+xB,GAAUrgB,EAAMjT,QAAQ+B,YAAc,EAEtC,MAED,IAAK,QAEJuxB,EAASrD,EAAMluB,YAAckR,EAAMqa,eAAevrB,YASpD,IAAKsxB,IAEJ7Q,EAASyN,EAAM2D,YAEF,GAAKpR,EAASyN,EAAMnuB,YAAcmR,EAAMjT,QAAQ+B,YAE5D,OAAO,EAOTwsB,EAAO0B,EAAM2D,WAAa3gB,EAAMjT,QAAQ4tB,WAAa0F,EAErD/E,EAAOnb,KAAKuG,IAAIvG,KAAK2G,IAAIwU,EAAMtb,EAAMM,MAAMka,WAAWztB,QAAQyuB,YAAcxb,EAAMM,MAAMka,WAAWztB,QAAQ+B,aAAc,GAEzHkR,EAAMM,MAAMka,WAAWa,iBAAiBC,GAExCtb,EAAMqb,iBAAiBC,GAEvBiF,SAGA10B,QAAQ+0B,KAAK,qCAEbJ,EAAO,wCAQVrG,EAAc/wB,UAAUy3B,cAAgB,SAAUhF,GAEjD,IAEIqE,EAAQ,GAOZ,OATWl2B,KAINywB,eAAelrB,QAAQ,SAAUutB,GAErCoD,EAAMr1B,KAAKiyB,EAAOgE,aAAajF,MAGzBqE,GAMR/F,EAAc/wB,UAAU23B,iBAAmB,WAE1C,IAAI3E,EAAOpyB,KACPg3B,EAAa5E,EAAK9b,MAAMvT,QAAQ+B,YAIpCmyB,EAAa,EAsCb,OAjCI7E,EAAK5B,WAAWztB,QAAQm0B,aAAe9E,EAAK5B,WAAWztB,QAAQo0B,eAElEH,GAAc5E,EAAK5B,WAAWztB,QAAQ8B,YAAcutB,EAAK5B,WAAWztB,QAAQ+B,aAG7E9E,KAAKywB,eAAelrB,QAAQ,SAAUutB,GAErC,IAAItuB,EAAO4yB,EAAUC,EAEjBvE,EAAO6B,UAEVnwB,EAAQsuB,EAAOH,WAAWnuB,OAAS,EAEnC4yB,OAAqC,IAAnBtE,EAAOsE,SAA0BhF,EAAK9b,MAAMzO,QAAQyvB,eAAiBhjB,SAASwe,EAAOsE,UAMrGC,EAJkB,iBAAT7yB,EAENA,EAAMlE,QAAQ,MAAQ,EAEd02B,EAAa,IAAM1iB,SAAS9P,GAG5B8P,SAAS9P,GAIVA,EAGZyyB,GAAcI,EAAWD,EAAWC,EAAWD,KAI1CH,GAGR9G,EAAc/wB,UAAUm4B,UAAY,SAAU5E,EAAYC,EAAQC,GAEjE,IAAIC,EAAS9yB,KAAKuyB,WAAWI,EAAYC,EAAQC,GAEjD7yB,KAAKwyB,kBAEDxyB,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiBxB,aAGjCjxB,KAAKsW,MAAMob,UAAU,gBAExB1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKsW,MAAMka,WAAWiH,YAG7Dz3B,KAAK0yB,SAEsC,cAAvC1yB,KAAKsW,MAAM5Y,QAAQuZ,OAAOygB,WAE7B5E,EAAO6E,oBAGR33B,KAAK4zB,wBAEL5zB,KAAKsW,MAAMka,WAAWoH,gBAMvBzH,EAAc/wB,UAAUy4B,iBAAmB,SAAU/E,GAEpD,IACIG,EADAjB,EAAQc,EAAOgF,WAMf9F,UAEIhyB,KAAK0wB,eAAesB,IAM5BiB,EAAQjzB,KAAKywB,eAAenwB,QAAQwyB,KAEvB,GAEZ9yB,KAAKywB,eAAe5b,OAAOoe,EAAO,IAMnCA,EAAQjzB,KAAK8W,QAAQxW,QAAQwyB,KAEhB,GAEZ9yB,KAAK8W,QAAQjC,OAAOoe,EAAO,GAGxBjzB,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiBxB,aAGrCjxB,KAAK0yB,UAMNvC,EAAc/wB,UAAUszB,OAAS,SAAUppB,GAEtCA,IAECuM,EAAUzW,UAAU24B,QAAQC,UAAUh4B,KAAK+C,UAE9C/C,KAAK4zB,wBAGN5zB,KAAKsW,MAAMka,WAAWyH,cAEtBj4B,KAAKsW,MAAMka,WAAWoH,gBAGoB,cAAvC53B,KAAKsW,MAAM5Y,QAAQuZ,OAAOygB,UAE7B13B,KAAKsW,MAAM5Y,QAAQuZ,OAAOA,SAGtB3N,EAEHtJ,KAAKsW,MAAM5Y,QAAQuZ,OAAOA,SAGtBjX,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiByF,SAKnCl4B,KAAKsW,MAAMob,UAAU,kBAExB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAc1a,SAG9BjX,KAAKsW,MAAMob,UAAU,gBAExB1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKsW,MAAMka,WAAWiH,YAGzDnuB,IAECtJ,KAAKsW,MAAMzO,QAAQ+tB,kBAAoB51B,KAAKsW,MAAMob,UAAU,eAAe,IAE9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,WAGjC91B,KAAKsW,MAAMob,UAAU,gBAExB1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAY9E,UAIjC1yB,KAAKsW,MAAM6hB,cAAczF,UAK1B,IAAI2B,EAAkB,SAAyBvB,GAE9C9yB,KAAKo4B,QAAUtF,EAEf9yB,KAAK0I,KAAO,mBAGb2rB,EAAgBj1B,UAAUsH,WAAa,WAEtC,OAAO1G,KAAKo4B,QAAQ1xB,cAGrB2tB,EAAgBj1B,UAAU61B,cAAgB,WAEzC,OAAOj1B,KAAKo4B,QAAQnD,iBAGrBZ,EAAgBj1B,UAAU04B,SAAW,WAEpC,OAAO93B,KAAKo4B,QAAQN,YAGrBzD,EAAgBj1B,UAAUi5B,SAAW,WAEpC,IAAInC,EAAQ,GAOZ,OALAl2B,KAAKo4B,QAAQlC,MAAM3wB,QAAQ,SAAUe,GAEpC4vB,EAAMr1B,KAAKyF,EAAK+uB,kBAGVa,GAGR7B,EAAgBj1B,UAAUk5B,cAAgB,WAEzC,OAAOt4B,KAAKo4B,QAAQzD,SAGrBN,EAAgBj1B,UAAUm5B,KAAO,WAE5Bv4B,KAAKo4B,QAAQI,QAEhBx4B,KAAKo4B,QAAQthB,QAAQvR,QAAQ,SAAUutB,GAEtCA,EAAOyF,SAIRv4B,KAAKo4B,QAAQG,QAIflE,EAAgBj1B,UAAU2M,KAAO,WAE5B/L,KAAKo4B,QAAQI,QAEhBx4B,KAAKo4B,QAAQthB,QAAQvR,QAAQ,SAAUutB,GAEtCA,EAAO/mB,SAIR/L,KAAKo4B,QAAQrsB,QAIfsoB,EAAgBj1B,UAAUq5B,OAAS,WAE9Bz4B,KAAKo4B,QAAQzD,QAEhB30B,KAAK+L,OAGL/L,KAAKu4B,QAIPlE,EAAgBj1B,UAAUs5B,OAAS,WAElC14B,KAAKo4B,QAAQM,UAGdrE,EAAgBj1B,UAAUu5B,cAAgB,WAEzC,IAAIvJ,EAAS,GAUb,OARIpvB,KAAKo4B,QAAQthB,QAAQjX,QAExBG,KAAKo4B,QAAQthB,QAAQvR,QAAQ,SAAUutB,GAEtC1D,EAAOvuB,KAAKiyB,EAAOuC,kBAIdjG,GAGRiF,EAAgBj1B,UAAUw5B,gBAAkB,WAE3C,OAAO54B,KAAKo4B,QAAQS,kBAAkB9F,GAAS/yB,KAAKo4B,QAAQS,OAAOxD,gBAGpEhB,EAAgBj1B,UAAUk1B,SAAW,WAEpC,OAAOt0B,KAAKo4B,SAGb/D,EAAgBj1B,UAAU05B,SAAW,WAEpC,OAAO94B,KAAKo4B,QAAQ9hB,MAAMqf,cAAcQ,eAAen2B,KAAKo4B,UAG7D/D,EAAgBj1B,UAAU25B,SAAW,WAEpC,OAAO/4B,KAAKo4B,QAAQ9hB,OAGrB+d,EAAgBj1B,UAAU45B,kBAAoB,WAEzCh5B,KAAKo4B,QAAQ9hB,MAAMob,UAAU,UAAU,IAE1C1xB,KAAKo4B,QAAQ9hB,MAAM5Y,QAAQsR,OAAOiqB,qBAAqBj5B,KAAKo4B,UAI9D/D,EAAgBj1B,UAAU85B,mBAAqB,WAE1Cl5B,KAAKo4B,QAAQ9hB,MAAMob,UAAU,UAAU,IAE1C1xB,KAAKo4B,QAAQ9hB,MAAM5Y,QAAQsR,OAAOkqB,mBAAmBl5B,KAAKo4B,UAI5D/D,EAAgBj1B,UAAU+5B,qBAAuB,SAAU16B,GAEtDuB,KAAKo4B,QAAQ9hB,MAAMob,UAAU,UAAU,IAE1C1xB,KAAKo4B,QAAQ9hB,MAAM5Y,QAAQsR,OAAOmqB,qBAAqBn5B,KAAKo4B,QAAS35B,IAIvE41B,EAAgBj1B,UAAUg6B,cAAgB,WAEzC,IAAIC,EAAUr5B,KAAKo4B,QAAQkB,aAE3B,QAAOD,GAAUA,EAAQhE,gBAG1BhB,EAAgBj1B,UAAUm6B,cAAgB,WAEzC,IAAIC,EAAUx5B,KAAKo4B,QAAQqB,aAE3B,QAAOD,GAAUA,EAAQnE,gBAG1B,IAAItC,EAAS,SAASA,EAAOT,EAAKuG,GAEjC,IAAIzG,EAAOpyB,KAEXA,KAAKsW,MAAQuiB,EAAOviB,MAEpBtW,KAAK2yB,WAAaL,EAElBtyB,KAAK64B,OAASA,EAEd74B,KAAK0I,KAAO,SAEZ1I,KAAK8W,QAAU,GAEf9W,KAAKk2B,MAAQ,GAEbl2B,KAAK+C,QAAU/C,KAAK8C,gBAEpB9C,KAAK05B,gBAAiB,EAEtB15B,KAAK25B,aAAe35B,KAAK45B,qBAEzB55B,KAAKw4B,SAAU,EAEfx4B,KAAK65B,SAAU,EAEf75B,KAAK85B,SAAW,GAKhB95B,KAAKgyB,MAAQ,GAEbhyB,KAAK+5B,eAAiB,GAEtB/5B,KAAKg6B,cAAgB,GAErBh6B,KAAKi6B,cAAgB,GAErBj6B,KAAKk6B,SAASl6B,KAAK2yB,WAAWX,OAE9BhyB,KAAKm6B,kBAELn6B,KAAKtC,QAAU,GAGfsC,KAAKo6B,WAAa,CAEjBC,WAAW,EAEXC,cAAc,EAEdC,aAAa,EAEbC,SAAS,EAETC,YAAY,EAEZC,aAAa,EAEbC,gBAAgB,EAEhBC,gBAAgB,EAEhBC,eAAe,EAEfC,cAAc,EAEdC,eAAe,GAIhB/6B,KAAKwE,MAAQ,KAEbxE,KAAKg7B,YAAc,GAEnBh7B,KAAKo3B,SAAW,KAEhBp3B,KAAKi7B,eAAiB,GAEtBj7B,KAAKk7B,YAAa,EAGlBl7B,KAAK20B,SAAU,EAGf30B,KAAKm7B,8BAID7I,EAAIxb,SAEP9W,KAAKw4B,SAAU,EAEflG,EAAIxb,QAAQvR,QAAQ,SAAU+sB,EAAK90B,GAElC,IAAI49B,EAAS,IAAIrI,EAAOT,EAAKF,GAE7BA,EAAKiJ,aAAaD,KAGnBhJ,EAAKkJ,yBAGLzC,EAAOpF,oBAAoBzzB,MAGxBsyB,EAAIiJ,YAAgD,IAAnCv7B,KAAKsW,MAAMzO,QAAQ2zB,aAAyBx7B,KAAKsW,MAAMob,UAAU,YAErF1xB,KAAKsW,MAAM5Y,QAAQ+9B,QAAQC,WAAU,GAGtC17B,KAAK27B,gBAGN5I,EAAO3zB,UAAU0D,cAAgB,WAEhC,IAAIguB,EAAKjuB,SAASC,cAAc,OAQhC,OANAguB,EAAGC,UAAUvc,IAAI,iBAEjBsc,EAAG8K,aAAa,OAAQ,gBAExB9K,EAAG8K,aAAa,YAAa,QAEtB9K,GAGRiC,EAAO3zB,UAAUw6B,mBAAqB,WAErC,IAAI9I,EAAKjuB,SAASC,cAAc,OAIhC,OAFAguB,EAAGC,UAAUvc,IAAI,4BAEVsc,GAGRiC,EAAO3zB,UAAU+6B,gBAAkB,WAClC,IAAI0B,EAAS77B,KAEb9B,OAAOmC,KAAKL,KAAK2yB,YAAYptB,QAAQ,SAAUxG,IAEC,IAA3C88B,EAAOC,kBAAkBx7B,QAAQvB,IAEpC8C,QAAQ+0B,KAAK,yCAA2CiF,EAAO7J,OAAS6J,EAAOlJ,WAAWpqB,OAAS,YAAaxJ,MAKnHg0B,EAAO3zB,UAAU86B,SAAW,SAAUlI,GAErChyB,KAAKgyB,MAAQA,EAEbhyB,KAAK+5B,eAAiB/H,EAAQhyB,KAAKsW,MAAMzO,QAAQk0B,qBAAuB/J,EAAMjiB,MAAM/P,KAAKsW,MAAMzO,QAAQk0B,sBAAwB,CAAC/J,GAAS,GAEzIhyB,KAAKg6B,cAAgBh6B,KAAK+5B,eAAel6B,OAAS,EAAIG,KAAKg8B,eAAiBh8B,KAAKi8B,aAEjFj8B,KAAKi6B,cAAgBj6B,KAAK+5B,eAAel6B,OAAS,EAAIG,KAAKk8B,cAAgBl8B,KAAKm8B,cAKjFpJ,EAAO3zB,UAAUs0B,uBAAyB,SAAUZ,GAEnD9yB,KAAK64B,OAAOnF,uBAAuBZ,IAKpCC,EAAO3zB,UAAUq0B,oBAAsB,SAAUX,GAEhD9yB,KAAK64B,OAAOpF,oBAAoBX,IAKjCC,EAAO3zB,UAAUu0B,mBAAqB,WAEjC3zB,KAAKw4B,QAERx4B,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAOa,uBAIR3zB,KAAK0zB,uBAAuB1zB,OAI9B+yB,EAAO3zB,UAAU+7B,4BAA8B,gBAEJ,IAA/Bn7B,KAAK2yB,WAAWyJ,aAE1Bp8B,KAAK2yB,WAAW0J,YAAcr8B,KAAK2yB,WAAWyJ,WAE9Cv6B,QAAQ+0B,KAAK,wFAIf7D,EAAO3zB,UAAUk9B,WAAa,WAE7B,IAAIlK,EAAOpyB,KACPsyB,EAAMF,EAAKO,WAIXkH,EAAUvH,EAAIiK,gBAAiC,IAAhBjK,EAAIuH,QAAoBvH,EAAIiK,cAAgBnK,EAAK9b,MAAMzO,QAAQ20B,eAE9F3C,GAEa,IAAZA,EAECvH,EAAIN,MAEPI,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,WAAaszB,EAAIN,MAAO,SAAUvzB,GAElE2zB,EAAKrvB,QAAQ64B,aAAa,QAASn9B,GAAS6zB,EAAI/pB,SAIjD6pB,EAAKrvB,QAAQ64B,aAAa,QAAStJ,EAAI/pB,QAIlB,mBAAXsxB,IAIM,KAFhBA,EAAUA,EAAQzH,EAAKiD,mBAItBwE,EAAU,IAIZzH,EAAKrvB,QAAQ64B,aAAa,QAAS/B,IAIpCzH,EAAKrvB,QAAQ64B,aAAa,QAAS,KAMrC7I,EAAO3zB,UAAUu8B,aAAe,WAK/B,IAHA,IAAIvJ,EAAOpyB,KACPsyB,EAAMF,EAAKO,WAERP,EAAKrvB,QAAQ8tB,YACnBuB,EAAKrvB,QAAQgC,YAAYqtB,EAAKrvB,QAAQ8tB,YAClCyB,EAAIoK,iBAERtK,EAAKrvB,QAAQguB,UAAUvc,IAAI,0BAEA,SAAvB8d,EAAIoK,gBAEPtK,EAAKrvB,QAAQguB,UAAUvc,IAAI,gCAI7B4d,EAAKsH,eAAiBtH,EAAKuK,cAE3BvK,EAAKsH,eAAiBtH,EAAKwK,4BAE3BxK,EAAKrvB,QAAQ6B,YAAYwtB,EAAKsH,gBAE1BtH,EAAKoG,QAERpG,EAAKyK,oBAGLzK,EAAK0K,qBAGN1K,EAAKkK,aAIDlK,EAAK9b,MAAMzO,QAAQk1B,kBAAoB3K,EAAK9b,MAAMob,UAAU,kBAE/DU,EAAK9b,MAAM5Y,QAAQs/B,cAAcC,iBAAiB,SAAU7K,EAAMA,EAAKrvB,SAKpEuvB,EAAI4K,cAAgB9K,EAAK9b,MAAMob,UAAU,WAAaU,EAAK9b,MAAMob,UAAU,eAEnC,IAAhCY,EAAI6K,yBAA2C7K,EAAIN,OAE7DI,EAAK9b,MAAM5Y,QAAQ++B,SAASW,iCAAiC9K,EAAIN,MAAOM,EAAI6K,yBAG7E/K,EAAK9b,MAAM5Y,QAAQsR,OAAOiuB,iBAAiB7K,IAKxCA,EAAK9b,MAAMob,UAAU,kBAExBU,EAAK9b,MAAM5Y,QAAQi0B,cAAcsL,iBAAiB7K,GAK/CA,EAAK9b,MAAMzO,QAAQw1B,iBAAmBjL,EAAKoG,SAAWpG,EAAK9b,MAAMob,UAAU,eAE9EU,EAAK9b,MAAM5Y,QAAQ63B,WAAW0H,iBAAiB7K,IAK3CE,EAAIgL,SAAWhL,EAAIiL,aAAenL,EAAK9b,MAAMob,UAAU,gBAE3DU,EAAK9b,MAAM5Y,QAAQ85B,YAAYyF,iBAAiB7K,GAKjDA,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDgwB,EAAKkK,gBAIPvJ,EAAO3zB,UAAUu9B,YAAc,WAE9B,IAEIc,EACAC,EACAC,EAJAvL,EAAOpyB,KACPsyB,EAAMF,EAAKO,WAOe,mBAAnBL,EAAIsL,aAEdxL,EAAKrvB,QAAQy6B,iBAAiB,QAAS,SAAUp7B,GAChDkwB,EAAIsL,YAAYx7B,EAAGgwB,EAAKiD,kBAIO,mBAAtB/C,EAAIuL,gBAEdzL,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GACnDkwB,EAAIuL,eAAez7B,EAAGgwB,EAAKiD,kBAIG,mBAArB/C,EAAIwL,eAEd1L,EAAKrvB,QAAQy6B,iBAAiB,cAAe,SAAUp7B,GACtDkwB,EAAIwL,cAAc17B,EAAGgwB,EAAKiD,kBAMA,mBAAjB/C,EAAIyL,YAEdJ,GAAM,EAENvL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDu7B,GAAM,GACJ,CAAEK,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE/Cu7B,GAEHrL,EAAIyL,UAAU37B,EAAGgwB,EAAKiD,gBAGvBsI,GAAM,KAIuB,mBAApBrL,EAAI2L,eAEdR,EAAS,KAETrL,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE/Cq7B,GAEH5vB,aAAa4vB,GAEbA,EAAS,KAETnL,EAAI2L,aAAa77B,EAAGgwB,EAAKiD,iBAGzBoI,EAASpxB,WAAW,WAEnBwB,aAAa4vB,GAEbA,EAAS,MACP,QAK0B,mBAArBnL,EAAI4L,gBAEdR,EAAU,KAEVtL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDyL,aAAa6vB,GAEbA,EAAUrxB,WAAW,WAEpBwB,aAAa6vB,GAEbA,EAAU,KAEVC,GAAM,EAENrL,EAAI4L,cAAc97B,EAAGgwB,EAAKiD,iBACxB,MACD,CAAE2I,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAEnDyL,aAAa6vB,GAEbA,EAAU,QAMgB,mBAAjBpL,EAAI+H,YAEdjI,EAAKgI,WAAWC,UAAY/H,EAAI+H,WAGF,mBAApB/H,EAAIgI,eAEdlI,EAAKgI,WAAWE,aAAehI,EAAIgI,cAGN,mBAAnBhI,EAAIiI,cAEdnI,EAAKgI,WAAWG,YAAcjI,EAAIiI,aAKF,mBAAtBjI,EAAIqI,iBAEdvI,EAAKgI,WAAWO,eAAiBrI,EAAIqI,gBAGL,mBAAtBrI,EAAIsI,iBAEdxI,EAAKgI,WAAWQ,eAAiBtI,EAAIsI,gBAGN,mBAArBtI,EAAIuI,gBAEdzI,EAAKgI,WAAWS,cAAgBvI,EAAIuI,eAGN,mBAApBvI,EAAIwI,eAEd1I,EAAKgI,WAAWU,aAAexI,EAAIwI,cAGJ,mBAArBxI,EAAIyI,gBAEd3I,EAAKgI,WAAWW,cAAgBzI,EAAIyI,eAKX,mBAAfzI,EAAIkI,UAEdpI,EAAKgI,WAAWI,QAAUlI,EAAIkI,SAGF,mBAAlBlI,EAAImI,aAEdrI,EAAKgI,WAAWK,WAAanI,EAAImI,YAGJ,mBAAnBnI,EAAIoI,cAEdtI,EAAKgI,WAAWM,YAAcpI,EAAIoI,aAKN,mBAAlBpI,EAAI6L,aAEd/L,EAAKgI,WAAW+D,WAAa7L,EAAI6L,YAGJ,mBAAnB7L,EAAI8L,cAEdhM,EAAKgI,WAAWgE,YAAc9L,EAAI8L,aAGC,mBAAzB9L,EAAI+L,oBAEdjM,EAAKgI,WAAWiE,kBAAoB/L,EAAI+L,oBAM1CtL,EAAO3zB,UAAU09B,mBAAqB,WAErC,IAAI1K,EAAOpyB,KACPsyB,EAAMF,EAAKO,WACXrc,EAAQ8b,EAAK9b,OAKbA,EAAMob,UAAU,SAEnBpb,EAAM5Y,QAAQ4gC,KAAKrB,iBAAiB7K,EAAMA,EAAKsH,gBAK5CpjB,EAAMob,UAAU,WAEnBpb,EAAM5Y,QAAQuE,OAAOg7B,iBAAiB7K,QAKd,IAAdE,EAAIiM,QAAyBjoB,EAAMob,UAAU,SAEvDpb,EAAM5Y,QAAQ8gC,KAAKvB,iBAAiB7K,QAKT,IAAjBE,EAAImM,WAA4BnoB,EAAMob,UAAU,aAE1Dpb,EAAM5Y,QAAQuT,SAASgsB,iBAAiB7K,GAKrC9b,EAAMob,UAAU,YAEnBpb,EAAM5Y,QAAQghC,QAAQzB,iBAAiB7K,GAKpC9b,EAAMob,UAAU,aAEnBpb,EAAM5Y,QAAQihC,SAAS1B,iBAAiB7K,GAKrC/hB,EAAQiG,EAAMzO,QAAQ4qB,mBAAqBnc,EAAMob,UAAU,qBAE9Dpb,EAAM5Y,QAAQ+0B,iBAAiBwK,iBAAiB7K,QAKvB,IAAfE,EAAIqC,UAEVrC,EAAIqC,QAEPvC,EAAKmG,MAAK,GAGVnG,EAAKrmB,MAAK,IAMRumB,EAAIsM,WAEWtM,EAAIsM,SAAS7uB,MAAM,KAEzBxK,QAAQ,SAAUkP,GAE7B2d,EAAKrvB,QAAQguB,UAAUvc,IAAIC,KAIzB6d,EAAIN,OAEPhyB,KAAK+C,QAAQ64B,aAAa,kBAAmBtJ,EAAIN,OAKlDI,EAAKyM,iBAAmC,IAAhBvM,EAAI8E,SAA0BhF,EAAK9b,MAAMzO,QAAQyvB,eAAiBhjB,SAASge,EAAI8E,WAEvGhF,EAAKuF,oBAILvF,EAAKyH,QAAUzH,EAAKO,WAAWkH,UAAuC,IAA5BzH,EAAKO,WAAWkH,QAAoBzH,EAAKO,WAAWkH,QAAUzH,EAAK9b,MAAMzO,QAAQi3B,SAI3H1M,EAAK0H,cAA2C,IAAzB1H,EAAKO,WAAWoM,MAAuB,GAAK3M,EAAKO,WAAWoM,OAGpFhM,EAAO3zB,UAAUw9B,0BAA4B,WAEjC58B,KACI2yB,WADJ3yB,KAEMsW,MAFjB,IAIIojB,EAAiB72B,SAASC,cAAc,OAM5C,OAJA42B,EAAe3I,UAAUvc,IAAI,yBAE7BklB,EAAe90B,YARJ5E,KAQqBg/B,2BAEzBtF,GAKR3G,EAAO3zB,UAAU4/B,wBAA0B,WAE1C,IAAI5M,EAAOpyB,KACPsyB,EAAMF,EAAKO,WACXrc,EAAQ8b,EAAK9b,MAGb2oB,EAAqBp8B,SAASC,cAAc,OAIhD,GAFAm8B,EAAmBlO,UAAUvc,IAAI,uBAE7B8d,EAAI4M,cAAe,CAEtB,IAAIC,EAAet8B,SAASC,cAAc,SAE1Cq8B,EAAapO,UAAUvc,IAAI,0BAE3B2qB,EAAa3B,iBAAiB,QAAS,SAAUp7B,GAEhDA,EAAE+K,kBAEFgyB,EAAaC,UAGdD,EAAa3B,iBAAiB,SAAU,WAEvClL,EAAI/pB,MAAQ42B,EAAa1gC,MAEzB6X,EAAMzO,QAAQw3B,mBAAmB1hC,KAAKy0B,EAAK9b,MAAO8b,EAAKiD,kBAGxD4J,EAAmBr6B,YAAYu6B,GAE3B7M,EAAIN,MAEP1b,EAAM5Y,QAAQ++B,SAASz9B,KAAK,WAAaszB,EAAIN,MAAO,SAAUsN,GAE7DH,EAAa1gC,MAAQ6gC,GAAQhN,EAAI/pB,OAAS,UAI3C42B,EAAa1gC,MAAQ6zB,EAAI/pB,OAAS,aAI/B+pB,EAAIN,MAEP1b,EAAM5Y,QAAQ++B,SAASz9B,KAAK,WAAaszB,EAAIN,MAAO,SAAUsN,GAE7DlN,EAAKmN,yBAAyBN,EAAoBK,GAAQhN,EAAI/pB,OAAS,WAIxE6pB,EAAKmN,yBAAyBN,EAAoB3M,EAAI/pB,OAAS,SAIjE,OAAO02B,GAGRlM,EAAO3zB,UAAUmgC,yBAA2B,SAAUzO,EAAIvoB,GAEzD,IAAIi3B,EAAWC,EAAUC,EAAQC,EAEjC,GAAI3/B,KAAK2yB,WAAWiN,gBAAkB5/B,KAAKsW,MAAMob,UAAU,UAwB1D,OAtBA8N,EAAYx/B,KAAKsW,MAAM5Y,QAAQuE,OAAO49B,aAAa7/B,KAAK2yB,WAAWiN,gBAEnED,EAAW,CAEVG,SAAU,WAET,OAAOv3B,GAGR7B,WAAY,WAEX,OAAOoqB,IAOT4O,EAA2B,mBAF3BA,EAAS1/B,KAAK2yB,WAAWoN,sBAAwB,IAETL,IAAWA,OAIvB,KAF5BD,EAAWD,EAAU7hC,KAAKqC,KAAKsW,MAAM5Y,QAAQuE,OAAQ09B,EAAUD,IAErB,YAAcrvB,EAAQovB,IAE/D,IAAK,SAEAA,aAAoBO,KAEvBlP,EAAGlsB,YAAY66B,IAGf3O,EAAGmP,UAAY,GAEfp+B,QAAQ+0B,KAAK,uJAAwJ6I,IAGtK,MAED,IAAK,YAEL,IAAK,OAEJ3O,EAAGmP,UAAY,GAEf,MAED,QAECnP,EAAGmP,UAAYR,OAKjB3O,EAAGmP,UAAY13B,GAMjBwqB,EAAO3zB,UAAUy9B,kBAAoB,WAEpC78B,KAAK+C,QAAQguB,UAAUvc,IAAI,uBAE3BxU,KAAK+C,QAAQ64B,aAAa,OAAQ,eAElC57B,KAAK+C,QAAQ64B,aAAa,aAAc57B,KAAK2yB,WAAWpqB,OAExDvI,KAAK+C,QAAQ6B,YAAY5E,KAAK25B,eAK/B5G,EAAO3zB,UAAU68B,aAAe,SAAU1oB,GAEzC,OAAOA,EAAKvT,KAAKgyB,QAKlBe,EAAO3zB,UAAU48B,eAAiB,SAAUzoB,GAO3C,IALA,IAGI6b,EAHA8Q,EAAU3sB,EACV4sB,EAAYngC,KAAK+5B,eACjBl6B,EAASsgC,EAAUtgC,OAGdrC,EAAI,EAAGA,EAAIqC,IAInBuvB,EAFA8Q,EAAUA,EAAQC,EAAU3iC,IAIvB0iC,GANsB1iC,KAY5B,OAAO4xB,GAKR2D,EAAO3zB,UAAU+8B,aAAe,SAAU5oB,EAAM9U,GAE3CuB,KAAKgyB,QAERze,EAAKvT,KAAKgyB,OAASvzB,IAMrBs0B,EAAO3zB,UAAU88B,cAAgB,SAAU3oB,EAAM9U,GAMhD,IAJA,IAAIyhC,EAAU3sB,EACV4sB,EAAYngC,KAAK+5B,eACjBl6B,EAASsgC,EAAUtgC,OAEdrC,EAAI,EAAGA,EAAIqC,EAAQrC,IAEvBA,GAAKqC,EAAS,EAEjBqgC,EAAQC,EAAU3iC,IAAMiB,GAGnByhC,EAAQC,EAAU3iC,MAEtB0iC,EAAQC,EAAU3iC,IAAM,IAGzB0iC,EAAUA,EAAQC,EAAU3iC,MAO/Bu1B,EAAO3zB,UAAUi8B,aAAe,SAAUvI,GAE9B9yB,KAEF25B,cAFE35B,KAIL8W,QAAQjW,KAAKiyB,GAJR9yB,KAML25B,aAAa/0B,YAAYkuB,EAAOpsB,eAGrC7E,QAAQ+0B,KAAK,qFAMf7D,EAAO3zB,UAAU40B,cAAgB,SAAUoM,EAAW37B,GAIrD,IAAI47B,EAAergC,KAAK64B,OAAOL,QAAUx4B,KAAK64B,OAAOyH,kBAAkBnJ,aAAe1yB,GAAUzE,KAAK64B,OAAOzH,oBAAoB+F,aAKhIn3B,KAAK+C,QAAQsB,MAAMI,OAAS47B,EAAe,KAEvCrgC,KAAKw4B,UAERx4B,KAAK25B,aAAat1B,MAAMwvB,UAAYwM,EAAergC,KAAK05B,eAAe6G,aAAe,MAKlFvgC,KAAKw4B,SAAyB,QAAd4H,IAInBpgC,KAAK+C,QAAQsB,MAAMm8B,WAFF,WAAdJ,EAE6BpgC,KAAK+C,QAAQo0B,aAAen3B,KAAK05B,eAAe6G,aAAe,MAG9DvgC,KAAK+C,QAAQo0B,aAAen3B,KAAK05B,eAAe6G,cAAgB,EAAI,MAIvGvgC,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAOkB,cAAcoM,MAMvBrN,EAAO3zB,UAAU00B,mBAAqB,WAErC9zB,KAAK+C,QAAQsB,MAAMm8B,WAAa,GAEhCxgC,KAAK+C,QAAQsB,MAAMI,OAAS,GAE5BzE,KAAK+C,QAAQsB,MAAMwvB,UAAY,GAE/B7zB,KAAK25B,aAAat1B,MAAMwvB,UAAY,GAEpC7zB,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAOgB,wBASTf,EAAO3zB,UAAUsH,WAAa,WAE7B,OAAO1G,KAAK+C,SAKbgwB,EAAO3zB,UAAUkhC,gBAAkB,WAElC,OAAOtgC,KAAK25B,cAKb5G,EAAO3zB,UAAU04B,SAAW,WAE3B,OAAO93B,KAAKgyB,OAKbe,EAAO3zB,UAAUqhC,eAAiB,WAEjC,OAAKzgC,KAAKw4B,UAKLx4B,KAAK8W,QAAQjX,QAETG,KAAK8W,QAAQ,GAAG2pB,iBALjBzgC,MAeT+yB,EAAO3zB,UAAUshC,cAAgB,WAEhC,OAAK1gC,KAAKw4B,UAKLx4B,KAAK8W,QAAQjX,QAETG,KAAK8W,QAAQ9W,KAAK8W,QAAQjX,OAAS,GAAG6gC,gBALvC1gC,MAeT+yB,EAAO3zB,UAAUw1B,WAAa,WAE7B,OAAO50B,KAAK8W,SAKbic,EAAO3zB,UAAUi5B,SAAW,WAE3B,OAAOr4B,KAAKk2B,OAKbnD,EAAO3zB,UAAUg0B,aAAe,WAE/B,OAAIpzB,KAAK64B,OAAOL,QAERx4B,KAAK64B,OAAOzF,eAGZpzB,MAMT+yB,EAAO3zB,UAAU61B,cAAgB,SAAU0L,GAE1C,IAAIC,EAAU,GAYd,OAVI5gC,KAAKw4B,SAAWmI,IAEnB3gC,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9B8N,EAAQ//B,KAAKiyB,EAAOmC,eAAc,MAGnCj1B,KAAK2yB,WAAW7b,QAAU8pB,GAGpB5gC,KAAK2yB,YAMbI,EAAO3zB,UAAUk8B,sBAAwB,WAExC,IAAI3G,GAAU,EAEd30B,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE1BA,EAAO6B,UAEVA,GAAU,KAIRA,GAEH30B,KAAKu4B,OAELv4B,KAAK64B,OAAOviB,MAAMzO,QAAQg5B,wBAAwBljC,KAAKqC,KAAKsW,MAAOtW,KAAKq1B,gBAAgB,IAGxFr1B,KAAK+L,QAMPgnB,EAAO3zB,UAAUm5B,KAAO,SAAUuI,EAAQC,GAEpC/gC,KAAK20B,UAET30B,KAAK20B,SAAU,EAEf30B,KAAK+C,QAAQsB,MAAMqoB,QAAU,GAEzB1sB,KAAK64B,OAAOL,SAEfx4B,KAAK64B,OAAOyC,wBAGbt7B,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAKiyB,SAGDv4B,KAAKw4B,SAA0B,OAAfx4B,KAAKwE,OAEzBxE,KAAK23B,oBAGN33B,KAAKsW,MAAMqf,cAAc/B,wBAErB5zB,KAAKsW,MAAMzO,QAAQ+tB,kBAAoB51B,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,YAGhCiL,GAAoB/gC,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAExG1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiBuO,uBAAuBhhC,KAAMA,KAAK20B,SAGlEmM,GAEJ9gC,KAAKsW,MAAMzO,QAAQg5B,wBAAwBljC,KAAKqC,KAAKsW,MAAOtW,KAAKq1B,gBAAgB,GAG9Er1B,KAAK64B,OAAOL,SAEfx4B,KAAK64B,OAAOoI,qBAOflO,EAAO3zB,UAAU2M,KAAO,SAAU+0B,EAAQC,GAErC/gC,KAAK20B,UAER30B,KAAK20B,SAAU,EAEf30B,KAAK+C,QAAQsB,MAAMqoB,QAAU,OAE7B1sB,KAAKsW,MAAMqf,cAAc/B,wBAErB5zB,KAAK64B,OAAOL,SAEfx4B,KAAK64B,OAAOyC,wBAGbt7B,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAKyF,SAGF/L,KAAKsW,MAAMzO,QAAQ+tB,kBAAoB51B,KAAKsW,MAAMob,UAAU,eAAe,IAE9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,YAGhCiL,GAAoB/gC,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAExG1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiBuO,uBAAuBhhC,KAAMA,KAAK20B,SAGlEmM,GAEJ9gC,KAAKsW,MAAMzO,QAAQg5B,wBAAwBljC,KAAKqC,KAAKsW,MAAOtW,KAAKq1B,gBAAgB,GAG9Er1B,KAAK64B,OAAOL,SAEfx4B,KAAK64B,OAAOoI,qBAKflO,EAAO3zB,UAAU6hC,iBAAmB,WAEnC,IAAIC,EAAa,EAEblhC,KAAK05B,gBAAkB15B,KAAK8W,QAAQjX,SAEvCG,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE1BA,EAAO6B,UAEVuM,GAAcpO,EAAOwC,cAIvBt1B,KAAK05B,eAAer1B,MAAM88B,SAAWD,EAAa,EAAI,OAIxDnO,EAAO3zB,UAAUgiC,SAAW,SAAU58B,GAErCxE,KAAKk7B,YAAa,EAElBl7B,KAAKqhC,eAAe78B,IAGrBuuB,EAAO3zB,UAAUiiC,eAAiB,SAAU78B,GAEvCytB,MAAMztB,KAETA,EAAQ2R,KAAKC,MAAMpW,KAAKsW,MAAMvT,QAAQ+B,YAAc,IAAMwP,SAAS9P,KAGpEA,EAAQ2R,KAAKuG,IAAI1c,KAAKo3B,SAAU5yB,GAEhCxE,KAAKwE,MAAQA,EAEbxE,KAAKg7B,YAAcx2B,EAAQA,EAAQ,KAAO,GAE1CxE,KAAK+C,QAAQsB,MAAMG,MAAQxE,KAAKg7B,YAE3Bh7B,KAAKw4B,SAETx4B,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAK86B,aAIHphC,KAAK64B,OAAOL,SAEfx4B,KAAK64B,OAAOoI,mBAKTjhC,KAAKsW,MAAMob,UAAU,kBAExB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAc1a,UAInC8b,EAAO3zB,UAAUkiC,iBAAmB,WAEnC,IAAIvjB,EAAO,GAEX/d,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAExBA,EAAKurB,IAAI0P,oBAE+B,OAAvCj7B,EAAKurB,IAAInrB,aAAa86B,cAEzBzjB,EAAKld,KAAKyF,EAAKurB,KAEfvrB,EAAKurB,IAAI4P,mBAGTn7B,EAAKurB,IAAI0P,mBAAoB,KAKhCxjB,EAAKxY,QAAQ,SAAUssB,GAEtBA,EAAI6P,eAGL3jB,EAAKxY,QAAQ,SAAUssB,GAEtBA,EAAI8P,mBAIN5O,EAAO3zB,UAAUk2B,SAAW,WAI3B,OAAOt1B,KAAKwE,OAGbuuB,EAAO3zB,UAAU20B,UAAY,WAE5B,OAAO/zB,KAAK+C,QAAQw9B,cAGrBxN,EAAO3zB,UAAUy/B,YAAc,SAAUzH,GAExCp3B,KAAKo3B,SAAWA,EAEhBp3B,KAAKi7B,eAAiB7D,EAAWA,EAAW,KAAO,GAEnDp3B,KAAK+C,QAAQsB,MAAM+yB,SAAWp3B,KAAKi7B,eAEnCj7B,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAKu4B,iBAIP9L,EAAO3zB,UAAUs5B,OAAS,WAErB14B,KAAKw4B,SAERx4B,KAAK8W,QAAQvR,QAAQ,SAAUutB,GAE9BA,EAAO4F,WAMT,IAFA,IAAIkJ,EAAY5hC,KAAKk2B,MAAMr2B,OAElBrC,EAAI,EAAGA,EAAIokC,EAAWpkC,IAE9BwC,KAAKk2B,MAAM,GAAGwC,SAGf14B,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,SAEzC/C,KAAKsW,MAAMqf,cAAckC,iBAAiB73B,OAQ3C+yB,EAAO3zB,UAAU03B,aAAe,SAAUjF,GAEzC,IAEIvrB,EAAO,IAAIu7B,EAFJ7hC,KAEe6xB,GAI1B,OAFA7xB,KAAKk2B,MAAMr1B,KAAKyF,GAETA,GAGRysB,EAAO3zB,UAAUk6B,WAAa,WAE7B,IAAIrG,EAAQjzB,KAAKsW,MAAMqf,cAAczC,gBAAgBlzB,MAErD,OAAOizB,GAAS,GAAIjzB,KAAKsW,MAAMqf,cAAclB,iBAAiBxB,EAAQ,IAGvEF,EAAO3zB,UAAUq6B,WAAa,WAE7B,IAAIxG,EAAQjzB,KAAKsW,MAAMqf,cAAczC,gBAAgBlzB,MAErD,OAAOizB,GAAS,GAAIjzB,KAAKsW,MAAMqf,cAAclB,iBAAiBxB,EAAQ,IAGvEF,EAAO3zB,UAAUu4B,kBAAoB,SAAUruB,GAE9CtJ,KAAKk7B,YAAa,OAImB,IAA1Bl7B,KAAK2yB,WAAWnuB,OAA0B8E,GAEpDtJ,KAAKohC,SAASphC,KAAK2yB,WAAWnuB,OAK3BxE,KAAKsW,MAAMob,UAAU,WAExB1xB,KAAKsW,MAAM5Y,QAAQsR,OAAO8yB,2BAG3B9hC,KAAK+hC,YAID/hC,KAAKsW,MAAMob,UAAU,WAExB1xB,KAAKsW,MAAM5Y,QAAQsR,OAAOgzB,4BAM5BjP,EAAO3zB,UAAU2iC,UAAY,WAIvB/hC,KAAKk7B,aAETl7B,KAAK+C,QAAQsB,MAAMG,MAAQ,GAJjBxE,KAMLk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAK27B,gBAIP,IAAId,EAAWnhC,KAAK+C,QAAQ8B,YAZjB7E,KAcDwE,OAAUxE,KAAKk7B,aAddl7B,KAgBLk2B,MAAM3wB,QAAQ,SAAUe,GAE5B,IAAI9B,EAAQ8B,EAAKgvB,WAEb9wB,EAAQ28B,IAEXA,EAAW38B,KAIT28B,GA1BMnhC,KA4BJqhC,eAAeF,EAAW,KAKlCpO,EAAO3zB,UAAU8iC,WAAa,SAAU57B,GAEvC,IAAI2sB,EAAQjzB,KAAKk2B,MAAM51B,QAAQgG,GAE3B2sB,GAAS,GAEZjzB,KAAKk2B,MAAMrhB,OAAOoe,EAAO,IAI3BF,EAAO3zB,UAAU08B,kBAAoB,CAAC,QAAS,QAAS,UAAW,UAAW,QAAS,QAAS,WAAY,YAAa,cAAe,YAAa,SAAU,aAAc,UAAW,WAAY,YAAa,aAAc,QAAS,aAAc,SAAU,eAAgB,YAAa,kBAAmB,iBAAkB,WAAY,SAAU,eAAgB,YAAa,UAAW,gBAAiB,cAAe,oBAAqB,cAAe,oBAAqB,mBAAoB,yBAA0B,WAAY,iBAAkB,eAAgB,qBAAsB,mBAAoB,yBAA0B,oBAAqB,0BAA2B,WAAY,gBAAiB,UAAW,gBAAiB,mBAAoB,yBAA0B,aAAc,mBAAoB,sBAAuB,4BAA6B,YAAa,eAAgB,cAAe,UAAW,aAAc,cAAe,iBAAkB,iBAAkB,gBAAiB,eAAgB,gBAAiB,cAAe,aAAc,oBAAqB,aAAc,wBAAyB,qBAAsB,cAAe,iBAAkB,gBAAiB,YAAa,eAAgB,gBAAiB,gBAAiB,iBAAkB,gBAAiB,iBAAkB,uBAAwB,eAAgB,0BAA2B,qBAAsB,yBAA0B,mBAAoB,yBAA0B,yBAA0B,SAOh+C/I,EAAO3zB,UAAUi2B,aAAe,WAE/B,OAAO,IAAIhB,EAAgBr0B,OAG5B,IAAImiC,EAAa,SAAoB7rB,GAEpCtW,KAAKsW,MAAQA,EAEbtW,KAAK+C,QAAU/C,KAAKoiC,sBAEpBpiC,KAAKqiC,aAAeriC,KAAKsiC,qBAEzBtiC,KAAK21B,cAAgB,KAErB31B,KAAKyE,OAAS,EAGdzE,KAAKuiC,aAAc,EAEnBviC,KAAKwiC,WAAa,UAGlBxiC,KAAK+d,KAAO,GAEZ/d,KAAKy3B,WAAa,GAElBz3B,KAAKyiC,gBAAkB,EAGvBziC,KAAK0iC,YAAc,GAEnB1iC,KAAK2iC,iBAAmB,EAGxB3iC,KAAK4iC,UAAY,EAEjB5iC,KAAK2wB,WAAa,EAElB3wB,KAAK6iC,cAAgB,GAGrB7iC,KAAK8iC,QAAU,EAEf9iC,KAAK+iC,WAAa,EAGlB/iC,KAAKgjC,iBAAmB,EAExBhjC,KAAKijC,oBAAsB,EAG3BjjC,KAAKkjC,WAAa,EAElBljC,KAAKmjC,cAAgB,EAGrBnjC,KAAKojC,mBAAqB,GAG1BpjC,KAAKqjC,iBAAmB,EAGxBrjC,KAAKsjC,uBAAyB,GAE9BtjC,KAAKujC,wBAA0B,EAG/BvjC,KAAKwjC,eAAiB,GAEtBxjC,KAAKyjC,kBAAoB,IAM1BtB,EAAW/iC,UAAUgjC,oBAAsB,WAE1C,IAAItR,EAAKjuB,SAASC,cAAc,OAMhC,OAJAguB,EAAGC,UAAUvc,IAAI,yBAEjBsc,EAAG8K,aAAa,WAAY,GAErB9K,GAGRqR,EAAW/iC,UAAUkjC,mBAAqB,WAEzC,IAAIxR,EAAKjuB,SAASC,cAAc,OAIhC,OAFAguB,EAAGC,UAAUvc,IAAI,mBAEVsc,GAKRqR,EAAW/iC,UAAUsH,WAAa,WAEjC,OAAO1G,KAAK+C,SAKbo/B,EAAW/iC,UAAUskC,gBAAkB,WAEtC,OAAO1jC,KAAKqiC,cAKbF,EAAW/iC,UAAUukC,eAAiB,SAAU9R,EAAKmD,GAEpD,OAAIA,EAEIh1B,KAAKy3B,WAAWn3B,QAAQuxB,GAGxB7xB,KAAK+d,KAAKzd,QAAQuxB,IAM3BsQ,EAAW/iC,UAAUwkC,iBAAmB,SAAUzS,GAEjDnxB,KAAK21B,cAAgBxE,GAGtBgR,EAAW/iC,UAAU6xB,WAAa,WAEjC,IAAImB,EAAOpyB,KAEXoyB,EAAKyR,gBAILzR,EAAKrvB,QAAQ6B,YAAYwtB,EAAKiQ,cAE9BjQ,EAAKmQ,aAAc,EAInBnQ,EAAKrvB,QAAQy6B,iBAAiB,SAAU,WAEvC,IAAIlM,EAAOc,EAAKrvB,QAAQ4tB,WAIpByB,EAAKzB,YAAcW,IAEtBc,EAAKuD,cAActE,iBAAiBC,GAEhCc,EAAK9b,MAAMzO,QAAQi8B,SAEtB1R,EAAK9b,MAAM5Y,QAAQqmC,UAAUC,cAAc1S,GAGxCc,EAAK9b,MAAMob,UAAU,gBAExBU,EAAK9b,MAAM5Y,QAAQ85B,YAAYnG,iBAAiBC,IAIlDc,EAAKzB,WAAaW,IAKK,YAApBtxB,KAAKwiC,YAERpQ,EAAKrvB,QAAQy6B,iBAAiB,SAAU,WAEvC,IAAIj5B,EAAM6tB,EAAKrvB,QAAQ6/B,UAEnBroB,EAAM6X,EAAKwQ,UAAYr+B,EAIvB6tB,EAAKwQ,WAAar+B,GAErB6tB,EAAKwQ,UAAYr+B,EAEjB6tB,EAAK6R,eAAe1pB,GAE0B,UAA1C6X,EAAK9b,MAAMzO,QAAQq8B,qBAEtB9R,EAAK9b,MAAM5Y,QAAQymC,KAAKC,SAAShS,EAAKrvB,QAAQm0B,aAAe9E,EAAKrvB,QAAQo0B,aAAe5yB,IAI1F6tB,EAAKwQ,UAAYr+B,KASrB49B,EAAW/iC,UAAUilC,QAAU,SAAUjQ,GAExC,IAAIhC,EAAOpyB,KAEX,MAAyE,gBAAjD,IAAZo0B,EAA0B,YAAc/jB,EAAQ+jB,IAuBjD,MAAOA,IAOJhC,EAAKrU,KAAKmS,KAAK,SAAU2B,GAErC,OAAOA,EAAIte,KAAK6e,EAAK9b,MAAMzO,QAAQorB,QAAUmB,MAG7B,GAjCbA,aAAmBkQ,EAIflQ,EACGA,aAAmBmQ,EAItBnQ,EAAQE,aAAc,EACI,oBAAhBC,aAA+BH,aAAmBG,aAIvDnC,EAAKrU,KAAKmS,KAAK,SAAU2B,GAEpC,OAAOA,EAAI9uB,UAAYqxB,MAuBnB,GAGR+N,EAAW/iC,UAAUolC,qBAAuB,SAAUjxB,GAOrD,OALYvT,KAAK+d,KAAKmS,KAAK,SAAU2B,GAEpC,OAAOA,EAAIte,OAASA,MAGL,GAGjB4uB,EAAW/iC,UAAUqlC,mBAAqB,SAAUngC,EAAU0wB,GAE7D,OAAIA,EAEIh1B,KAAKy3B,WAAWnzB,GAGhBtE,KAAK+d,KAAKzZ,IAInB69B,EAAW/iC,UAAUslC,YAAc,SAAU7S,EAAKvtB,EAAU8xB,GAC3D,IAIIuO,EAJAC,EAAS5kC,KAET6kC,EAAW7kC,KAAK8kC,iBAAiBxkC,QAAQuxB,GACzCkT,EAAQlT,EAAInrB,aAEZ6e,EAAS,EAEb,OAAO,IAAI+Q,QAAQ,SAAUC,EAASC,GAErC,GAAIqO,GAAY,EAAG,CAYlB,QAVwB,IAAbvgC,IAEVA,EAAWsgC,EAAOtuB,MAAMzO,QAAQm9B,0BAGR,IAAd5O,IAEVA,EAAYwO,EAAOtuB,MAAMzO,QAAQo9B,sBAGjB,YAAb3gC,EAEH,OAAQsgC,EAAOpC,YAEd,IAAK,UAEJmC,EAAS9uB,EAAUzW,UAAU24B,QAAQmN,SAASH,GAAOxgC,IAErDD,EAAW6R,KAAKgvB,IAAIP,EAAO7hC,QAAQ6/B,UAAY+B,GAAUxuB,KAAKgvB,IAAIP,EAAO7hC,QAAQ6/B,UAAYgC,EAAO7hC,QAAQo0B,aAAewN,GAAU,SAAW,MAEhJ,MAED,IAAK,UAEJrgC,EAAW6R,KAAKgvB,IAAIP,EAAO9B,QAAU+B,GAAY1uB,KAAKgvB,IAAIP,EAAO7B,WAAa8B,GAAY,SAAW,MASxG,IAAKzO,GAEAvgB,EAAUzW,UAAU24B,QAAQC,UAAU+M,KAEzCxf,EAAS1P,EAAUzW,UAAU24B,QAAQmN,SAASH,GAAOxgC,IAAMsR,EAAUzW,UAAU24B,QAAQmN,SAASN,EAAO7hC,SAASwB,KAEnG,GAAKghB,EAASqf,EAAO7hC,QAAQo0B,aAAe4N,EAAMxE,aAE9D,OAAO,EAOV,OAAQqE,EAAOpC,YAEd,IAAK,UAEJoC,EAAO7hC,QAAQ6/B,UAAY/sB,EAAUzW,UAAU24B,QAAQmN,SAASH,GAAOxgC,IAAMsR,EAAUzW,UAAU24B,QAAQmN,SAASN,EAAO7hC,SAASwB,IAAMqgC,EAAO7hC,QAAQ6/B,UAEvJ,MAED,IAAK,UAEJgC,EAAOQ,mBAAmBP,GAAU,GAQtC,OAAQvgC,GAEP,IAAK,SAEL,IAAK,SAEJsgC,EAAO7hC,QAAQ6/B,UAAYgC,EAAO7hC,QAAQ6/B,UAAYgC,EAAO7hC,QAAQo0B,aAAe,EAEpF,MAED,IAAK,SAEJyN,EAAO7hC,QAAQ6/B,UAAYgC,EAAO7hC,QAAQ6/B,UAAYgC,EAAO7hC,QAAQo0B,aAAe4N,EAAMxE,aAM5FhK,SAGA10B,QAAQ+0B,KAAK,kCAEbJ,EAAO,qCAQV2L,EAAW/iC,UAAUsY,QAAU,SAAUnE,EAAM8xB,GAC9C,IAAIC,EAAStlC,KAEToyB,EAAOpyB,KAEX,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAEjC6O,GAAoBC,EAAOR,iBAAiBjlC,OAE3CuyB,EAAK9b,MAAMzO,QAAQ09B,WAEtBnT,EAAKoT,eAAejyB,GAAM,GAG1B+xB,EAAOG,mBAAmB,WAEzBrT,EAAKoT,eAAejyB,MAKlB+xB,EAAOhvB,MAAMzO,QAAQ69B,aAExBJ,EAAOhvB,MAAMqf,cAAc/D,2BAA2Bre,GAGvD+xB,EAAOrN,cAEPqN,EAAOE,eAAejyB,IAGvBgjB,OAIF4L,EAAW/iC,UAAUomC,eAAiB,SAAUjyB,EAAM8xB,GAErD,IAAIjT,EAAOpyB,KAEXoyB,EAAK9b,MAAMzO,QAAQ89B,YAAYhoC,KAAKqC,KAAKsW,MAAO/C,GAEhDvT,KAAK4lC,gBAED5lC,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAEtD1xB,KAAKsW,MAAM5Y,QAAQmoC,QAAQn+B,QAGxB5G,MAAMC,QAAQwS,IAEbvT,KAAKsW,MAAMob,UAAU,cAExB1xB,KAAKsW,MAAM5Y,QAAQooC,UAAUC,qBAG1B/lC,KAAKsW,MAAMzO,QAAQm+B,cAAgBhmC,KAAKsW,MAAMob,UAAU,gBAAgB,IAE3E1xB,KAAKsW,MAAM5Y,QAAQsoC,aAAaC,UAAU1yB,GAG3CA,EAAKhO,QAAQ,SAAU+sB,EAAK90B,GAE3B,GAAI80B,GAAqE,iBAA9C,IAARA,EAAsB,YAAcjiB,EAAQiiB,IAAoB,CAElF,IAAIT,EAAM,IAAIyS,EAAIhS,EAAKF,GAEvBA,EAAKrU,KAAKld,KAAKgxB,QAGfhwB,QAAQ+0B,KAAK,+FAAgGtE,KAI/GF,EAAK9b,MAAMzO,QAAQsP,WAAWxZ,KAAKqC,KAAKsW,MAAO/C,GAE/C6e,EAAK8T,mBAAkB,GAAO,EAAOb,IAGrCxjC,QAAQC,MAAM,4GAAwH,IAATyR,EAAuB,YAAclD,EAAQkD,GAAO,eAAgBA,IAInM4uB,EAAW/iC,UAAUwmC,cAAgB,WAEpC5lC,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAE3BA,EAAIsU,SAGDnmC,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,cAEtD1xB,KAAKsW,MAAM5Y,QAAQqmC,UAAUoC,OAG9BnmC,KAAK+d,KAAO,IAGbokB,EAAW/iC,UAAUgnC,UAAY,SAAUvU,EAAKwU,GAE/C,IAAIC,EAAWtmC,KAAK+d,KAAKzd,QAAQuxB,GAC7B0U,EAAcvmC,KAAKy3B,WAAWn3B,QAAQuxB,GAEtC0U,GAAe,GAElBvmC,KAAKy3B,WAAW5iB,OAAO0xB,EAAa,GAGjCD,GAAY,GAEftmC,KAAK+d,KAAKlJ,OAAOyxB,EAAU,GAG5BtmC,KAAKwmC,cAAcxmC,KAAKy3B,YAExBz3B,KAAKymC,mBAAmB,SAAU1oB,GAEjC,IAAI2oB,EAAe3oB,EAAKzd,QAAQuxB,GAE5B6U,GAAgB,GAEnB3oB,EAAKlJ,OAAO6xB,EAAc,KAIvBL,GAEJrmC,KAAKylC,qBAGNzlC,KAAKsW,MAAMzO,QAAQ8+B,WAAWhpC,KAAKqC,KAAKsW,MAAOub,EAAIwD,gBAEnDr1B,KAAKsW,MAAMzO,QAAQ++B,WAAWjpC,KAAKqC,KAAKsW,MAAOtW,KAAK6mC,WAEhD7mC,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,aAEtD1xB,KAAKsW,MAAM5Y,QAAQqmC,UAAU+C,iBAAgB,GACnC9mC,KAAKsW,MAAMzO,QAAQ09B,YAAcvlC,KAAKsW,MAAMob,UAAU,QAEhE1xB,KAAKkmC,mBAAkB,GAAO,GAAO,GAGjClmC,KAAKsW,MAAMzO,QAAQ09B,YAAcvlC,KAAKsW,MAAMob,UAAU,SAEzD1xB,KAAKkmC,kBAAkB,SAK1B/D,EAAW/iC,UAAU2nC,OAAS,SAAUxzB,EAAMyzB,EAAK/T,EAAOoT,GAEzD,IAAIxU,EAAM7xB,KAAKinC,aAAa1zB,EAAMyzB,EAAK/T,EAAOoT,GAO9C,OALIrmC,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAEtD1xB,KAAKsW,MAAM5Y,QAAQmoC,QAAQhtB,OAAO,SAAUgZ,EAAK,CAAEte,KAAMA,EAAMyzB,IAAKA,EAAK/T,MAAOA,IAG1EpB,GAKRsQ,EAAW/iC,UAAU8nC,QAAU,SAAU3zB,EAAMyzB,EAAK/T,GACnD,IAAIkU,EAASnnC,KAEToyB,EAAOpyB,KAEP+d,EAAO,GAEX,OAAO,IAAIuY,QAAQ,SAAUC,EAASC,GAErCwQ,EAAMG,EAAOC,cAAcJ,GAEtBlmC,MAAMC,QAAQwS,KAElBA,EAAO,CAACA,IAGAA,EAAK1T,OAAS,QAEH,IAATozB,GAAwB+T,QAAwB,IAAV/T,IAA0B+T,IAE1EzzB,EAAK8zB,UAGN9zB,EAAKhO,QAAQ,SAAU+hC,EAAM9pC,GAE5B,IAAIq0B,EAAMO,EAAK2U,OAAOO,EAAMN,EAAK/T,GAAO,GAExClV,EAAKld,KAAKgxB,KAGPsV,EAAO7wB,MAAMzO,QAAQi8B,SAAWqD,EAAO7wB,MAAMob,UAAU,aAE1DyV,EAAO7wB,MAAM5Y,QAAQqmC,UAAU+C,iBAAgB,GACrCK,EAAO7wB,MAAMzO,QAAQ09B,YAAc4B,EAAO7wB,MAAMob,UAAU,QAEpEyV,EAAOjB,mBAAkB,GAAO,GAAO,GAGvCiB,EAAO1B,qBAKJ0B,EAAO7wB,MAAMob,UAAU,gBAE1ByV,EAAO7wB,MAAM5Y,QAAQ85B,YAAYvzB,OAAOkjC,EAAO7wB,MAAMka,WAAWiH,YAGjElB,EAAQxY,MAIVokB,EAAW/iC,UAAUgoC,cAAgB,SAAUJ,GAiB9C,YAfmB,IAARA,IAEVA,EAAMhnC,KAAKsW,MAAMzO,QAAQ0/B,WAGd,QAARP,IAEHA,GAAM,GAGK,WAARA,IAEHA,GAAM,GAGAA,GAGR7E,EAAW/iC,UAAU6nC,aAAe,SAAU1zB,EAAMyzB,EAAK/T,EAAOoT,GAE/D,IAEImB,EAFA3V,EAAMte,aAAgB+wB,EAAM/wB,EAAO,IAAI+wB,EAAI/wB,GAAQ,GAAIvT,MACvDuE,EAAMvE,KAAKonC,cAAcJ,GAqC7B,IAlCK/T,GAASjzB,KAAKsW,MAAMzO,QAAQ09B,YAAqD,QAAvCvlC,KAAKsW,MAAMzO,QAAQ4/B,mBAEjED,EAAWxnC,KAAK8kC,iBAEZvgC,EAECijC,EAAS3nC,OAEZozB,EAAQuU,EAAS,GAGbxnC,KAAKy3B,WAAW53B,SAEnBozB,EAAQjzB,KAAKy3B,WAAWz3B,KAAKy3B,WAAW53B,OAAS,GAEjD0E,GAAM,GAKJijC,EAAS3nC,SAEZozB,EAAQuU,EAASA,EAAS3nC,OAAS,GAEnC0E,IAAMijC,EAAS3nC,OAASG,KAAKsW,MAAM5Y,QAAQgqC,KAAKC,iBAK/C1U,IAEHA,EAAQjzB,KAAKqkC,QAAQpR,IAGlBjzB,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,aAAc,CAEpE1xB,KAAKsW,MAAM5Y,QAAQqmC,UAAU6D,iBAAiB/V,GAE9C,IAAIkS,EAAYlS,EAAIgW,WAAW9pB,KAE3BgmB,EAAUlkC,OAAS,KAEjBozB,GAASA,IAAsC,GAA7B8Q,EAAUzjC,QAAQ2yB,GAEpC1uB,EAECw/B,EAAU,KAAOlS,IAEpBoB,EAAQ8Q,EAAU,GAElB/jC,KAAK8nC,gBAAgBjW,EAAIgW,WAAW9pB,KAAM8T,EAAKoB,EAAO1uB,IAInDw/B,EAAUA,EAAUlkC,OAAS,KAAOgyB,IAEvCoB,EAAQ8Q,EAAUA,EAAUlkC,OAAS,GAErCG,KAAK8nC,gBAAgBjW,EAAIgW,WAAW9pB,KAAM8T,EAAKoB,EAAO1uB,IAKxDvE,KAAK8nC,gBAAgBjW,EAAIgW,WAAW9pB,KAAM8T,EAAKoB,EAAO1uB,IAKzD,GAAI0uB,EAAO,CAEV,IAAIqT,EAAWtmC,KAAK+d,KAAKzd,QAAQ2yB,GAC7BsT,EAAcvmC,KAAKy3B,WAAWn3B,QAAQ2yB,GAE1CjzB,KAAKymC,mBAAmB,SAAU1oB,GAEjC,IAAI2oB,EAAe3oB,EAAKzd,QAAQ2yB,GAE5ByT,GAAgB,GAEnB3oB,EAAKlJ,OAAOtQ,EAAMmiC,EAAeA,EAAe,EAAG,EAAG7U,KAIpD0U,GAAe,GAElBvmC,KAAKy3B,WAAW5iB,OAAOtQ,EAAMgiC,EAAcA,EAAc,EAAG,EAAG1U,GAG5DyU,GAAY,GAEftmC,KAAK+d,KAAKlJ,OAAOtQ,EAAM+hC,EAAWA,EAAW,EAAG,EAAGzU,QAIhDttB,GAEHvE,KAAKymC,mBAAmB,SAAU1oB,GAEjCA,EAAKyV,QAAQ3B,KAGd7xB,KAAKy3B,WAAWjE,QAAQ3B,GAExB7xB,KAAK+d,KAAKyV,QAAQ3B,KAGlB7xB,KAAKymC,mBAAmB,SAAU1oB,GAEjCA,EAAKld,KAAKgxB,KAGX7xB,KAAKy3B,WAAW52B,KAAKgxB,GAErB7xB,KAAK+d,KAAKld,KAAKgxB,IAejB,OAXA7xB,KAAKwmC,cAAcxmC,KAAKy3B,YAExBz3B,KAAKsW,MAAMzO,QAAQkgC,SAASpqC,KAAKqC,KAAKsW,MAAOub,EAAIwD,gBAEjDr1B,KAAKsW,MAAMzO,QAAQ++B,WAAWjpC,KAAKqC,KAAKsW,MAAOtW,KAAK6mC,WAE/CR,GAEJrmC,KAAKylC,qBAGC5T,GAGRsQ,EAAW/iC,UAAUq8B,QAAU,SAAUvrB,EAAME,EAAIolB,GAE9Cx1B,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAEtD1xB,KAAKsW,MAAM5Y,QAAQmoC,QAAQhtB,OAAO,UAAW3I,EAAM,CAAE82B,IAAKhnC,KAAK2jC,eAAezzB,GAAOE,GAAIA,EAAIolB,MAAOA,IAGrGx1B,KAAKgoC,cAAc93B,EAAME,EAAIolB,GAE7Bx1B,KAAKsW,MAAMzO,QAAQogC,SAAStqC,KAAKqC,KAAKsW,MAAOpG,EAAKmlB,iBAGnD8M,EAAW/iC,UAAU4oC,cAAgB,SAAU93B,EAAME,EAAIolB,GAExD,IAAIpD,EAAOpyB,KAWX,GATAA,KAAK8nC,gBAAgB9nC,KAAK+d,KAAM7N,EAAME,EAAIolB,GAE1Cx1B,KAAK8nC,gBAAgB9nC,KAAKy3B,WAAYvnB,EAAME,EAAIolB,GAEhDx1B,KAAKymC,mBAAmB,SAAU1oB,GAEjCqU,EAAK0V,gBAAgB/pB,EAAM7N,EAAME,EAAIolB,KAGlCx1B,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,aAAc,CAEpE,IAAIwW,EAAU93B,EAAGy3B,WAEbM,EAAYj4B,EAAK23B,WAEjBK,IAAYC,EAEfnoC,KAAK8nC,gBAAgBI,EAAQnqB,KAAM7N,EAAME,EAAIolB,IAGzC2S,GAEHA,EAAUC,UAAUl4B,GAGrBg4B,EAAQG,UAAUn4B,EAAME,EAAIolB,MAK/B2M,EAAW/iC,UAAU0oC,gBAAkB,SAAU/pB,EAAM7N,EAAME,EAAIolB,GAEhE,IAAIS,EAAWD,EAAgBvT,EAE/B,GAAIvS,IAASE,KAEZ6lB,EAAYlY,EAAKzd,QAAQ4P,KAER,IAEhB6N,EAAKlJ,OAAOohB,EAAW,IAEvBD,EAAUjY,EAAKzd,QAAQ8P,KAER,EAEVolB,EAEHzX,EAAKlJ,OAAOmhB,EAAU,EAAG,EAAG9lB,GAG5B6N,EAAKlJ,OAAOmhB,EAAS,EAAG9lB,GAIzB6N,EAAKlJ,OAAOohB,EAAW,EAAG/lB,IAMxB6N,IAAS/d,KAAK8kC,kBAAkB,CAInCriB,EAAMuT,EAAUC,EAAYD,EAAUC,EAAY,EAElD,IAAK,IAAIz4B,EAJDy4B,EAAYD,EAAUC,EAAYD,EAItBx4B,GAAKilB,EAAKjlB,IAEzBugB,EAAKvgB,IAERwC,KAAKsoC,SAASvqB,EAAKvgB,GAAIA,KAO5B2kC,EAAW/iC,UAAUmpC,UAAY,WAEhCvoC,KAAK0X,QAAQ,KAGdyqB,EAAW/iC,UAAUopC,YAAc,SAAU3W,GAE5C,OAAO7xB,KAAKyoC,aAAa5W,EAAK7xB,KAAK+d,OAGpCokB,EAAW/iC,UAAUspC,mBAAqB,SAAU7W,GAEnD,IAAIoB,EAAQjzB,KAAK8kC,iBAAiBxkC,QAAQuxB,GAE1C,OAAOoB,GAAS,GAAIA,GAGrBkP,EAAW/iC,UAAUupC,eAAiB,SAAU9W,EAAK+W,GAEpD,IAAI3V,EAAQjzB,KAAK0oC,mBAAmB7W,GAChCgX,GAAU,EAOd,OALc,IAAV5V,GAAmBA,EAAQjzB,KAAK2iC,iBAAmB,IAEtDkG,EAAU7oC,KAAK8kC,iBAAiB7R,EAAQ,KAGrC4V,GAAcA,aAAmBvE,GAAwB,OAAhBuE,EAAQngC,KAK9CmgC,EAHC7oC,KAAK2oC,eAAeE,EAASD,IAMtCzG,EAAW/iC,UAAU0pC,eAAiB,SAAUjX,EAAK+W,GAEpD,IAAI3V,EAAQjzB,KAAK0oC,mBAAmB7W,GAChCkX,GAAU,EAOd,OALI9V,IAEH8V,EAAU/oC,KAAK8kC,iBAAiB7R,EAAQ,KAGrC8V,GAAcA,aAAmBzE,GAAwB,OAAhByE,EAAQrgC,KAK9CqgC,EAHC/oC,KAAK8oC,eAAeC,EAASH,IAMtCzG,EAAW/iC,UAAUqpC,aAAe,SAAU5W,EAAKtV,GAElD,IAAIsoB,EAIJ,UAFAhT,EAAM7xB,KAAKqkC,QAAQxS,MAIlBgT,EAAWtoB,EAAKjc,QAAQuxB,KAER,IAERgT,GAOV1C,EAAW/iC,UAAUynC,QAAU,SAAU7R,EAAQrvB,GAEhD,IACIypB,EAAS,GASb,OAPW4F,EAHAh1B,KAGcy3B,WAHdz3B,KAGgC+d,MAEtCxY,QAAQ,SAAUssB,GAEtBzC,EAAOvuB,KAAKgxB,EAAIgV,QAAQlhC,GAAa,WAG/BypB,GAGR+S,EAAW/iC,UAAU+1B,cAAgB,SAAUH,GAE9C,IACI5F,EAAS,GASb,OAPW4F,EAHAh1B,KAGcy3B,WAHdz3B,KAGgC+d,MAEtCxY,QAAQ,SAAUssB,GAEtBzC,EAAOvuB,KAAKgxB,EAAIwD,kBAGVjG,GAGR+S,EAAW/iC,UAAU4pC,aAAe,SAAUhU,GAE7C,OAAOA,EAASh1B,KAAKy3B,WAAW53B,OAASG,KAAK+d,KAAKle,QAGpDsiC,EAAW/iC,UAAU6pC,kBAAoB,WAExC,IAAI7W,EAAOpyB,KACPsW,EAAQ8b,EAAK9b,MACbzO,EAAUyO,EAAMzO,QAChB63B,EAAS,GAEb,GAAIppB,EAAMob,UAAU,QAAS,CAI5B,GAAI7pB,EAAQqhC,YAAa,CAExB,IAAIC,EAAU/W,EAAK9b,MAAM5Y,QAAQ4gC,KAAK8K,UAEtCD,EAAQ5jC,QAAQ,SAAU+hC,UAElBA,EAAKxU,SAGb4M,EAAOtN,EAAK9b,MAAM5Y,QAAQgqC,KAAK2B,wBAAwBF,SAAWA,EAKnE,GAAIthC,EAAQyhC,cAAe,CAE1B,IAAIC,EAAUnX,EAAK9b,MAAM5Y,QAAQsR,OAAOw6B,YAAW,GAAM,GAEzD9J,EAAOtN,EAAK9b,MAAM5Y,QAAQgqC,KAAK2B,wBAAwBE,SAAWA,EAGnEnX,EAAK9b,MAAM5Y,QAAQymC,KAAKsF,UAAU/J,GAAQ,GAG3CppB,EAAM5Y,QAAQymC,KAAKuF,cAAcC,KAAK,SAAUp2B,GAE/C6e,EAAK1a,QAAQnE,KACXq2B,MAAM,SAAUxnC,OAKpB+/B,EAAW/iC,UAAUyqC,cAAgB,WAEpC,IAAIvzB,EAAQtW,KAAKsW,MACbzO,EAAUyO,EAAMzO,QAChBypB,EAAOtxB,KAAK2wB,WAEZ9oB,EAAQyhC,cAEe,UAAtBzhC,EAAQ09B,YAA0BjvB,EAAMob,UAAU,SAErDpb,EAAM5Y,QAAQgqC,KAAKrV,OAAM,GAEzB/b,EAAM5Y,QAAQgqC,KAAKoC,QAAQ,GAAGH,KAAK,cAAgBC,MAAM,eAC/C/hC,EAAQq8B,oBAElB5tB,EAAM5Y,QAAQymC,KAAK4F,WAAWJ,KAAK,cAAgBC,MAAM,cAKzD5pC,KAAKipC,oBAINjpC,KAAKkmC,kBAAkB,UAGxBlmC,KAAKqxB,iBAAiBC,IAKvB6Q,EAAW/iC,UAAU4qC,cAAgB,SAAUC,GAE9C,IAAI3zB,EAAQtW,KAAKsW,MACbzO,EAAU7H,KAAKsW,MAAMzO,QACrBypB,EAAOtxB,KAAK2wB,WAEZ9oB,EAAQqhC,aAEgB,UAAtBrhC,EAAQ09B,YAA0B19B,EAAQqiC,kBAAoB5zB,EAAMob,UAAU,SAElFpb,EAAM5Y,QAAQgqC,KAAKrV,OAAM,GAEzB/b,EAAM5Y,QAAQgqC,KAAKoC,QAAQ,GAAGH,KAAK,cAAgBC,MAAM,eAC/C/hC,EAAQq8B,oBAElB5tB,EAAM5Y,QAAQymC,KAAK4F,WAAWJ,KAAK,cAAgBC,MAAM,cAKzD5pC,KAAKipC,oBAINjpC,KAAKkmC,kBAAkB+D,EAAkB,SAAW,QAGrDjqC,KAAKqxB,iBAAiBC,IAGvB6Q,EAAW/iC,UAAUiyB,iBAAmB,SAAUC,GAEjDtxB,KAAK2wB,WAAaW,EAElBtxB,KAAK+C,QAAQ4tB,WAAaW,EAEtBtxB,KAAKsW,MAAMzO,QAAQi8B,SAEtB9jC,KAAKsW,MAAM5Y,QAAQqmC,UAAUC,cAAc1S,GAGxCtxB,KAAKsW,MAAMob,UAAU,gBAExB1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAYnG,iBAAiBC,IAMlD6Q,EAAW/iC,UAAU8mC,kBAAoB,SAAUiE,EAAOC,EAAW/E,GAEpE,IAEIqB,EADApwB,EAAQtW,KAAKsW,MAoBjB,OArBWtW,KAIFsW,MAAMob,UAAU,SAJd1xB,KAMLsW,MAAM5Y,QAAQ8gC,KAAK6L,aAGpBF,IAEJA,EAAQ,OAGL7zB,EAAMzO,QAAQyiC,aAAeh0B,EAAMzO,QAAQ0iC,uBAAyBj0B,EAAMob,UAAU,cAEvFpb,EAAM5Y,QAAQooC,UAAU0E,eAKjBL,GAEP,IAAK,MAEL,IAAK,SAECC,EAWJA,GAAY,EATR9zB,EAAMob,UAAU,UA7BZ1xB,KA+BFwmC,cAAclwB,EAAM5Y,QAAQsR,OAAOA,OA/BjChP,KA+B6C+d,OA/B7C/d,KAkCFwmC,cAlCExmC,KAkCiB+d,KAAK1a,MAAM,IAOtC,IAAK,OAEC+mC,EAQJA,GAAY,EANR9zB,EAAMob,UAAU,SAEnBpb,EAAM5Y,QAAQ4gC,KAAKA,KAAKt+B,KAAKy3B,YAShC,IAAK,UAEJz3B,KAAKyqC,mBAEN,IAAK,SAECL,EAuBJA,GAAY,EArBRpqC,KAAKsW,MAAMob,UAAU,eAEpBpb,EAAM5Y,QAAQgtC,WAAWC,aAEvBr0B,EAAM5Y,QAAQgtC,WAAWE,mBAE7Bt0B,EAAM5Y,QAAQgtC,WAAWG,gBAAgB7qC,KAAK8qC,uBAG/CpE,EAAepwB,EAAM5Y,QAAQgtC,WAAWE,mBAInB,KAFrBlE,EA3EM1mC,KA2Ec+qC,eAAez0B,EAAM5Y,QAAQgtC,WAAWM,QAAQhrC,KAAK8kC,eAAe4B,EAAe,IAAKA,KAI3GpwB,EAAM5Y,QAAQgtC,WAAWG,gBAAgBnE,IAS9C,IAAK,QAEC0D,EAoBJA,GAAY,EAlBR9zB,EAAMzO,QAAQi8B,SAAWxtB,EAAMob,UAAU,eAEvCpb,EAAM5Y,QAAQqmC,UAAU6G,mBAE5Bt0B,EAAM5Y,QAAQqmC,UAAU8G,gBAAgB7qC,KAAK8qC,uBAG9CpE,EAAepwB,EAAM5Y,QAAQqmC,UAAU6G,mBAIlB,KAFrBlE,EArGO1mC,KAqGa+qC,eAAez0B,EAAM5Y,QAAQqmC,UAAUiH,QAAQhrC,KAAK8kC,eAAe4B,EAAe,IAAKA,KAI1GpwB,EAAM5Y,QAAQqmC,UAAU8G,gBAAgBnE,IAQ5C,IAAK,OAEC0D,EAoBJA,GAAY,EAlBR9zB,EAAMzO,QAAQojC,UAAY30B,EAAMob,UAAU,cAExCpb,EAAM5Y,QAAQutC,SAASL,mBAE3Bt0B,EAAM5Y,QAAQutC,SAASJ,gBAAgB7qC,KAAK8qC,uBAG7CpE,EAAepwB,EAAM5Y,QAAQutC,SAASL,mBAIjB,KAFrBlE,EA9HO1mC,KA8Ha+qC,eAAez0B,EAAM5Y,QAAQutC,SAASD,QAAQhrC,KAAK8kC,eAAe4B,EAAe,IAAKA,KAIzGpwB,EAAM5Y,QAAQutC,SAASJ,gBAAgBnE,IAQtCpwB,EAAMzO,QAAQ09B,YAAcjvB,EAAMob,UAAU,UAAY2T,GAEvB,SAAhC/uB,EAAM5Y,QAAQgqC,KAAKhQ,WAEtBphB,EAAM5Y,QAAQgqC,KAAKrV,QAItB,IAAK,OAEC+X,EAyBJA,GAAY,EAvBR9zB,EAAMzO,QAAQ09B,YAAcjvB,EAAMob,UAAU,UAE1Cpb,EAAM5Y,QAAQgqC,KAAKkD,mBAEvBt0B,EAAM5Y,QAAQgqC,KAAKmD,gBAAgB7qC,KAAK8qC,uBAGzCpE,EAAepwB,EAAM5Y,QAAQgqC,KAAKkD,kBAEE,SAAhCt0B,EAAM5Y,QAAQgqC,KAAKhQ,WAEtBphB,EAAM5Y,QAAQgqC,KAAKwD,WAAWlrC,KAAK8kC,eAAe4B,EAAe,GAAG7mC,SAKhD,KAFrB6mC,EApKO1mC,KAoKa+qC,eAAez0B,EAAM5Y,QAAQgqC,KAAKsD,QAAQhrC,KAAK8kC,eAAe4B,EAAe,IAAKA,KAIrGpwB,EAAM5Y,QAAQgqC,KAAKmD,gBAAgBnE,IAUpC7wB,EAAUzW,UAAU24B,QAAQC,UAlLrBh4B,KAkLoC+C,WAE1CsiC,EApLMrlC,KAsLJylC,sBAtLIzlC,KAyLJmrC,cAED70B,EAAMzO,QAAQujC,wBA3LTprC,KA6LHsW,MAAMqf,cAAcjD,QAAO,KAK/Bpc,EAAMob,UAAU,gBAEnBpb,EAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKy3B,aAIxC0K,EAAW/iC,UAAUonC,cAAgB,SAAU/O,GAE9Cz3B,KAAKy3B,WAAaA,EAElBz3B,KAAKyiC,gBAAkBziC,KAAKy3B,WAAW53B,QAKxCsiC,EAAW/iC,UAAUqrC,iBAAmB,WAEvCzqC,KAAK0iC,YAAc,GAEnB1iC,KAAK0iC,YAAY7hC,KAAKb,KAAKy3B,WAAWp0B,MAAM,IAE5CrD,KAAK2iC,iBAAmB3iC,KAAK0iC,YAAY,GAAG7iC,OAExCG,KAAKsW,MAAMob,UAAU,eAExB1xB,KAAKsW,MAAM5Y,QAAQgtC,WAAWG,gBAAgB,GAG3C7qC,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,cAEtD1xB,KAAKsW,MAAM5Y,QAAQqmC,UAAU8G,gBAAgB,GAG1C7qC,KAAKsW,MAAMzO,QAAQ09B,YAAcvlC,KAAKsW,MAAMob,UAAU,SAEzD1xB,KAAKsW,MAAM5Y,QAAQgqC,KAAKmD,gBAAgB,IAI1C1I,EAAW/iC,UAAU0rC,oBAAsB,WAE1C,OAAO9qC,KAAK0iC,YAAY7iC,QAKzBsiC,EAAW/iC,UAAU2rC,eAAiB,SAAUrI,EAAazP,GAE5D,IAAI7D,GAAS,EAmBb,OAjBI6D,QAA2C,IAA3BjzB,KAAK0iC,YAAYzP,IAEpCjzB,KAAK0iC,YAAYzP,GAASyP,EAE1BtT,GAAS,IAGTpvB,KAAK0iC,YAAY7hC,KAAK6hC,GAEtBtT,EAAS6D,EAAQjzB,KAAK0iC,YAAY7iC,OAAS,GAGxCozB,GAASjzB,KAAK0iC,YAAY7iC,OAAS,IAEtCG,KAAK2iC,iBAAmB3iC,KAAK0iC,YAAY1iC,KAAK0iC,YAAY7iC,OAAS,GAAGA,QAGhEuvB,GAGR+S,EAAW/iC,UAAU0lC,eAAiB,SAAU7R,GAE/C,YAAoB,IAATA,EAEHjzB,KAAK0iC,YAAY7iC,OAASG,KAAK0iC,YAAY1iC,KAAK0iC,YAAY7iC,OAAS,GAAK,GAG1EG,KAAK0iC,YAAYzP,IAAU,IAIpCkP,EAAW/iC,UAAUisC,eAAiB,SAAUC,GAE/C,IAAIC,EAAUvrC,KAAK+C,QAAQ6/B,UACvB4I,EAAaxrC,KAAK+C,QAAQo0B,aAAeoU,EACzCE,GAAW,EACXC,EAAS,EACTC,EAAY,EACZ5tB,EAAO/d,KAAK8kC,iBAEhB,GAAIwG,EAAU,CAEbtrC,KAAK8kC,iBAEL,IAAK,IAAItnC,EAAIwC,KAAK8iC,QAAStlC,GAAKwC,KAAK+iC,WAAYvlC,IAEhD,GAAIugB,EAAKvgB,GAER,GAAKiuC,EASE,CAEN,KAAID,EAAaztB,EAAKvgB,GAAGkJ,aAAaklC,WAAa,GAKlD,MAHAD,EAAYnuC,OAXT+tC,EAAUxtB,EAAKvgB,GAAGkJ,aAAaklC,WAAa,EAE/CF,EAASluC,EAGTiuC,GAAW,OAgBfC,EAAS1rC,KAAK8iC,QAEd6I,EAAY3rC,KAAK+iC,WAGlB,OAAOhlB,EAAK1a,MAAMqoC,EAAQC,EAAY,IAKvCxJ,EAAW/iC,UAAUqnC,mBAAqB,SAAU39B,GAEnD9I,KAAK0iC,YAAYn9B,QAAQuD,GAEzB9I,KAAK2iC,iBAAmB3iC,KAAK0iC,YAAY1iC,KAAK0iC,YAAY7iC,OAAS,GAAGA,QAKvEsiC,EAAW/iC,UAAU4rC,QAAU,WAE9B,OAAOhrC,KAAK+d,MAQbokB,EAAW/iC,UAAUqmC,mBAAqB,SAAU38B,GAEnD,GAA4B,WAAxB9I,KAAK6rC,gBAA8B,CAYtC,IAVA,IAAIjJ,EAAY5iC,KAAK+C,QAAQ6/B,UAEzB8I,GAAS,EAETI,GAAY,EAEZxa,EAAOtxB,KAAK2wB,WAEZ5S,EAAO/d,KAAK8kC,iBAEPtnC,EAAIwC,KAAK8iC,QAAStlC,GAAKwC,KAAK+iC,WAAYvlC,IAEhD,GAAIugB,EAAKvgB,GAAI,CAEZ,IAAIuuC,EAAOnJ,EAAY7kB,EAAKvgB,GAAGkJ,aAAaklC,UAE5C,MAAkB,IAAdE,GAAuB31B,KAAKgvB,IAAI4G,GAAQD,GAO3C,MALAA,EAAYC,EAEZL,EAASluC,EAQRsL,GAEHA,IAGD9I,KAAKolC,oBAA8B,IAAXsG,EAAmB1rC,KAAK2iC,iBAAmB,EAAI+I,GAAQ,EAAMI,GAAa,GAElG9rC,KAAKqxB,iBAAiBC,QAGtBtxB,KAAKmrC,cAEDriC,GAEHA,KAKHq5B,EAAW/iC,UAAUykC,cAAgB,YAE/B7jC,KAAKsW,MAAMvT,QAAQo0B,cAAgBn3B,KAAKsW,MAAMzO,QAAQpD,SAAWzE,KAAKsW,MAAMzO,QAAQmkC,WAExFhsC,KAAKwiC,WAAa,UAGlBxiC,KAAKwiC,WAAa,WAIpBL,EAAW/iC,UAAUysC,cAAgB,WAEpC,OAAO7rC,KAAKwiC,YAGbL,EAAW/iC,UAAU+rC,YAAc,WAQlC,OANWnrC,KAENsW,MAAMzO,QAAQokC,cAActuC,KAAKqC,KAAKsW,OAFhCtW,KAIN+C,QAAQ6/B,UAAY,EAJd5iC,KAMEwiC,YAEZ,IAAK,UARKxiC,KAUJksC,gBAEL,MAED,IAAK,UAdKlsC,KAgBJolC,qBAhBIplC,KAsBFuiC,cAtBEviC,KAwBD2iC,kBAxBC3iC,KA0BJuiC,aAAc,EA1BVviC,KA4BJsW,MAAM5Y,QAAQuZ,OAAOA,UA5BjBjX,KA+BJmsC,qBA/BInsC,KAmCFsW,MAAMob,UAAU,kBAnCd1xB,KAqCLsW,MAAM5Y,QAAQi0B,cAAc1a,SArCvBjX,KAwCD2iC,kBAxCC3iC,KA0CDsW,MAAMzO,QAAQ0V,cAElBvd,KAAKwiC,YA5CAxiC,KA8CHsW,MAAMzO,QAAQ0V,YAAYqe,aAAa,wBAAyB57B,KAAKwiC,YA9ClExiC,KAiDJ0G,aAAa9B,YAjDT5E,KAiD0BsW,MAAMzO,QAAQ0V,cAjDxCvd,KAqDNsW,MAAMzO,QAAQukC,eAAezuC,KAAKqC,KAAKsW,QAK7C6rB,EAAW/iC,UAAU8sC,cAAgB,WAEpClsC,KAAKqsC,mBAEDrsC,KAAK2iC,iBAER3iC,KAAKssC,mCAGLtsC,KAAKmsC,qBAIPhK,EAAW/iC,UAAUktC,iCAAmC,WAEvD,IAAIla,EAAOpyB,KACP+C,EAAU/C,KAAKqiC,aACfkK,GAAmB,EAEvBna,EAAK0S,iBAAiBv/B,QAAQ,SAAUssB,EAAKoB,GAE5Cb,EAAKkW,SAASzW,EAAKoB,GAEnBlwB,EAAQ6B,YAAYitB,EAAInrB,cAExBmrB,EAAIZ,YAAW,GAEE,UAAbY,EAAInpB,OAEP6jC,GAAmB,KAMpBxpC,EAAQsB,MAAM+yB,SAFXmV,EAEsBna,EAAK9b,MAAMqf,cAAcL,WAAa,KAGtC,IAM3B6M,EAAW/iC,UAAU+sC,kBAAoB,WAExCnsC,KAAKqiC,aAAah+B,MAAM+yB,SAAWp3B,KAAKsW,MAAMqf,cAAcL,WAAa,KAEzEt1B,KAAKqiC,aAAah+B,MAAMwvB,UAAY,MAEpC7zB,KAAKqiC,aAAah+B,MAAM0qB,WAAa,UAGtCoT,EAAW/iC,UAAUitC,iBAAmB,WAEvC,IAAItpC,EAAU/C,KAAKqiC,aASnB,IAPIriC,KAAKsW,MAAMzO,QAAQ0V,aAAevd,KAAKsW,MAAMzO,QAAQ0V,YAAY+V,YAEpEtzB,KAAKsW,MAAMzO,QAAQ0V,YAAY+V,WAAWvuB,YAAY/E,KAAKsW,MAAMzO,QAAQ0V,aAKnExa,EAAQ8tB,YACd9tB,EAAQgC,YAAYhC,EAAQ8tB,YAC5B9tB,EAAQsB,MAAMm8B,WAAa,GAE5Bz9B,EAAQsB,MAAMmoC,cAAgB,GAE9BzpC,EAAQsB,MAAM+yB,SAAW,GAEzBr0B,EAAQsB,MAAMwvB,UAAY,GAE1B9wB,EAAQsB,MAAM0qB,WAAa,GAE3B/uB,KAAK4iC,UAAY,EAEjB5iC,KAAK2wB,WAAa,EAElB3wB,KAAK8iC,QAAU,EAEf9iC,KAAK+iC,WAAa,EAElB/iC,KAAKkjC,WAAa,EAElBljC,KAAKmjC,cAAgB,GAGtBhB,EAAW/iC,UAAUkpC,SAAW,SAAUzW,EAAKoB,GAE9C,IAAI8R,EAAQlT,EAAInrB,aAEZusB,EAAQ,GAEX8R,EAAMhU,UAAUvc,IAAI,sBAEpBuwB,EAAMhU,UAAU3oB,OAAO,uBAGvB28B,EAAMhU,UAAUvc,IAAI,qBAEpBuwB,EAAMhU,UAAU3oB,OAAO,wBAMzB+5B,EAAW/iC,UAAUgmC,mBAAqB,SAAU9gC,EAAUmoC,EAAWlnB,GAExE,IACIxiB,EADO/C,KACQqiC,aACfqK,EAFO1sC,KAEO+C,QACd4pC,EAAS,EACTC,EAAa,EACbC,EAAe,EACfrvC,EAAI,EACJ+uC,GAAmB,EACnBxuB,EARO/d,KAQK8kC,iBAMhB,GAFAvf,EAASA,GAAU,EAFnBjhB,EAAWA,GAAY,EAOhB,CAEN,KAAOvB,EAAQ8tB,YACd9tB,EAAQgC,YAAYhC,EAAQ8tB,YAG7B,IAAIic,GAvBM9sC,KAuBiB2iC,iBAAmBr+B,EAAW,GAvB/CtE,KAuByD6iC,cAE/DiK,EAzBM9sC,KAyBgByE,SAEzBH,GAAY6R,KAAK42B,MA3BR/sC,KA2BmByE,OAASqoC,GA3B5B9sC,KA2BmD6iC,gBAE7C,IAEdv+B,EAAW,GAQbA,GAFAqoC,EAASx2B,KAAK2G,IAAI3G,KAAKuG,IAAIvG,KAAKC,MArCtBpW,KAqCiCqjC,iBArCjCrjC,KAqCyD6iC,eArCzD7iC,KAqC8EujC,yBAA0Bj/B,QArCxGtE,KAgBLqsC,mBA0BN,GA1CWrsC,KA0CF2iC,kBAAoB9sB,EAAUzW,UAAU24B,QAAQC,UA1C9Ch4B,KA0C6D+C,SAAU,CAMjF,IAhDU/C,KA4CL8iC,QAAUx+B,EA5CLtE,KA8CL+iC,WAAaz+B,EAAW,GAErBsoC,GAhDE5sC,KAgDiByE,OAhDjBzE,KAgD+BqjC,kBAAoB7lC,EAhDnDwC,KAgD4DsjC,yBAhD5DtjC,KAgD4F+iC,WAhD5F/iC,KAgD8G2iC,iBAAmB,GAAG,CAE7I,IAEIqK,EAFA/Z,EAlDKjzB,KAkDQ+iC,WAAa,EAC1BlR,EAAM9T,EAAKkV,GAnDNjzB,KAsDJsoC,SAASzW,EAAKoB,GAEnBlwB,EAAQ6B,YAAYitB,EAAInrB,cAEnBmrB,EAAIob,YAKHpb,EAAI0P,mBAER1P,EAAIqb,iBAAgB,GALrBrb,EAAIZ,YAAW,GAShB+b,EAAYnb,EAAIkC,YAEZv2B,EAAImvC,EAEPE,GAAgBG,EAGhBJ,GAAcI,EAGXA,EAAYhtC,KAAKqjC,mBAEpBrjC,KAAKqjC,iBAA+B,EAAZ2J,GAGR,UAAbnb,EAAInpB,OAEP6jC,GAAmB,GAtFXvsC,KAyFJ+iC,aAELvlC,IAGI8G,GA9FKtE,KA2GJkjC,WAAcuJ,EA3GVzsC,KA2G2D6iC,cAAgB7iC,KAAK8iC,QAAUvd,EA3G1FvlB,KA2G2B4iC,UAAYiK,EA3GvC7sC,KA6GJmjC,cA7GInjC,KA6GiB+iC,YA7GjB/iC,KA6GoC2iC,iBAAmB,EAAI,EAAIxsB,KAAKuG,IA7GpE1c,KA6G6EmtC,iBA7G7EntC,KA6GqGkjC,WAAa0J,EAAaC,EAAc,KAbtJ7sC,KAAKkjC,WAAa,EAhGTljC,KAoGJ6iC,cAAgB1sB,KAAKC,OAAOw2B,EAAaC,GAAgBrvC,GApGrDwC,KAsGJmjC,cAtGInjC,KAsGiB6iC,eAtGjB7iC,KAsGuC2iC,iBAtGvC3iC,KAsG+D+iC,WAAa,GAtG5E/iC,KAwGJmtC,iBAAmBN,EAAeD,EAxG9B5sC,KAwGgDmjC,cAxGhDnjC,KAwGqEyE,QAQ/E1B,EAAQsB,MAAMm8B,WAhHJxgC,KAgHsBkjC,WAAa,KAE7CngC,EAAQsB,MAAMmoC,cAlHJxsC,KAkHyBmjC,cAAgB,KAE/CsJ,IAEHzsC,KAAK4iC,UAtHI5iC,KAsHakjC,WAAa2J,EAAetnB,GAAUvlB,KAAK+C,QAAQyuB,YAAcxxB,KAAK+C,QAAQ+B,YAAc9E,KAAK+C,QAAQw9B,aAAevgC,KAAK+C,QAAQo0B,aAAe,IAG3Kn3B,KAAK4iC,UAAYzsB,KAAK2G,IAAI9c,KAAK4iC,UAAW5iC,KAAK+C,QAAQm0B,aAAel3B,KAAKyE,QAIvEzE,KAAK+C,QAAQyuB,YAAcxxB,KAAK+C,QAAQ8B,aAAe4nC,IAE1DzsC,KAAK4iC,WAAa5iC,KAAK+C,QAAQw9B,aAAevgC,KAAK+C,QAAQo0B,cAG5Dn3B,KAAKgjC,iBAAmBhjC,KAAK4iC,UAE7B5iC,KAAKijC,oBAAsBjjC,KAAK4iC,UAEhC8J,EAAO9J,UAAY5iC,KAAK4iC,UAExB7/B,EAAQsB,MAAM+yB,SAAWmV,EAxIfvsC,KAwIuCsW,MAAMqf,cAAcL,WAAa,KAAO,GAxI/Et1B,KA0IDsW,MAAMzO,QAAQi8B,SAEqB,eA5IlC9jC,KA4IAsW,MAAM5Y,QAAQuZ,OAAOygB,WA5IrB13B,KA4IwD2iC,kBA5IxD3iC,KA4IiFsW,MAAM5Y,QAAQqmC,UAAUqJ,gBA5IzGptC,KA8IHqiC,aAAah+B,MAAM+yB,SA9IhBp3B,KA8IgCsW,MAAMqf,cAAcL,iBAK9Dt1B,KAAKmsC,qBAMPhK,EAAW/iC,UAAU6kC,eAAiB,SAAU1pB,GAE/C,IAAI8yB,EAAUrtC,KAAK4iC,UAAY5iC,KAAKgjC,iBAEhCsK,EAAattC,KAAK4iC,UAAY5iC,KAAKijC,oBAEnCsK,EAAiC,EAAxBvtC,KAAKqjC,iBAElB,IAAKgK,EAAUE,GAAUD,EAAaC,EAAQ,CAI7C,IAAIjc,EAAOtxB,KAAK2wB,WAEhB3wB,KAAKolC,mBAAmBjvB,KAAKC,MAAMpW,KAAK+C,QAAQ6/B,UAAY5iC,KAAK+C,QAAQm0B,aAAel3B,KAAK2iC,mBAE7F3iC,KAAKqxB,iBAAiBC,QAGlB/W,GAIC8yB,EAAU,GAEbrtC,KAAKwtC,YAAYH,GAGdC,EAAa,GAIZttC,KAAKmtC,iBAAmBntC,KAAK4iC,UAAY5iC,KAAKqjC,kBAEjDrjC,KAAKytC,kBAAkBH,KAOrBD,GAAW,GAIVrtC,KAAK4iC,UAAY5iC,KAAKqjC,kBAEzBrjC,KAAK0tC,cAAcL,GAIjBC,GAAc,GAEjBttC,KAAK2tC,cAAcL,KAMvBnL,EAAW/iC,UAAUouC,WAAa,SAAUH,GAC3C,IAAI7vC,EAAIoC,UAAUC,OAAS,QAAsBsB,IAAjBvB,UAAU,GAAmBA,UAAU,GAAK,EAGxE0W,EAAQtW,KAAKqiC,aACbtkB,EAAO/d,KAAK8kC,iBAEhB,GAAI9kC,KAAK8iC,QAAS,CAEjB,IAAI7P,EAAQjzB,KAAK8iC,QAAU,EACvB4I,EAAS3tB,EAAKkV,GACd2a,EAAelC,EAAO3X,aAAe/zB,KAAK6iC,cAI1CwK,GAAWO,IAEd5tC,KAAKsoC,SAASoD,EAAQzY,GAEtB3c,EAAMsa,aAAa8a,EAAOhlC,aAAc4P,EAAMua,YAEzC6a,EAAOuB,aAAgBvB,EAAOnK,oBAElCvhC,KAAKwjC,eAAe3iC,KAAK6qC,GAEpBA,EAAOnK,mBAEXmK,EAAOjK,mBAITiK,EAAOza,aAEPjxB,KAAKkjC,YAAc0K,EAEf5tC,KAAKkjC,WAAa,IAErBljC,KAAKkjC,WAAajQ,EAAQjzB,KAAK6iC,eAG3B5P,IAEJjzB,KAAKkjC,WAAa,GAGnB5sB,EAAMjS,MAAMm8B,WAAaxgC,KAAKkjC,WAAa,KAE3CljC,KAAKgjC,kBAAoB4K,EAEzB5tC,KAAK8iC,WAGNuK,IAAYrtC,KAAK4iC,UAAY5iC,KAAKgjC,kBAE9B0I,EAAO3X,YAAc/zB,KAAKqjC,mBAE7BrjC,KAAKqjC,iBAAwC,EAArBqI,EAAO3X,aAG5Bv2B,EAAIwC,KAAKojC,oBAAsBpjC,KAAK8iC,SAAWuK,IAAYtvB,EAAK/d,KAAK8iC,QAAU,GAAG/O,aAAe/zB,KAAK6iC,eAEzG7iC,KAAKwtC,WAAWH,EAAS7vC,EAAI,GAG7BwC,KAAK6tC,yBAAyB7tC,KAAKwjC,kBAKtCrB,EAAW/iC,UAAUsuC,cAAgB,SAAUL,GAE9C,IAAI/2B,EAAQtW,KAAKqiC,aACbqJ,EAAS1rC,KAAK8kC,iBAAiB9kC,KAAK8iC,SACpC8K,EAAelC,EAAO3X,aAAe/zB,KAAK6iC,cAE9C,GAAIwK,GAAWO,EAAc,CAE5B,IAAI7I,EAAQ2G,EAAOhlC,aAEnBq+B,EAAMzR,WAAWvuB,YAAYggC,GAE7B/kC,KAAKkjC,YAAc0K,EAEnBt3B,EAAMjS,MAAMm8B,WAAaxgC,KAAKkjC,WAAa,KAE3CljC,KAAKgjC,kBAAoBhjC,KAAK8iC,QAAU8K,EAAeA,EAAe5tC,KAAKqjC,iBAE3ErjC,KAAK8iC,UAELuK,EAAUrtC,KAAK4iC,UAAY5iC,KAAKgjC,iBAEhChjC,KAAK0tC,cAAcL,KAIrBlL,EAAW/iC,UAAUuuC,cAAgB,SAAUL,GAC9C,IAAI9vC,EAAIoC,UAAUC,OAAS,QAAsBsB,IAAjBvB,UAAU,GAAmBA,UAAU,GAAK,EAGxE0W,EAAQtW,KAAKqiC,aACbtkB,EAAO/d,KAAK8kC,iBAEhB,GAAI9kC,KAAK+iC,WAAa/iC,KAAK2iC,iBAAmB,EAAG,CAEhD,IAAI1P,EAAQjzB,KAAK+iC,WAAa,EAC1B4I,EAAY5tB,EAAKkV,GACjB6a,EAAkBnC,EAAU5X,aAAe/zB,KAAK6iC,cAIhDyK,GAAcQ,IAEjB9tC,KAAKsoC,SAASqD,EAAW1Y,GAEzB3c,EAAM1R,YAAY+mC,EAAUjlC,cAEvBilC,EAAUsB,aAAgBtB,EAAUpK,oBAExCvhC,KAAKyjC,kBAAkB5iC,KAAK8qC,GAEvBA,EAAUpK,mBAEdoK,EAAUlK,mBAIZkK,EAAU1a,aAEVjxB,KAAKmjC,eAAiB2K,GAElB9tC,KAAKmjC,cAAgB,GAAKlQ,GAASjzB,KAAK2iC,iBAAmB,KAE9D3iC,KAAKmjC,cAAgB,GAGtB7sB,EAAMjS,MAAMmoC,cAAgBxsC,KAAKmjC,cAAgB,KAEjDnjC,KAAKijC,qBAAuB6K,EAE5B9tC,KAAK+iC,cAGNuK,EAAattC,KAAK4iC,UAAY5iC,KAAKijC,oBAE/B0I,EAAU5X,YAAc/zB,KAAKqjC,mBAEhCrjC,KAAKqjC,iBAA2C,EAAxBsI,EAAU5X,aAG/Bv2B,EAAIwC,KAAKojC,oBAAsBpjC,KAAK+iC,WAAa/iC,KAAK2iC,iBAAmB,GAAK2K,IAAevvB,EAAK/d,KAAK+iC,WAAa,GAAGhP,aAAe/zB,KAAK6iC,eAE9I7iC,KAAK2tC,cAAcL,EAAY9vC,EAAI,GAGnCwC,KAAK6tC,yBAAyB7tC,KAAKyjC,qBAKtCtB,EAAW/iC,UAAUquC,iBAAmB,SAAUH,GAEjD,IAAIh3B,EAAQtW,KAAKqiC,aACbsJ,EAAY3rC,KAAK8kC,iBAAiB9kC,KAAK+iC,YACvC+K,EAAkBnC,EAAU5X,aAAe/zB,KAAK6iC,cAEpD,GAAIyK,GAAcQ,EAAiB,CAElC,IAAI/I,EAAQ4G,EAAUjlC,aAElBq+B,EAAMzR,YAETyR,EAAMzR,WAAWvuB,YAAYggC,GAG9B/kC,KAAKmjC,eAAiB2K,EAElB9tC,KAAKmjC,cAAgB,IAExBnjC,KAAKmjC,cAAgB,GAGtB7sB,EAAMjS,MAAMmoC,cAAgBxsC,KAAKmjC,cAAgB,KAEjDnjC,KAAKijC,qBAAuB6K,EAE5B9tC,KAAK+iC,aAELuK,IAAettC,KAAK4iC,UAAY5iC,KAAKijC,qBAErCjjC,KAAKytC,iBAAiBH,KAIxBnL,EAAW/iC,UAAUyuC,yBAA2B,SAAU9vB,GAEzDA,EAAKxY,QAAQ,SAAUssB,GAEtBA,EAAI6P,eAGL3jB,EAAKxY,QAAQ,SAAUssB,GAEtBA,EAAI8P,kBAGL5jB,EAAKle,OAAS,GAKfsiC,EAAW/iC,UAAU8tC,gBAAkB,WAEtCltC,KAAKy3B,WAAWlyB,QAAQ,SAAUssB,GAEjCA,EAAIqb,qBAMN/K,EAAW/iC,UAAU80B,gBAAkB,WAEtC,GAAwB,YAApBl0B,KAAKwiC,WAA0B,CAElCxiC,KAAKyE,OAASzE,KAAK+C,QAAQo0B,aAE3Bn3B,KAAKqjC,iBAAmBrjC,KAAKsW,MAAMzO,QAAQkmC,kBAAoB/tC,KAAKyE,OAEpE,IAAIupC,EAAchuC,KAAK21B,cAAcjvB,aAAa65B,cAAgBvgC,KAAKsW,MAAM6hB,gBAAkBn4B,KAAKsW,MAAM6hB,cAAc8V,SAAWjuC,KAAKsW,MAAM6hB,cAAczxB,aAAa65B,aAAe,GAExLvgC,KAAK+C,QAAQsB,MAAMwvB,UAAY,eAAiBma,EAAc,MAE9DhuC,KAAK+C,QAAQsB,MAAMI,OAAS,eAAiBupC,EAAc,MAE3DhuC,KAAK+C,QAAQsB,MAAM6pC,UAAY,eAAiBF,EAAc,QAMhE7L,EAAW/iC,UAAUw4B,aAAe,WAEnC53B,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAE3BA,EAAI+F,kBAMNuK,EAAW/iC,UAAUszB,OAAS,SAAUppB,GAEvC,IACIgoB,EAAOtxB,KAAK2wB,WAEhB3wB,KAAKk0B,kBAELl0B,KAAKsW,MAAM63B,WAAanuC,KAAKsW,MAAMvT,QAAQ+B,YAEtCwE,EA2BJtJ,KAAKmrC,eAzBkB,WAAnB/Y,KAAKoQ,WAEJpQ,KAAK9b,MAAMzO,QAAQi8B,QAEtB1R,KAAK8T,kBAAkB,SAAS,GAAO,GAGvClmC,KAAKksC,iBAINlsC,KAAKylC,qBAELzlC,KAAKqxB,iBAAiBC,IAGlBtxB,KAAK2iC,kBAEL3iC,KAAKsW,MAAMzO,QAAQ0V,aAEtBvd,KAAK0G,aAAa9B,YAAY5E,KAAKsW,MAAMzO,QAAQ0V,eASrD4kB,EAAW/iC,UAAU64B,YAAc,WAMlC,GAJAj4B,KAAK+C,QAAQ4tB,WAAa,EAE1B3wB,KAAK+C,QAAQ6/B,UAAY,EAEE,OAAvB5iC,KAAKsW,MAAM83B,QAAkB,CAEhC,IAAIlhC,EAAQrK,SAASwrC,YAAY,SAEjCnhC,EAAMohC,UAAU,UAAU,GAAO,GAEjCtuC,KAAK+C,QAAQwrC,cAAcrhC,QAG3BlN,KAAK+C,QAAQwrC,cAAc,IAAIC,MAAM,YAMvC,IAAIjK,EAAe,SAAsB1S,GAExC7xB,KAAKyuC,KAAO5c,GAGb0S,EAAanlC,UAAUynC,QAAU,SAAUlhC,GAE1C,OAAO3F,KAAKyuC,KAAK5H,QAAQlhC,IAG1B4+B,EAAanlC,UAAUsH,WAAa,WAEnC,OAAO1G,KAAKyuC,KAAK/nC,cAGlB69B,EAAanlC,UAAUi5B,SAAW,WAEjC,IAAInC,EAAQ,GAOZ,OALAl2B,KAAKyuC,KAAKpW,WAAW9yB,QAAQ,SAAUe,GAEtC4vB,EAAMr1B,KAAKyF,EAAK+uB,kBAGVa,GAGRqO,EAAanlC,UAAUsvC,QAAU,SAAU5b,GAE1C,IAAIxsB,EAAOtG,KAAKyuC,KAAKC,QAAQ5b,GAE7B,QAAOxsB,GAAOA,EAAK+uB,gBAGpBkP,EAAanlC,UAAUuvC,SAAW,WAEjC,OAAO3uC,KAAKyuC,KAAK5H,QAAQ,QAAQ7mC,KAAKyuC,KAAKn4B,MAAMzO,QAAQorB,QAG1DsR,EAAanlC,UAAUwvC,YAAc,SAAU5Z,GAE9C,OAAOh1B,KAAKyuC,KAAKn4B,MAAMka,WAAWmT,eAAe3jC,KAAKyuC,KAAMzZ,IAG7DuP,EAAanlC,UAAUs5B,OAAS,WAE/B,OAAO14B,KAAKyuC,KAAK/V,UAGlB6L,EAAanlC,UAAU05B,SAAW,WAEjC,OAAO94B,KAAKyuC,KAAKn4B,MAAMka,WAAWkU,YAAY1kC,KAAKyuC,OAGpDlK,EAAanlC,UAAUyvC,OAAS,WAE/B,GAAI7uC,KAAKyuC,KAAKn4B,MAAMob,UAAU,QAAQ,GAErC,OAAO1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQgqC,KAAKoH,aAAa9uC,KAAKyuC,OAIxDlK,EAAanlC,UAAU2vC,KAAO,SAAU3+B,EAAIolB,GAE3Cx1B,KAAKyuC,KAAKO,UAAU5+B,EAAIolB,IAGzB+O,EAAanlC,UAAU84B,OAAS,SAAU3kB,GAEzC,OAAOvT,KAAKyuC,KAAKQ,WAAW17B,IAG7BgxB,EAAanlC,UAAU8tC,gBAAkB,WAExCltC,KAAKyuC,KAAKvB,iBAAgB,IAG3B3I,EAAanlC,UAAU8vC,OAAS,WAE/BlvC,KAAKyuC,KAAKn4B,MAAM5Y,QAAQooC,UAAUqJ,WAAWnvC,KAAKyuC,OAGnDlK,EAAanlC,UAAUgwC,SAAW,WAEjCpvC,KAAKyuC,KAAKn4B,MAAM5Y,QAAQooC,UAAU0E,aAAaxqC,KAAKyuC,OAGrDlK,EAAanlC,UAAUiwC,aAAe,WAErCrvC,KAAKyuC,KAAKn4B,MAAM5Y,QAAQooC,UAAUwJ,UAAUtvC,KAAKyuC,OAGlDlK,EAAanlC,UAAUmwC,WAAa,WAEnC,OAAOvvC,KAAKyuC,KAAKn4B,MAAM5Y,QAAQooC,UAAU0J,cAAcxvC,KAAKyuC,OAG7DlK,EAAanlC,UAAUk1B,SAAW,WAEjC,OAAOt0B,KAAKyuC,MAGblK,EAAanlC,UAAUqwC,OAAS,WAE3BzvC,KAAKyuC,KAAKn4B,MAAMob,UAAU,cAAc,IAE3C1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQgtC,WAAWgF,UAAU1vC,KAAKyuC,OAIpDlK,EAAanlC,UAAUuwC,SAAW,WAE7B3vC,KAAKyuC,KAAKn4B,MAAMob,UAAU,cAAc,IAE3C1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQgtC,WAAWkF,YAAY5vC,KAAKyuC,OAItDlK,EAAanlC,UAAUywC,aAAe,WAEjC7vC,KAAKyuC,KAAKn4B,MAAMob,UAAU,YAAY,IAEzC1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQutC,SAAS6E,YAAY9vC,KAAKyuC,OAIpDlK,EAAanlC,UAAU2wC,WAAa,WAE/B/vC,KAAKyuC,KAAKn4B,MAAMob,UAAU,YAAY,IAEzC1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQutC,SAAS+E,UAAUhwC,KAAKyuC,OAIlDlK,EAAanlC,UAAU6wC,WAAa,WAE/BjwC,KAAKyuC,KAAKn4B,MAAMob,UAAU,YAAY,IAEzC1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQutC,SAASqE,UAAUtvC,KAAKyuC,OAIlDlK,EAAanlC,UAAU8wC,cAAgB,WAEtC,QAAIlwC,KAAKyuC,KAAKn4B,MAAMob,UAAU,YAAY,IAElC1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQutC,SAASiF,cAAclwC,KAAKyuC,OAM7DlK,EAAanlC,UAAU+wC,gBAAkB,WAExC,QAAInwC,KAAKyuC,KAAKn4B,MAAMob,UAAU,YAAY,IAElC1xB,KAAKyuC,KAAKn4B,MAAM5Y,QAAQutC,SAASkF,gBAAgBnwC,KAAKyuC,OAM/DlK,EAAanlC,UAAUgxC,SAAW,WAEjC,OAAOpwC,KAAKyuC,KAAK7W,gBAGlB2M,EAAanlC,UAAUyoC,SAAW,WAEjC,OAAO7nC,KAAKyuC,KAAK5G,WAAWxS,gBAG7BkP,EAAanlC,UAAU25B,SAAW,WAEjC,OAAO/4B,KAAKyuC,KAAKn4B,OAGlBiuB,EAAanlC,UAAUixC,WAAa,WAEnC,IAAIxe,EAAM7xB,KAAKyuC,KAAK5F,UAEpB,OAAOhX,EAAMA,EAAIwD,eAAiBxD,GAGnC0S,EAAanlC,UAAUkxC,WAAa,WAEnC,IAAIze,EAAM7xB,KAAKyuC,KAAK1F,UAEpB,OAAOlX,EAAMA,EAAIwD,eAAiBxD,GAGnC,IAAIyS,EAAM,SAAa/wB,EAAMslB,GAE5B74B,KAAKsW,MAAQuiB,EAAOviB,MAEpBtW,KAAK64B,OAASA,EAEd74B,KAAKuT,KAAO,GAEZvT,KAAK0I,KAAO,MAEZ1I,KAAK+C,QAAU/C,KAAK8C,gBAEpB9C,KAAKtC,QAAU,GAEfsC,KAAKk2B,MAAQ,GAEbl2B,KAAKyE,OAAS,EAEdzE,KAAKuwC,aAAe,GAEpBvwC,KAAKwwC,cAAe,EAEpBxwC,KAAKywC,YAAc,EAEnBzwC,KAAKitC,aAAc,EAEnBjtC,KAAKuhC,mBAAoB,EAGzBvhC,KAAK0X,QAAQnE,GAEbvT,KAAK0wC,mBAGNpM,EAAIllC,UAAU0D,cAAgB,WAE7B,IAAIguB,EAAKjuB,SAASC,cAAc,OAMhC,OAJAguB,EAAGC,UAAUvc,IAAI,iBAEjBsc,EAAG8K,aAAa,OAAQ,OAEjB9K,GAGRwT,EAAIllC,UAAUsH,WAAa,WAE1B,OAAO1G,KAAK+C,SAGbuhC,EAAIllC,UAAUuxC,cAAgB,WAEzB3wC,KAAK+C,SAAW/C,KAAK+C,QAAQuwB,YAEhCtzB,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,UAI3CuhC,EAAIllC,UAAUsxC,gBAAkB,WAE/B,IACIjT,EACAC,EACAC,EAHAvL,EAAOpyB,MAO2B,IAAlCoyB,EAAK9b,MAAMzO,QAAQyiC,YAAwBlY,EAAK9b,MAAMob,UAAU,cAEnEU,EAAK9b,MAAM5Y,QAAQooC,UAAU8K,cAAc5wC,OAKL,IAAnCoyB,EAAK9b,MAAMzO,QAAQ2zB,aAAyBpJ,EAAK9b,MAAMob,UAAU,YAEpEU,EAAK9b,MAAM5Y,QAAQ+9B,QAAQmV,cAAc5wC,OAKN,IAAhCoyB,EAAK9b,MAAMzO,QAAQojC,UAAsB7Y,EAAK9b,MAAMob,UAAU,aAEjEU,EAAK9b,MAAM5Y,QAAQutC,SAAS2F,cAAc5wC,MAKvCoyB,EAAK9b,MAAMzO,QAAQgpC,UAEtBze,EAAKrvB,QAAQy6B,iBAAiB,QAAS,SAAUp7B,GAEhDgwB,EAAK9b,MAAMzO,QAAQgpC,SAASzuC,EAAGgwB,EAAKiD,kBAIlCjD,EAAK9b,MAAMzO,QAAQipC,aAEtB1e,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAEnDgwB,EAAK9b,MAAMzO,QAAQipC,YAAY1uC,EAAGgwB,EAAKiD,kBAIrCjD,EAAK9b,MAAMzO,QAAQkpC,YAEtB3e,EAAKrvB,QAAQy6B,iBAAiB,cAAe,SAAUp7B,GAEtDgwB,EAAK9b,MAAMzO,QAAQkpC,WAAW3uC,EAAGgwB,EAAKiD,kBAMpCjD,EAAK9b,MAAMzO,QAAQmpC,eAEtB5e,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDgwB,EAAK9b,MAAMzO,QAAQmpC,cAAc5uC,EAAGgwB,EAAKiD,kBAIvCjD,EAAK9b,MAAMzO,QAAQopC,eAEtB7e,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDgwB,EAAK9b,MAAMzO,QAAQopC,cAAc7uC,EAAGgwB,EAAKiD,kBAIvCjD,EAAK9b,MAAMzO,QAAQqpC,cAEtB9e,EAAKrvB,QAAQy6B,iBAAiB,YAAa,SAAUp7B,GAEpDgwB,EAAK9b,MAAMzO,QAAQqpC,aAAa9uC,EAAGgwB,EAAKiD,kBAItCjD,EAAK9b,MAAMzO,QAAQspC,aAEtB/e,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAEnDgwB,EAAK9b,MAAMzO,QAAQspC,YAAY/uC,EAAGgwB,EAAKiD,kBAIrCjD,EAAK9b,MAAMzO,QAAQupC,cAEtBhf,EAAKrvB,QAAQy6B,iBAAiB,YAAa,SAAUp7B,GAEpDgwB,EAAK9b,MAAMzO,QAAQupC,aAAahvC,EAAGgwB,EAAKiD,kBAItCjD,EAAK9b,MAAMzO,QAAQwpC,SAEtB1T,GAAM,EAENvL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDu7B,GAAM,GACJ,CAAEK,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE/Cu7B,GAEHvL,EAAK9b,MAAMzO,QAAQwpC,OAAOjvC,EAAGgwB,EAAKiD,gBAGnCsI,GAAM,KAIJvL,EAAK9b,MAAMzO,QAAQypC,YAEtB7T,EAAS,KAETrL,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE/Cq7B,GAEH5vB,aAAa4vB,GAEbA,EAAS,KAETrL,EAAK9b,MAAMzO,QAAQypC,UAAUlvC,EAAGgwB,EAAKiD,iBAGrCoI,EAASpxB,WAAW,WAEnBwB,aAAa4vB,GAEbA,EAAS,MACP,QAKFrL,EAAK9b,MAAMzO,QAAQ0pC,aAEtB7T,EAAU,KAEVtL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GAErDyL,aAAa6vB,GAEbA,EAAUrxB,WAAW,WAEpBwB,aAAa6vB,GAEbA,EAAU,KAEVC,GAAM,EAENvL,EAAK9b,MAAMzO,QAAQ0pC,WAAWnvC,EAAGgwB,EAAKiD,iBACpC,MACD,CAAE2I,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAEnDyL,aAAa6vB,GAEbA,EAAU,SAKb4G,EAAIllC,UAAUy3B,cAAgB,WAE7B72B,KAAKk2B,MAAQl2B,KAAKsW,MAAMqf,cAAckB,cAAc72B,OAKrDskC,EAAIllC,UAAU6xB,WAAa,SAAU3nB,GAEpC,IAAI8oB,EAAOpyB,KAEX,IAAKoyB,EAAK6a,aAAe3jC,EAAO,CAI/B,IAFA8oB,EAAKof,cAEEpf,EAAKrvB,QAAQ8tB,YACnBuB,EAAKrvB,QAAQgC,YAAYqtB,EAAKrvB,QAAQ8tB,YAGnC7wB,KAAKsW,MAAMob,UAAU,kBAExB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAc8f,UAAUzxC,MAG5CA,KAAK62B,gBAELzE,EAAK8D,MAAM3wB,QAAQ,SAAUe,GAE5B8rB,EAAKrvB,QAAQ6B,YAAY0B,EAAKI,cAE9BJ,EAAKorC,iBAGFpoC,GAEH8oB,EAAK8a,kBAKF9a,EAAK9b,MAAMzO,QAAQojC,UAAY7Y,EAAK9b,MAAMob,UAAU,aAEvDU,EAAK9b,MAAM5Y,QAAQutC,SAASwG,UAAUzxC,MAKK,aAAxCoyB,EAAK9b,MAAMzO,QAAQ4qB,kBAAmCL,EAAK9b,MAAMob,UAAU,qBAE9EU,EAAK9b,MAAM5Y,QAAQ+0B,iBAAiBgf,UAAUzxC,MAG3CoyB,EAAK9b,MAAMzO,QAAQ8pC,cAEtBvf,EAAK9b,MAAMzO,QAAQ8pC,aAAavf,EAAKiD,gBAKlCjD,EAAK9b,MAAMzO,QAAQ+pC,eAAiBxf,EAAK9b,MAAMob,UAAU,eAE5DU,EAAK9b,MAAM5Y,QAAQm0C,WAAWjB,cAAcxe,GAG7CA,EAAK6a,aAAc,IAIrB3I,EAAIllC,UAAU0yC,mBAAqB,WAElC9xC,KAAKuhC,mBAAoB,EAES,OAA9BvhC,KAAK+C,QAAQy+B,cAEhBxhC,KAAKktC,iBAAgB,IAIvB5I,EAAIllC,UAAUw4B,aAAe,WAE5B53B,KAAKitC,aAAc,EAEnBjtC,KAAKuhC,mBAAoB,EAEpBvhC,KAAKwwC,eAETxwC,KAAKyE,OAAS,EAEdzE,KAAKuwC,aAAe,IAGa,OAA9BvwC,KAAK+C,QAAQy+B,cAEhBxhC,KAAKixB,YAAW,IAMlBqT,EAAIllC,UAAUsiC,WAAa,SAAUp4B,GAEpC,IAAI4kC,EAAY,EACZra,EAAY7zB,KAAKsW,MAAMzO,QAAQ+pC,cAAgB5xC,KAAK+C,QAAQo0B,aAAe,EAE/En3B,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5B,IAAI7B,EAAS6B,EAAKytB,YAEdtvB,EAASypC,IAEZA,EAAYzpC,KAMbzE,KAAKyE,OAFF6E,EAEW6M,KAAKuG,IAAIwxB,EAAWra,GAGpB7zB,KAAKwwC,aAAexwC,KAAKyE,OAAS0R,KAAKuG,IAAIwxB,EAAWra,GAGrE7zB,KAAKuwC,aAAevwC,KAAKyE,OAASzE,KAAKyE,OAAS,KAAO,GAEvDzE,KAAKywC,YAAczwC,KAAK+C,QAAQw9B,cAKjC+D,EAAIllC,UAAUuiC,cAAgB,WAE7B3hC,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAKyrC,cAGN/xC,KAAKuhC,mBAAoB,GAG1B+C,EAAIllC,UAAUqiC,gBAAkB,WAE/BzhC,KAAKk2B,MAAM3wB,QAAQ,SAAUe,GAE5BA,EAAK0rC,iBAMP1N,EAAIllC,UAAU8tC,gBAAkB,SAAU5jC,GAErCA,GAEHtJ,KAAKyhC,kBAGNzhC,KAAK0hC,WAAWp4B,GAEhBtJ,KAAK2hC,iBAeN2C,EAAIllC,UAAU2yC,UAAY,SAAUttC,EAAQ6E,IAEvCtJ,KAAKyE,QAAUA,GAAU6E,KAE5BtJ,KAAKwwC,cAAe,EAEpBxwC,KAAKyE,OAASA,EAEdzE,KAAKuwC,aAAe9rC,EAASA,EAAS,KAAO,GAE7CzE,KAAK2hC,gBAIL3hC,KAAKywC,YAAczwC,KAAK+C,QAAQw9B,eAMlC+D,EAAIllC,UAAU20B,UAAY,WAEzB,OAAO/zB,KAAKywC,aAKbnM,EAAIllC,UAAUk2B,SAAW,WAExB,OAAOt1B,KAAK+C,QAAQ8B,aAMrBy/B,EAAIllC,UAAU8iC,WAAa,SAAU57B,GAEpC,IAAI2sB,EAAQjzB,KAAKk2B,MAAM51B,QAAQgG,GAE3B2sB,GAAS,GAEZjzB,KAAKk2B,MAAMrhB,OAAOoe,EAAO,IAO3BqR,EAAIllC,UAAUsY,QAAU,SAAUnE,GAE7BvT,KAAKsW,MAAMob,UAAU,aAExBne,EAAOvT,KAAKsW,MAAM5Y,QAAQghC,QAAQuT,aAAa1+B,EAAM,SAGtDvT,KAAKuT,KAAOA,EAERvT,KAAKsW,MAAMzO,QAAQm+B,cAAgBhmC,KAAKsW,MAAMob,UAAU,gBAAgB,IAE3E1xB,KAAKsW,MAAM5Y,QAAQsoC,aAAakM,SAASlyC,OAM3CskC,EAAIllC,UAAU6vC,WAAa,SAAU17B,GACpC,IAAI4+B,EAASnyC,KAEToyB,EAAOpyB,KACP20B,EAAU9e,EAAUzW,UAAU24B,QAAQC,UAAUh4B,KAAK+C,SAEzD,OAAO,IAAIuzB,QAAQ,SAAUC,EAASC,GAqBrC,IAAK,IAAI4b,IAnBW,iBAAT7+B,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGf4+B,EAAO77B,MAAMzO,QAAQm+B,cAAgBmM,EAAO77B,MAAMob,UAAU,gBAAgB,IAE/EygB,EAAO77B,MAAM5Y,QAAQsoC,aAAaqM,QAK/BjgB,EAAK9b,MAAMob,UAAU,aAExBne,EAAO6e,EAAK9b,MAAM5Y,QAAQghC,QAAQuT,aAAa1+B,EAAM,QAAQ,IAKzCA,EAEpB6e,EAAK7e,KAAK6+B,GAAY7+B,EAAK6+B,GAU5B,IAAK,IAAIA,KAPLD,EAAO77B,MAAMzO,QAAQm+B,cAAgBmM,EAAO77B,MAAMob,UAAU,gBAAgB,IAE/EygB,EAAO77B,MAAM5Y,QAAQsoC,aAAasM,UAKd/+B,EAAM,CAE1B,IAAIjN,EAAO6rC,EAAOzD,QAAQ0D,GAEtB9rC,GAECA,EAAKw5B,YAAcvsB,EAAK6+B,KAE3B9rC,EAAKisC,oBAAoBh/B,EAAK6+B,IAE1Bzd,GAEHruB,EAAKorC,gBAQL/c,GAEHvC,EAAK8a,kBAED9a,EAAK9b,MAAMzO,QAAQ8pC,cAEtBvf,EAAK9b,MAAMzO,QAAQ8pC,aAAavf,EAAKiD,kBAItC8c,EAAOlF,aAAc,EAErBkF,EAAO1tC,OAAS,EAEhB0tC,EAAO5B,aAAe,KAGa,IAAhCne,EAAK9b,MAAMzO,QAAQojC,UAAsB7Y,EAAK9b,MAAMob,UAAU,kBAA8E,IAAxDne,EAAK4+B,EAAO77B,MAAM5Y,QAAQutC,SAASuH,mBAE1HL,EAAO77B,MAAM5Y,QAAQutC,SAAS2F,cAAcuB,GAE5CA,EAAO77B,MAAMka,WAAW0V,kBAAkB,QAAQ,GAAO,IAM1D9T,EAAK9b,MAAMzO,QAAQ4qC,WAAW90C,KAAKw0C,EAAO77B,MAAO8b,EAAKiD,gBAEtDkB,OAIF+N,EAAIllC,UAAUynC,QAAU,SAAUlhC,GAIjC,OAAIA,EAFO3F,KAIDsW,MAAMob,UAAU,YAJf1xB,KAMGsW,MAAM5Y,QAAQihC,SAASsT,aAN1BjyC,KAM4CuT,KAAM5N,QAF5D,EAMO3F,KAAKuT,MAId+wB,EAAIllC,UAAUsvC,QAAU,SAAU5b,GAWjC,OAPAA,EAAS9yB,KAAKsW,MAAMqf,cAAcxB,WAAWrB,GAErC9yB,KAAKk2B,MAAMhG,KAAK,SAAU5pB,GAEjC,OAAOA,EAAKwsB,SAAWA,KAMzBwR,EAAIllC,UAAUszC,aAAe,SAAUC,GAEtC,OAAO3yC,KAAKk2B,MAAMrG,UAAU,SAAUvpB,GAErC,OAAOA,IAASqsC,KAIlBrO,EAAIllC,UAAUwzC,qBAAuB,SAAU3f,GAE9C,IAAI4f,GAAW,EAEf,GAAI5f,EAAQjzB,KAAKk2B,MAAMr2B,OAAS,EAE/B,IAAK,IAAIrC,EAAIy1B,EAAQ,EAAGz1B,EAAIwC,KAAKk2B,MAAMr2B,OAAQrC,IAAK,CAEnD,IAAI8I,EAAOtG,KAAKk2B,MAAM14B,GAEtB,GAAI8I,EAAKwsB,OAAOp1B,QAAQ8gC,MAAQ3oB,EAAUzW,UAAU24B,QAAQC,UAAU1xB,EAAKI,cAAe,CAEzF,IAAIosC,GAAY,EAOhB,GAL6C,mBAAlCxsC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,QAEnCD,EAAYxsC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,MAAMzsC,EAAK+uB,iBAG7Cyd,EAAW,CAEdD,EAAWvsC,EAEX,QAMJ,OAAOusC,GAGRvO,EAAIllC,UAAU4zC,qBAAuB,SAAU/f,GAE9C,IAAIggB,GAAW,EAEf,GAAIhgB,EAAQ,EAEX,IAAK,IAAIz1B,EAAIy1B,EAAQ,EAAGz1B,GAAK,EAAGA,IAAK,CAEpC,IAAI8I,EAAOtG,KAAKk2B,MAAM14B,GAClBs1C,GAAY,EAEhB,GAAIxsC,EAAKwsB,OAAOp1B,QAAQ8gC,MAAQ3oB,EAAUzW,UAAU24B,QAAQC,UAAU1xB,EAAKI,gBAE7B,mBAAlCJ,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,QAEnCD,EAAYxsC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,MAAMzsC,EAAK+uB,iBAG7Cyd,GAAW,CAEdG,EAAW3sC,EAEX,OAMJ,OAAO2sC,GAGR3O,EAAIllC,UAAUi5B,SAAW,WAExB,OAAOr4B,KAAKk2B,OAGboO,EAAIllC,UAAUypC,QAAU,WAIvB,OAFU7oC,KAAKsW,MAAMka,WAAWmY,eAAe3oC,MAAM,KAEvC,GAGfskC,EAAIllC,UAAU2pC,QAAU,WAIvB,OAFU/oC,KAAKsW,MAAMka,WAAWsY,eAAe9oC,MAAM,KAEvC,GAGfskC,EAAIllC,UAAU4vC,UAAY,SAAU5+B,EAAIwiB,GAEvC,IAAIsgB,EAAQlzC,KAAKsW,MAAMka,WAAW6T,QAAQj0B,GAEtC8iC,GAEHlzC,KAAKsW,MAAMka,WAAWwX,cAAchoC,KAAMkzC,GAAQtgB,GAElD5yB,KAAKsW,MAAMka,WAAW0V,kBAAkB,WAAW,GAAO,IAG1DrkC,QAAQ+0B,KAAK,sCAAuCxmB,IAOtDk0B,EAAIllC,UAAUs5B,OAAS,WACtB,IAAIya,EAASnzC,KAEb,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAIvD,EAAQkgB,EAAO78B,MAAMka,WAAWgY,YAAY2K,GAEhDA,EAAOC,eAEHD,EAAO78B,MAAMzO,QAAQg+B,SAAWsN,EAAO78B,MAAMob,UAAU,aAEtDuB,IAEHA,EAAQkgB,EAAO78B,MAAMka,WAAWzS,KAAKkV,EAAQ,IAG9CkgB,EAAO78B,MAAM5Y,QAAQmoC,QAAQhtB,OAAO,YAAas6B,EAAQ,CAAE5/B,KAAM4/B,EAAOtM,UAAWG,KAAM/T,EAAOA,MAAOA,KAGxGsD,OAIF+N,EAAIllC,UAAUg0C,aAAe,SAAU/M,GAE1BrmC,KAAKsW,MAAMka,WAAWgY,YAAYxoC,MAI1CA,KAAKsW,MAAMob,UAAU,cAExB1xB,KAAKsW,MAAM5Y,QAAQooC,UAAUuN,aAAarzC,MAAM,GAY7CA,KAAKsW,MAAMzO,QAAQm+B,cAAgBhmC,KAAKsW,MAAMob,UAAU,gBAAgB,GAMxE1xB,KAAKtC,QAAQ41C,OAEhBtzC,KAAKtC,QAAQ41C,MAAMlL,UAAUpoC,MAG9BA,KAAKsW,MAAMka,WAAW4V,UAAUpmC,KAAMqmC,GAEtCrmC,KAAKwxC,cAELxxC,KAAKitC,aAAc,EAEnBjtC,KAAKuhC,mBAAoB,EAIrBvhC,KAAKsW,MAAMob,UAAU,iBAEpB1xB,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,aAEtD1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAY+b,eAAevzC,MAG9CA,KAAKsW,MAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKsW,MAAMka,WAAWiH,cAK/D6M,EAAIllC,UAAUoyC,YAAc,WAI3B,IAFA,IAAI5P,EAAY5hC,KAAKk2B,MAAMr2B,OAElBrC,EAAI,EAAGA,EAAIokC,EAAWpkC,IAE9BwC,KAAKk2B,MAAM,GAAGwC,UAIhB4L,EAAIllC,UAAU+mC,KAAO,WAIpB,IAFAnmC,KAAKwxC,cAEExxC,KAAK+C,QAAQ8tB,YACnB7wB,KAAK+C,QAAQgC,YAAY/E,KAAK+C,QAAQ8tB,YACtC7wB,KAAK+C,SAAU,EAEhB/C,KAAKtC,QAAU,GAEXsC,KAAK+C,QAAQuwB,YAEhBtzB,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,UAI3CuhC,EAAIllC,UAAUyoC,SAAW,WAExB,OAAO7nC,KAAKtC,QAAQ41C,QAAS,GAK9BhP,EAAIllC,UAAUi2B,aAAe,WAE5B,OAAO,IAAIkP,EAAavkC,OAKzB,IAAIwzC,EAAgB,SAAuBltC,GAE1CtG,KAAKyzC,MAAQntC,GAGdktC,EAAcp0C,UAAU0gC,SAAW,WAElC,OAAO9/B,KAAKyzC,MAAM3T,YAGnB0T,EAAcp0C,UAAUs0C,YAAc,WAErC,OAAO1zC,KAAKyzC,MAAMC,eAGnBF,EAAcp0C,UAAUsH,WAAa,WAEpC,OAAO1G,KAAKyzC,MAAM/sC,cAGnB8sC,EAAcp0C,UAAUu0C,OAAS,WAEhC,OAAO3zC,KAAKyzC,MAAM5hB,IAAIwD,gBAGvBme,EAAcp0C,UAAUynC,QAAU,WAEjC,OAAO7mC,KAAKyzC,MAAM5hB,IAAIgV,WAGvB2M,EAAcp0C,UAAU04B,SAAW,WAElC,OAAO93B,KAAKyzC,MAAM3gB,OAAOgF,YAG1B0b,EAAcp0C,UAAUw0C,UAAY,WAEnC,OAAO5zC,KAAKyzC,MAAM3gB,OAAOuC,gBAG1Bme,EAAcp0C,UAAUy0C,SAAW,SAAUp1C,EAAOq1C,QAE9B,IAAVA,IAEVA,GAAS,GAGV9zC,KAAKyzC,MAAMI,SAASp1C,EAAOq1C,IAG5BN,EAAcp0C,UAAU20C,gBAAkB,WAEzC/zC,KAAKyzC,MAAMO,eAAeh0C,KAAKyzC,MAAMC,gBAGtCF,EAAcp0C,UAAUo/B,KAAO,SAAUl1B,GAExC,OAAOtJ,KAAKyzC,MAAMjV,KAAKl1B,IAGxBkqC,EAAcp0C,UAAUirC,WAAa,WAEpCrqC,KAAKyzC,MAAMpJ,cAGZmJ,EAAcp0C,UAAU60C,IAAM,WAE7B,OAAOj0C,KAAKyzC,MAAMQ,OAGnBT,EAAcp0C,UAAU80C,YAAc,WAErCl0C,KAAKyzC,MAAMS,eAGZV,EAAcp0C,UAAU25B,SAAW,WAElC,OAAO/4B,KAAKyzC,MAAMn9B,OAGnBk9B,EAAcp0C,UAAUk1B,SAAW,WAElC,OAAOt0B,KAAKyzC,OAGb,IAAI5R,EAAO,SAAc/O,EAAQjB,GAEhC7xB,KAAKsW,MAAQwc,EAAOxc,MAEpBtW,KAAK8yB,OAASA,EAEd9yB,KAAK6xB,IAAMA,EAEX7xB,KAAK+C,QAAU,KAEf/C,KAAKvB,MAAQ,KAEbuB,KAAKm0C,SAAW,KAEhBn0C,KAAKyE,OAAS,KAEdzE,KAAKwE,MAAQ,KAEbxE,KAAKo3B,SAAW,KAEhBp3B,KAAKo0C,SAQNvS,EAAKziC,UAAUg1C,MAAQ,WAEtBp0C,KAAK0wC,kBAEL1wC,KAAKohC,WAELphC,KAAKq0C,iBAELr0C,KAAKg0C,eAAeh0C,KAAK8yB,OAAOkH,cAAch6B,KAAK6xB,IAAIte,QAGxDsuB,EAAKziC,UAAUsxC,gBAAkB,WAEhC1wC,KAAK+C,QAAUF,SAASC,cAAc,OAEtC9C,KAAK+C,QAAQ0R,UAAY,iBAEzBzU,KAAK+C,QAAQ64B,aAAa,OAAQ,YAElC57B,KAAK+C,QAAU/C,KAAK+C,SAGrB8+B,EAAKziC,UAAUi1C,eAAiB,WAE/B,IAAIjiB,EAAOpyB,KACPo6B,EAAahI,EAAKU,OAAOsH,WACzBr3B,EAAUqvB,EAAKrvB,QACfivB,EAAQhyB,KAAK8yB,OAAOgF,YAIxB/0B,EAAQsB,MAAMiwC,UAAYliB,EAAKU,OAAOgH,SAElC9H,GAEHjvB,EAAQ64B,aAAa,kBAAmB5J,GAKrCI,EAAKU,OAAOH,WAAWiM,WAETxM,EAAKU,OAAOH,WAAWiM,SAAS7uB,MAAM,KAE5CxK,QAAQ,SAAUkP,GAE5B1R,EAAQguB,UAAUvc,IAAIC,KAMyB,UAA7CzU,KAAKsW,MAAMzO,QAAQ0sC,uBAEtBxxC,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAEhDgwB,EAAKoiB,qBAIPpiB,EAAKqiB,iBAAiBra,GAEtBhI,EAAKsiB,iBAAiBta,GAEtBhI,EAAKuiB,iBAAiBva,GAElBhI,EAAKU,OAAOp1B,QAAQ8gC,MAEvBpM,EAAK9b,MAAM5Y,QAAQ8gC,KAAKoW,WAAWxiB,GAGhCA,EAAKU,OAAOH,WAAW4I,YAAgD,IAAnCnJ,EAAK9b,MAAMzO,QAAQ2zB,aAAyBpJ,EAAK9b,MAAMob,UAAU,YAExGU,EAAK9b,MAAM5Y,QAAQ+9B,QAAQoZ,eAAeziB,GAKtCA,EAAKU,OAAO6B,SAEhBvC,EAAKrmB,QAIP81B,EAAKziC,UAAUq1C,iBAAmB,SAAUra,GAE3C,IAAIhI,EAAOpyB,KACP+C,EAAUqvB,EAAKrvB,SAIfq3B,EAAWC,WAAajI,EAAK9b,MAAMzO,QAAQwyB,YAE9Ct3B,EAAQy6B,iBAAiB,QAAS,SAAUp7B,GAE3C,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWC,WAEdD,EAAWC,UAAU18B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGtC1iB,EAAK9b,MAAMzO,QAAQwyB,WAEtBjI,EAAK9b,MAAMzO,QAAQwyB,UAAU18B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,KAKhD1a,EAAWE,cAAgBt6B,KAAKsW,MAAMzO,QAAQyyB,aAEjDv3B,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE9C,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWE,cAEdF,EAAWE,aAAa38B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGzC1iB,EAAK9b,MAAMzO,QAAQyyB,cAEtBlI,EAAK9b,MAAMzO,QAAQyyB,aAAa38B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,KAKtD/xC,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAI9C,GAFAA,EAAE2yC,iBAEElyC,SAASmyC,WAGRC,EAAQpyC,SAAS8B,KAAKuwC,mBAEpBC,kBAAkB/iB,EAAKrvB,SAE7BkyC,EAAM/F,cACA,GAAItsC,OAAOwyC,aAAc,CAE/B,IAAIH,KAAQpyC,SAASwyC,eAEfC,WAAWljB,EAAKrvB,SAEtBH,OAAOwyC,eAAeG,kBAEtB3yC,OAAOwyC,eAAeI,SAASP,OAK9B7a,EAAWG,aAAev6B,KAAKsW,MAAMzO,QAAQ0yB,cAEhDx3B,EAAQy6B,iBAAiB,cAAe,SAAUp7B,GAEjD,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWG,aAEdH,EAAWG,YAAY58B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGxC1iB,EAAK9b,MAAMzO,QAAQ0yB,aAEtBnI,EAAK9b,MAAMzO,QAAQ0yB,YAAY58B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAMvDjT,EAAKziC,UAAUu1C,iBAAmB,SAAUva,GAE3C,IAAIhI,EAAOpyB,KACP+C,EAAUqvB,EAAKrvB,SAEfq3B,EAAWO,gBAAkBvI,EAAK9b,MAAMzO,QAAQ8yB,iBAEnD53B,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAEhD,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWO,gBAEdP,EAAWO,eAAeh9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAG3C1iB,EAAK9b,MAAMzO,QAAQ8yB,gBAEtBvI,EAAK9b,MAAMzO,QAAQ8yB,eAAeh9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAKrD1a,EAAWQ,gBAAkBxI,EAAK9b,MAAMzO,QAAQ+yB,iBAEnD73B,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAEhD,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWQ,gBAEdR,EAAWQ,eAAej9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAG3C1iB,EAAK9b,MAAMzO,QAAQ+yB,gBAEtBxI,EAAK9b,MAAMzO,QAAQ+yB,eAAej9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAKrD1a,EAAWS,eAAiBzI,EAAK9b,MAAMzO,QAAQgzB,gBAElD93B,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAE/C,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWS,eAEdT,EAAWS,cAAcl9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAG1C1iB,EAAK9b,MAAMzO,QAAQgzB,eAEtBzI,EAAK9b,MAAMzO,QAAQgzB,cAAcl9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAKpD1a,EAAWU,cAAgB1I,EAAK9b,MAAMzO,QAAQizB,eAEjD/3B,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE9C,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWU,cAEdV,EAAWU,aAAan9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGzC1iB,EAAK9b,MAAMzO,QAAQizB,cAEtB1I,EAAK9b,MAAMzO,QAAQizB,aAAan9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAKnD1a,EAAWW,eAAiB3I,EAAK9b,MAAMzO,QAAQkzB,gBAElDh4B,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAE/C,IAAI0yC,EAAY1iB,EAAKiD,eAEjB+E,EAAWW,eAEdX,EAAWW,cAAcp9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAG1C1iB,EAAK9b,MAAMzO,QAAQkzB,eAEtB3I,EAAK9b,MAAMzO,QAAQkzB,cAAcp9B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,MAMzDjT,EAAKziC,UAAUs1C,iBAAmB,SAAUta,GAE3C,IAEIqD,EACAC,EACAC,EAJAvL,EAAOpyB,KACP+C,EAAUqvB,EAAKrvB,SAKfq3B,EAAWI,SAAWx6B,KAAKsW,MAAMzO,QAAQ2yB,WAE5CmD,GAAM,EAEN56B,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAEhDu7B,GAAM,GACJ,CAAEK,SAAS,IAEdj7B,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE9C,GAAIu7B,EAAK,CAER,IAAImX,EAAY1iB,EAAKiD,eAEjB+E,EAAWI,SAEdJ,EAAWI,QAAQ78B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGpC1iB,EAAK9b,MAAMzO,QAAQ2yB,SAEtBpI,EAAK9b,MAAMzO,QAAQ2yB,QAAQ78B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAIjDnX,GAAM,MAIJvD,EAAWK,YAAcz6B,KAAKsW,MAAMzO,QAAQ4yB,cAE/CgD,EAAS,KAET16B,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE9C,GAAIq7B,EAAQ,CAEX5vB,aAAa4vB,GAEbA,EAAS,KAET,IAAIqX,EAAY1iB,EAAKiD,eAEjB+E,EAAWK,YAEdL,EAAWK,WAAW98B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGvC1iB,EAAK9b,MAAMzO,QAAQ4yB,YAEtBrI,EAAK9b,MAAMzO,QAAQ4yB,WAAW98B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,QAInDrX,EAASpxB,WAAW,WAEnBwB,aAAa4vB,GAEbA,EAAS,MACP,SAKFrD,EAAWM,aAAe16B,KAAKsW,MAAMzO,QAAQ6yB,eAEhDgD,EAAU,KAEV36B,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAEhDyL,aAAa6vB,GAEbA,EAAUrxB,WAAW,WAEpBwB,aAAa6vB,GAEbA,EAAU,KAEVC,GAAM,EAEN,IAAImX,EAAY1iB,EAAKiD,eAEjB+E,EAAWM,aAEdN,EAAWM,YAAY/8B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,GAGxC1iB,EAAK9b,MAAMzO,QAAQ6yB,aAEtBtI,EAAK9b,MAAMzO,QAAQ6yB,YAAY/8B,KAAKy0B,EAAK9b,MAAOlU,EAAG0yC,IAElD,MACD,CAAE9W,SAAS,IAEdj7B,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE9CyL,aAAa6vB,GAEbA,EAAU,SAObmE,EAAKziC,UAAUq2C,kBAAoB,WAElC,IAAIlmC,EAUJ,YAAuB,KANtBA,EAFGvP,KAAKsW,MAAMob,UAAU,UAElB1xB,KAAKsW,MAAM5Y,QAAQuE,OAAOyzC,YAAY11C,MAGtCA,KAAK+C,QAAQk9B,UAAYjgC,KAAKvB,OAGA,YAAc4R,EAAQd,IAE1D,IAAK,SAEJ,GAAIA,aAAeywB,KAAM,CAIxB,KAAOhgC,KAAK+C,QAAQ8tB,YACnB7wB,KAAK+C,QAAQgC,YAAY/E,KAAK+C,QAAQ8tB,YACtC7wB,KAAK+C,QAAQ6B,YAAY2K,QAG1BvP,KAAK+C,QAAQk9B,UAAY,GAEd,MAAP1wB,GAEH1N,QAAQ+0B,KAAK,iJAAkJrnB,GAIjK,MAED,IAAK,YAEL,IAAK,OAEJvP,KAAK+C,QAAQk9B,UAAY,GAEzB,MAED,QAECjgC,KAAK+C,QAAQk9B,UAAY1wB,IAK5BsyB,EAAKziC,UAAUsyC,aAAe,WAEzB1xC,KAAKsW,MAAMob,UAAU,WAAa1xB,KAAKsW,MAAM5Y,QAAQuE,OAAOyvC,cAE/D1xC,KAAKsW,MAAM5Y,QAAQuE,OAAOyvC,aAAa1xC,OAMzC6hC,EAAKziC,UAAUo1C,iBAAmB,WAEjC,IAAI3a,EAAU75B,KAAK8yB,OAAO+G,QAEtBA,IAEa,IAAZA,EAEHA,EAAU75B,KAAKvB,MACa,mBAAXo7B,IAID,KAFhBA,EAAUA,EAAQ75B,KAAKq1B,mBAItBwE,EAAU,SAIW,IAAZA,IAEVA,EAAU,IAGX75B,KAAK+C,QAAQ64B,aAAa,QAAS/B,IAGnC75B,KAAK+C,QAAQ64B,aAAa,QAAS,KAMrCiG,EAAKziC,UAAUsH,WAAa,WAE3B,OAAO1G,KAAK+C,SAGb8+B,EAAKziC,UAAU0gC,SAAW,WAEzB,OAAO9/B,KAAKvB,OAGbojC,EAAKziC,UAAUs0C,YAAc,WAE5B,OAAO1zC,KAAKm0C,UAMbtS,EAAKziC,UAAUy0C,SAAW,SAAUp1C,EAAOq1C,GAE1C,IACIgB,EADU90C,KAAKuyC,oBAAoB9zC,EAAOq1C,KAKzC9zC,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAEtD1xB,KAAKsW,MAAM5Y,QAAQmoC,QAAQhtB,OAAO,WAAY7Y,KAAM,CAAEm0C,SAAUn0C,KAAKm0C,SAAUwB,SAAU31C,KAAKvB,QAG/Fq2C,EAAY90C,KAAKq1B,eAEbr1B,KAAK8yB,OAAOsH,WAAW+D,YAE1Bn+B,KAAK8yB,OAAOsH,WAAW+D,WAAWxgC,KAAKqC,KAAKsW,MAAOw+B,GAGpD90C,KAAKsW,MAAMzO,QAAQs2B,WAAWxgC,KAAKqC,KAAKsW,MAAOw+B,GAE/C90C,KAAKsW,MAAMzO,QAAQ++B,WAAWjpC,KAAKqC,KAAKsW,MAAOtW,KAAKsW,MAAMka,WAAWqW,aAIvEhF,EAAKziC,UAAUmzC,oBAAsB,SAAU9zC,EAAOq1C,GAErD,IAAI8B,GAAU,EAuCd,OArCI51C,KAAKvB,OAASA,IAEjBm3C,GAAU,EAEN9B,GAEC9zC,KAAK8yB,OAAOp1B,QAAQo2C,SAEvBr1C,EAAQuB,KAAKsW,MAAM5Y,QAAQghC,QAAQmX,cAAc71C,KAAMvB,KAK1DuB,KAAKg0C,eAAev1C,GAEhBm3C,GAAW51C,KAAKsW,MAAMob,UAAU,iBAE/B1xB,KAAK8yB,OAAOH,WAAW2K,SAAWt9B,KAAK8yB,OAAOH,WAAW4K,cAExDv9B,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,cAEhB,SAAlC1xB,KAAKsW,MAAMzO,QAAQ2vB,aAA4D,QAAlCx3B,KAAKsW,MAAMzO,QAAQ2vB,aAEnEx3B,KAAKsW,MAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKsW,MAAMka,WAAWiH,YAGvB,SAAlCz3B,KAAKsW,MAAMzO,QAAQ2vB,aAEtBx3B,KAAKsW,MAAM5Y,QAAQ85B,YAAY+b,eAAevzC,KAAK6xB,MAIpD7xB,KAAKsW,MAAM5Y,QAAQ85B,YAAYvzB,OAAOjE,KAAKsW,MAAMka,WAAWiH,aAKxDme,GAGR/T,EAAKziC,UAAU40C,eAAiB,SAAUv1C,GAEzCuB,KAAKm0C,SAAWn0C,KAAKvB,MAErBuB,KAAKvB,MAAQA,EAETuB,KAAKsW,MAAMzO,QAAQm+B,cAAgBhmC,KAAKsW,MAAMob,UAAU,iBAE3D1xB,KAAKsW,MAAM5Y,QAAQsoC,aAAaqM,QAGjCryC,KAAK8yB,OAAOmH,cAAcj6B,KAAK6xB,IAAIte,KAAM9U,GAErCuB,KAAKsW,MAAMzO,QAAQm+B,cAAgBhmC,KAAKsW,MAAMob,UAAU,iBAE3D1xB,KAAKsW,MAAM5Y,QAAQsoC,aAAasM,UAGjCtyC,KAAKy1C,oBAELz1C,KAAKw0C,mBAIDx0C,KAAKsW,MAAMzO,QAAQk1B,kBAAoB/8B,KAAKsW,MAAMob,UAAU,kBAE/D1xB,KAAKsW,MAAM5Y,QAAQs/B,cAAcC,iBAAiB,OAAQj9B,KAAK8yB,OAAQ9yB,KAAK+C,SAKzE/C,KAAKsW,MAAMob,UAAU,kBAExB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAcmkB,cAAc91C,KAAK+C,QAAS/C,KAAK8yB,SAIpE+O,EAAKziC,UAAUgiC,SAAW,WAEzBphC,KAAKwE,MAAQxE,KAAK8yB,OAAOtuB,MAEzBxE,KAAK+C,QAAQsB,MAAMG,MAAQxE,KAAK8yB,OAAOkI,aAGxC6G,EAAKziC,UAAU6iC,WAAa,WAE3BjiC,KAAKwE,MAAQ,GAEbxE,KAAK+C,QAAQsB,MAAMG,MAAQ,IAG5Bq9B,EAAKziC,UAAUk2B,SAAW,WAEzB,OAAOt1B,KAAKwE,OAASxE,KAAK+C,QAAQ8B,aAGnCg9B,EAAKziC,UAAUy/B,YAAc,WAE5B7+B,KAAKo3B,SAAWp3B,KAAK8yB,OAAOsE,SAE5Bp3B,KAAK+C,QAAQsB,MAAM+yB,SAAWp3B,KAAK8yB,OAAOmI,gBAG3C4G,EAAKziC,UAAU80C,YAAc,WAI5Bl0C,KAAK6xB,IAAIigB,sBAGVjQ,EAAKziC,UAAU4yC,YAAc,WAE5BhyC,KAAK+C,QAAQsB,MAAMI,OAAS,GAE5BzE,KAAKyE,OAAS,MAGfo9B,EAAKziC,UAAU2yC,UAAY,WAE1B/xC,KAAKyE,OAASzE,KAAK6xB,IAAIptB,OAEvBzE,KAAK+C,QAAQsB,MAAMI,OAASzE,KAAK6xB,IAAI0e,cAGtC1O,EAAKziC,UAAU20B,UAAY,WAE1B,OAAO/zB,KAAKyE,QAAUzE,KAAK+C,QAAQw9B,cAGpCsB,EAAKziC,UAAUm5B,KAAO,WAErBv4B,KAAK+C,QAAQsB,MAAMqoB,QAAU,IAG9BmV,EAAKziC,UAAU2M,KAAO,WAErB/L,KAAK+C,QAAQsB,MAAMqoB,QAAU,QAG9BmV,EAAKziC,UAAUo/B,KAAO,SAAUl1B,GAE/B,GAAItJ,KAAKsW,MAAMob,UAAU,QAAQ,GAEhC,OAAO1xB,KAAKsW,MAAM5Y,QAAQ8gC,KAAKuX,SAAS/1C,KAAMsJ,IAIhDu4B,EAAKziC,UAAUirC,WAAa,WAE3B,GAAIrqC,KAAKsW,MAAMob,UAAU,QAAQ,GAAO,CAEvC,IAAIskB,EAAUh2C,KAAKsW,MAAM5Y,QAAQ8gC,KAAKyX,iBAElCD,GAAWA,EAAQ1hB,aAAet0B,KAErCA,KAAKsW,MAAM5Y,QAAQ8gC,KAAK6L,aAGxBxoC,QAAQ+0B,KAAK,oEAKhBiL,EAAKziC,UAAUs5B,OAAS,WAEvB14B,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,SAEzC/C,KAAK+C,SAAU,EAEf/C,KAAK8yB,OAAOoP,WAAWliC,MAEvBA,KAAK6xB,IAAIqQ,WAAWliC,MAEpBA,KAAKk2C,MAAQ,IAMdrU,EAAKziC,UAAU60C,IAAM,WAEpB,IAAI7hB,EAAOpyB,KACP6yC,GAAW,EACX5f,EAAQjzB,KAAK6xB,IAAI6gB,aAAa1yC,MAElC,MAAO,CAENm2C,KAAM,WAEL,IACItN,EADAgK,EAAW7yC,KAAKo2C,QAGpB,QAAKvD,OAEJhK,EAAUzW,EAAK9b,MAAMka,WAAWmY,eAAevW,EAAKP,KAAK,OAIxDghB,EAAWhK,EAAQ+J,sBAAsB,OAIxCC,EAASrU,QAEF,IAWX6X,KAAM,WAEL,IACItN,EADA8J,EAAW7yC,KAAKsxB,OAGpB,QAAKuhB,OAEJ9J,EAAU3W,EAAK9b,MAAMka,WAAWsY,eAAe1W,EAAKP,KAAK,OAIxDghB,EAAW9J,EAAQiK,qBAAqBjK,EAAQ7S,MAAMr2B,YAIrDgzC,EAASrU,QAEF,IAWXlN,KAAM,WAIL,SAFAuhB,EAAWzgB,EAAKP,IAAImhB,qBAAqB/f,MAIxC4f,EAASrU,QAEF,IAOT4X,MAAO,WAIN,SAFAvD,EAAWzgB,EAAKP,IAAI+gB,qBAAqB3f,MAIxC4f,EAASrU,QAEF,IAOT8X,GAAI,WAEH,IAAIzN,EAAUzW,EAAK9b,MAAMka,WAAWsY,eAAe1W,EAAKP,KAAK,GAEzDgX,GAEHA,EAAQ3S,MAAMjD,GAAOuL,QAIvB+X,KAAM,WAEL,IAAI1N,EAAUzW,EAAK9b,MAAMka,WAAWmY,eAAevW,EAAKP,KAAK,GAEzDgX,GAEHA,EAAQ3S,MAAMjD,GAAOuL,UAOzBqD,EAAKziC,UAAUuvC,SAAW,WAEzB3uC,KAAK6xB,IAAI6gB,aAAa1yC,OAKvB6hC,EAAKziC,UAAUi2B,aAAe,WAE7B,OAAO,IAAIme,EAAcxzC,OAG1B,IAAIw2C,EAAgB,SAAuBlgC,GAE1CtW,KAAKsW,MAAQA,EAEbtW,KAAKg1B,QAAS,EAEdh1B,KAAK+C,QAAU/C,KAAK8C,gBAEpB9C,KAAKiuC,UAAW,EAEhBjuC,KAAKy2C,MAAQ,GAEbz2C,KAAK02C,eAGNF,EAAcp3C,UAAU0D,cAAgB,WAEvC,IAAIguB,EAAKjuB,SAASC,cAAc,OAIhC,OAFAguB,EAAGC,UAAUvc,IAAI,oBAEVsc,GAGR0lB,EAAcp3C,UAAUs3C,YAAc,SAAU3zC,GAE/C,GAAI/C,KAAKsW,MAAMzO,QAAQ8uC,cAEtB,OAAQtmC,EAAQrQ,KAAKsW,MAAMzO,QAAQ8uC,gBAElC,IAAK,SAEwC,MAAxC32C,KAAKsW,MAAMzO,QAAQ8uC,cAAc,GAEpC32C,KAAK+C,QAAQk9B,UAAYjgC,KAAKsW,MAAMzO,QAAQ8uC,eAG5C32C,KAAKiuC,UAAW,EAEhBjuC,KAAK+C,QAAUF,SAASiE,cAAc9G,KAAKsW,MAAMzO,QAAQ8uC,gBAG1D,MAED,QAEC32C,KAAK+C,QAAU/C,KAAKsW,MAAMzO,QAAQ8uC,gBAQtCH,EAAcp3C,UAAUsH,WAAa,WAEpC,OAAO1G,KAAK+C,SAGbyzC,EAAcp3C,UAAU8L,OAAS,SAAUnI,EAAS81B,GAEnD74B,KAAK42C,SAAS/d,GAEd74B,KAAK+C,QAAQ6B,YAAY7B,GAEzB/C,KAAKsW,MAAMka,WAAW0D,mBAGvBsiB,EAAcp3C,UAAUqM,QAAU,SAAU1I,EAAS81B,GAEpD74B,KAAK42C,SAAS/d,GAEd74B,KAAK+C,QAAQ6tB,aAAa7tB,EAAS/C,KAAK+C,QAAQ8tB,YAEhD7wB,KAAKsW,MAAMka,WAAW0D,mBAGvBsiB,EAAcp3C,UAAUgJ,OAAS,SAAUrF,GAE1CA,EAAQuwB,WAAWvuB,YAAYhC,GAE/B/C,KAAK62C,cAGNL,EAAcp3C,UAAUy3C,WAAa,SAAUvtC,GAEzCtJ,KAAK+C,QAAQ8tB,aAAcvnB,IAE1BtJ,KAAKiuC,UAETjuC,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,SAG1C/C,KAAKg1B,QAAS,IAMhBwhB,EAAcp3C,UAAUw3C,SAAW,SAAU/d,GAEvC74B,KAAKg1B,SAETh1B,KAAKg1B,QAAS,EAETh1B,KAAKiuC,WAETjuC,KAAKsW,MAAMvT,QAAQ6B,YAAY5E,KAAK0G,cAEpC1G,KAAKsW,MAAMvT,QAAQsB,MAAMqoB,QAAU,KAIjCmM,GAEH74B,KAAKy2C,MAAM51C,KAAKg4B,IAIlB2d,EAAcp3C,UAAUszB,OAAS,WAEhC1yB,KAAKy2C,MAAMlxC,QAAQ,SAAUuxC,GAE5BA,EAAKC,kBAIP,IAAIlhC,EAAY,SAASA,EAAU9S,EAAS8E,GAE3C7H,KAAK6H,QAAU,GAEf7H,KAAK21B,cAAgB,KAErB31B,KAAKwwB,WAAa,KAElBxwB,KAAKm4B,cAAgB,KAErBn4B,KAAKouC,QAAU,GAEfpuC,KAAKg3C,aAAc,EAGnBh3C,KAAKtC,QAAU,GAGfsC,KAAKi3C,kBAAkBl0C,GAEvB/C,KAAKk3C,kBAAkBrvC,GAAW,IAElC7H,KAAKm3C,UAELthC,EAAUzW,UAAUg4C,MAAMC,SAASr3C,OAKpC6V,EAAUzW,UAAUk4C,eAAiB,CAEpC7yC,QAAQ,EAGRwS,OAAQ,UAERm0B,wBAAwB,EAGxB9T,eAAgB,GAEhBrD,gBAAiB,MAGjB8I,kBAAkB,EAElB6U,eAAe,EAEf2F,YAAY,EAGZzgC,QAAS,GAGTvD,KAAM,GAGNmyB,aAAa,EAGbM,cAAc,EAGdjK,qBAAsB,IAGtB+C,UAAU,EAEVtC,gBAAgB,EAEhB+X,sBAAuB,OAGvBiD,aAAa,EAEbC,eAAe,EAEfC,qBAAqB,EAGrBC,uBAAuB,EAGvBC,kBAAkB,EAGlBjB,eAAe,EAGf1jB,MAAO,KAGP4kB,YAAa,GAGbC,WAAW,EAEXC,qBAAqB,EAErBC,sBAAuB,SAEvBC,uBAAwB,QAExBC,qBAAsB,QAEtBC,qBAAsB,SAEtBC,qBAAqB,EAGrBC,gBAAiB,aAEjBC,gBAAiB,aAEjBC,oBAAqB,aAGrBC,uBAAuB,EAEvBC,cAAe,SAAuBllC,EAAMmlC,GAC3C,OAAOA,GAGRC,kBAAkB,EAElBC,gBAAgB,EAGhB3N,UAAU,EAEV4N,uBAAuB,EAEvBC,uBAAuB,EAEvBC,oBAAqB,EAErBC,mBAAoB,YAEpBC,yBAAyB,EAEzBC,uBAAuB,EAEvBC,uBAAuB,EAEvBC,oBAAqB,aAErBC,qBAAsB,aAGtBC,aAAa,EAEbC,gBAAgB,EAEhBC,aAAa,EAEbC,aAAa,EAEbC,gBAAgB,EAEhBC,kBAAkB,EAElBC,YAAa,GAGbrS,UAAW,SAGX+C,WAAY,YAEZuP,oBAAqB,OAErBC,4BAA4B,EAE5BvP,uBAAuB,EAEvBwP,gBAAiB,SAAyBxmC,EAAMse,GAC/C,OAAO,GAIRsL,yBAAyB,EAGzBnM,eAAe,EAGf6U,SAAS,EAGTmU,QAAQ,EAERC,MAAO,GAEPjO,YAAY,EAEZ+B,iBAAkB,EAGlBnY,kBAAkB,EAElBskB,gBAAgB,EAEhBC,kBAAkB,EAElBC,cAAe,GAEfC,iBAAiB,EAGjB5nB,kBAAkB,EAElB6nB,mCAAmC,EAEnCC,uCAAuC,EAEvCC,mCAAmC,EAGnCjV,YAAY,EAEZkV,gBAAgB,EAEhBC,sBAAuB,EAEvBC,wBAAwB,EAExBC,mBAAmB,EAEnBC,mBAAoB,GAEpBC,uBAAwB,GAExBrT,iBAAkB,OAGlBsT,SAAS,EAETC,kBAAkB,EAElBC,WAAY,GAEZC,WAAY,MAEZC,gBAAiB,OAEjBC,iBAAiB,EAEjBC,YAAY,EAEZC,mBAAmB,EAEnBC,iBAAiB,EAEjBjS,eAAe,EAEfJ,aAAa,EAEbhF,qBAAqB,EAErBsX,yBAA0B,EAE1BC,gCAAiC,EAGjC3X,SAAS,EAET4X,gBAAgB,EAEhBC,aAAa,EAEbC,aAAa,EAGbC,kBAAkB,EAGlBxe,gBAAgB,EAGhB7B,aAAa,EAEbsgB,4BAA4B,EAE5BC,mBAAmB,EAEnBC,oBAAqB,SAErBC,wBAAyB,aAEzBC,gBAAiB,aAEjBC,sBAAuB,aAEvBC,uBAAwB,aAExBC,0BAA2B,aAE3BC,oBAAqB,aAErBC,0BAA2B,aAE3BC,yBAA0B,aAE1BxX,oBAAqB,MAErBC,sBAAsB,EAEtBxO,uBAAwB,OAExBC,yBAAyB,EAEzBib,cAAc,EAEdp0B,aAAa,EAIbrG,cAAe,aAEfulC,WAAY,aAIZxQ,cAAe,aAEfG,eAAgB,aAIhByE,UAAU,EAEVC,aAAa,EAEbC,YAAY,EAEZM,QAAQ,EAERC,WAAW,EAEXC,YAAY,EAEZP,eAAe,EAEfC,eAAe,EAEfC,cAAc,EAEdC,aAAa,EAEbC,cAAc,EAEdrJ,SAAU,aAEVpB,WAAY,aAEZsB,SAAU,aAEVwK,WAAY,aAEZiK,oBAAqB,aAErBC,YAAa,aAEbC,cAAe,aAEfC,WAAY,aAMZxiB,WAAW,EAEXC,cAAc,EAEdC,aAAa,EAEbC,SAAS,EAETC,YAAY,EAEZC,aAAa,EAEbC,gBAAgB,EAEhBC,gBAAgB,EAEhBC,eAAe,EAEfC,cAAc,EAEdC,eAAe,EAEfqD,YAAa,aAEbD,WAAY,aAEZE,kBAAmB,aAInB3I,aAAa,EAEbonB,cAAe,aAEfzd,mBAAoB,aAEpBwB,wBAAyB,aAIzBkc,cAAe,aAEfC,aAAc,aAIdrX,YAAa,aAEbxuB,WAAY,aAEZyvB,WAAY,aAIZqW,eAAgB,aAEhBC,cAAc,EAEdC,UAAW,aAIXC,eAAe,EAEfC,cAAc,EAIdC,YAAa,aAEbC,WAAY,aAIZC,mBAAoB,QAEpBC,sBAAsB,EAEtBC,aAAc,aAEdC,aAAa,EAEbC,uBAAwB,aAExBC,YAAY,EAEZC,eAAe,EAEfC,cAAc,EAEdC,UAAU,EAEVC,aAAa,EAEbC,cAAc,EAEd1mB,aAAa,EAIb2mB,WAAY,aAIZC,UAAW,aAIXC,iBAAkB,aAIlBC,YAAa,aAEbC,YAAa,cAId1oC,EAAUzW,UAAU83C,kBAAoB,SAAUrvC,GAIjD,IAAK,IAAI9I,KAAO8I,OAEyB,IAA7B7H,KAAKs3C,eAAev4C,IAE9B8C,QAAQ+0B,KAAK,oCAAqC73B,GAMpD,IAAK,IAAIA,KAAOiB,KAAKs3C,eAEhBv4C,KAAO8I,EAEV7H,KAAK6H,QAAQ9I,GAAO8I,EAAQ9I,GAGxB+B,MAAMC,QAAQf,KAAKs3C,eAAev4C,IAErCiB,KAAK6H,QAAQ9I,GAAO,GAC4B,WAAtCsR,EAAQrQ,KAAKs3C,eAAev4C,IAEtCiB,KAAK6H,QAAQ9I,GAAO,GAGpBiB,KAAK6H,QAAQ9I,GAAOiB,KAAKs3C,eAAev4C,IAM5C8W,EAAUzW,UAAU63C,kBAAoB,SAAUl0C,GAEjD,MAA2B,oBAAhBwxB,aAA+BxxB,aAAmBwxB,aAE5Dv0B,KAAK+C,QAAUA,GAER,GACsB,iBAAZA,GAEjB/C,KAAK+C,QAAUF,SAASiE,cAAc/D,KAElC/C,KAAK+C,UAKRlB,QAAQC,MAAM,kEAAmEiB,IAE1E,KAIRlB,QAAQC,MAAM,uDAAwDiB,IAE/D,IAMT8S,EAAUzW,UAAU+7B,4BAA8B,aAElDtlB,EAAUzW,UAAUo/C,gBAAkB,WAErCx+C,KAAK+C,QAAQguB,UAAUvc,IAAI,0BAEvB5R,OAAOwyC,aAENxyC,OAAOwyC,eAAeqJ,MAGzB77C,OAAOwyC,eAAeqJ,QACZ77C,OAAOwyC,eAAeG,iBAGhC3yC,OAAOwyC,eAAeG,kBAEb1yC,SAASmyC,WAGnBnyC,SAASmyC,UAAUyJ,QAGpBz+C,KAAK+C,QAAQguB,UAAU3oB,OAAO,2BAK/ByN,EAAUzW,UAAU+3C,QAAU,WAE7Bn3C,KAAK0+C,uBAEL1+C,KAAKm7B,8BAELn7B,KAAK2+C,cAEwB,UAAzB3+C,KAAK+C,QAAQ67C,SAEZ5+C,KAAK0xB,UAAU,mBAAmB,IAErC1xB,KAAKtC,QAAQmhD,gBAAgBC,aAI/B9+C,KAAK21B,cAAgB,IAAIxF,EAAcnwB,MAEvCA,KAAKwwB,WAAa,IAAI2R,EAAWniC,MAEjCA,KAAKm4B,cAAgB,IAAIqe,EAAcx2C,MAEvCA,KAAK21B,cAAczE,cAAclxB,KAAKwwB,YAEtCxwB,KAAKwwB,WAAWoT,iBAAiB5jC,KAAK21B,eAEtC31B,KAAK++C,gBAEL/+C,KAAKg/C,oBAKNnpC,EAAUzW,UAAUs/C,qBAAuB,WAE1C1+C,KAAK6H,QAAQiP,QAAU9W,KAAK6H,QAAQiP,QAAQzT,MAAM,GAE7CrD,KAAK6H,QAAQm+B,eAEjBhmC,KAAK6H,QAAQ0L,KAAOvT,KAAK6H,QAAQ0L,KAAKlQ,MAAM,KAM9CwS,EAAUzW,UAAU2/C,cAAgB,WACnC,IAAIE,EAASj/C,KAET+C,EAAU/C,KAAK+C,QACfm8C,EAAMl/C,KAAKtC,QACXmK,EAAU7H,KAAK6H,QAUnB,IARAA,EAAQqP,cAAcvZ,KAAKqC,MAE3B+C,EAAQguB,UAAUvc,IAAI,aAEtBzR,EAAQ64B,aAAa,OAAQ,QAItB74B,EAAQ8tB,YACd9tB,EAAQgC,YAAYhC,EAAQ8tB,YA4B7B,IAAK,IAAImpB,KAzBLnyC,EAAQpD,SAEXoD,EAAQpD,OAASwtB,MAAMpqB,EAAQpD,QAAUoD,EAAQpD,OAASoD,EAAQpD,OAAS,KAE3E1B,EAAQsB,MAAMI,OAASoD,EAAQpD,QAGhCzE,KAAK21B,cAAc1E,aAEnBjxB,KAAKwwB,WAAWS,aAEhBjxB,KAAKm/C,iBAEDn/C,KAAK0xB,UAAU,UAAU,IAE5BwtB,EAAIjoC,OAAOga,WAAWppB,EAAQoP,SAKS,IAApCpP,EAAQs1B,yBAEX+hB,EAAIziB,SAAS2iB,2BAA2Bv3C,EAAQs1B,yBAG9Bt1B,EAAQoyC,MAE1BiF,EAAIziB,SAAS4iB,YAAYrF,EAAQnyC,EAAQoyC,MAAMD,IAOhD,GAJAkF,EAAIziB,SAAS6iB,UAAUz3C,EAAQmyC,QAIG,iBAAvBnyC,EAAQ0V,YAAyB,CAE3C,IAAIuT,EAAKjuB,SAASC,cAAc,OAEhCguB,EAAGC,UAAUvc,IAAI,yBAEjB,IAAIkK,EAAO7b,SAASC,cAAc,QAElC4b,EAAKuhB,UAAYp4B,EAAQ0V,YAEzBuT,EAAGlsB,YAAY8Z,GAEf7W,EAAQ0V,YAAcuT,EAmDvB,GA9CA/tB,EAAQ6B,YAAY5E,KAAK21B,cAAcjvB,cAEvC3D,EAAQ6B,YAAY5E,KAAKwwB,WAAW9pB,cAEhCmB,EAAQ8uC,eAEX32C,KAAKm4B,cAAcye,YAGf/uC,EAAQ+tB,kBAAoB/tB,EAAQqyC,gBAAkBryC,EAAQsyC,mBAAqBn6C,KAAK0xB,UAAU,eAAe,IAErHwtB,EAAIrpB,YAAY5E,WAAWppB,EAAQwyC,gBAAiBxyC,EAAQuyC,eAGzDvyC,EAAQ+tB,kBAAoB51B,KAAK0xB,UAAU,eAAe,KAE7D7pB,EAAQiP,QAAUooC,EAAIrpB,YAAY0pB,KAAK,UAAW13C,EAAQiP,UAGvDjP,EAAQ2zB,aAAex7B,KAAK0xB,UAAU,YAEzCwtB,EAAIzjB,QAAQxK,aAGTppB,EAAQ69B,aAAe1lC,KAAK6H,QAAQ0L,MAEvCvT,KAAK21B,cAAc/D,2BAA2B5xB,KAAK6H,QAAQ0L,MAGxDvT,KAAK0xB,UAAU,gBAElBwtB,EAAI1nB,YAAYvG,aAGjBjxB,KAAK21B,cAAcxD,WAAWtqB,EAAQiP,SAElCjP,EAAQojC,UAAYjrC,KAAK0xB,UAAU,YAAY,IAElDwtB,EAAIjU,SAASha,aAGVjxB,KAAK0xB,UAAU,eAElB1xB,KAAKtC,QAAQgtC,WAAWzZ,cAGpBppB,EAAQqyC,gBAAkBryC,EAAQ2vC,cAAgBx3C,KAAK0xB,UAAU,QAAQ,GAAO,CAEpF,IAAIyX,EAAU,GAEVthC,EAAQqyC,gBAAkBl6C,KAAK0xB,UAAU,eAAe,IAI3C,KAFhByX,EAAU+V,EAAIrpB,YAAY0pB,KAAK,UAEN13C,EAAQ2vC,cAEhCrO,EAAUthC,EAAQ2vC,aAET3vC,EAAQ2vC,cAElBrO,EAAUthC,EAAQ2vC,aAGnB0H,EAAI5gB,KAAKkhB,QAAQrW,GAGlB,IAAKthC,EAAQsyC,kBAAoBtyC,EAAQ4vC,gBAAkBz3C,KAAK0xB,UAAU,UAAU,GAAO,CAE1F,IAAI6X,EAAU,GAEV1hC,EAAQsyC,kBAAoBn6C,KAAK0xB,UAAU,eAAe,IAI7C,KAFhB6X,EAAU2V,EAAIrpB,YAAY0pB,KAAK,YAEN13C,EAAQ4vC,gBAEhClO,EAAU1hC,EAAQ4vC,eAET5vC,EAAQ4vC,gBAElBlO,EAAU1hC,EAAQ4vC,eAGnByH,EAAIlwC,OAAOywC,UAAUlW,GAGlB1hC,EAAQ6vC,qBAAuB13C,KAAK0xB,UAAU,UAAU,IAE3D7pB,EAAQ6vC,oBAAoBnyC,QAAQ,SAAU+hC,GAE7C,IAAIxU,EAASmsB,EAAOtpB,cAAcxB,WAAWmT,EAAKtV,OAElD,IAAIc,EAOH,OAFAjxB,QAAQ+0B,KAAK,kDAAmD0Q,EAAKtV,QAE9D,EALPktB,EAAIlwC,OAAOmqB,qBAAqBrG,EAAQwU,EAAK7oC,SAU5CuB,KAAK0xB,UAAU,SAElBwtB,EAAI/a,KAAKlT,aAGNppB,EAAQ09B,YAAcvlC,KAAK0xB,UAAU,QAAQ,IAEhDwtB,EAAIxX,KAAKzW,aAGNppB,EAAQi8B,SAAW9jC,KAAK0xB,UAAU,aAAa,IAElDwtB,EAAInb,UAAU9S,aAGXjxB,KAAK0xB,UAAU,gBAElBwtB,EAAIrH,YAAY5mB,aAGbjxB,KAAK0xB,UAAU,cAElBwtB,EAAIpZ,UAAUC,oBAAmB,GAG9Bl+B,EAAQ0vC,YAAcv3C,KAAK0xB,UAAU,gBAExCwtB,EAAIQ,YAAYzuB,aAGbjxB,KAAK0xB,UAAU,cAElBwtB,EAAIpH,UAAU7mB,aAGXppB,EAAQyxC,aAAet5C,KAAK0xB,UAAU,UAEzCwtB,EAAIS,MAAM1uB,aAGXppB,EAAQ40C,WAAW9+C,KAAKqC,OAGzB6V,EAAUzW,UAAU4/C,iBAAmB,WAE3Bh/C,KAEF6H,QAAQ09B,YAFNvlC,KAEyB0xB,UAAU,SAFnC1xB,KAILtC,QAAQgqC,KAAKrV,OAAM,GAEO,SANrBryB,KAMD6H,QAAQ09B,WANPvlC,KAQA6H,QAAQ0L,KAAK1T,OARbG,KAUHwwB,WAAW9Y,QAVR1X,KAUqB6H,QAAQ0L,OAV7BvT,KAaE6H,QAAQkzC,SAbV/6C,KAa0B6H,QAAQmzC,mBAblCh7C,KAa4D0xB,UAAU,QAbtE1xB,KAeFtC,QAAQymC,KAAK4F,WAAWJ,KAAK,cAAgBC,MAAM,cAfjD5pC,KAkBFwwB,WAAW9Y,QAlBT1X,KAkBsB6H,QAAQ0L,MAlB9BvT,KAuBA6H,QAAQkzC,QAvBR/6C,KAyBHtC,QAAQgqC,KAAKoC,QAAQ,GAAGH,KAAK,cAAgBC,MAAM,cAzBhD5pC,KA4BHwwB,WAAW9Y,QAAQ,KA5BhB1X,KAiCD6H,QAAQ0L,KAAK1T,OAjCZG,KAmCJwwB,WAAW9Y,QAnCP1X,KAmCoB6H,QAAQ0L,OAnC5BvT,KAsCC6H,QAAQkzC,SAtCT/6C,KAsCyB6H,QAAQmzC,mBAtCjCh7C,KAsC2D0xB,UAAU,QAtCrE1xB,KAwCHtC,QAAQymC,KAAK4F,WAAWJ,KAAK,cAAgBC,MAAM,cAxChD5pC,KA2CHwwB,WAAW9Y,QA3CR1X,KA2CqB6H,QAAQ0L,OAQzCsC,EAAUzW,UAAUkY,QAAU,WAE7B,IAAIvU,EAAU/C,KAAK+C,QAqCnB,IAnCA8S,EAAUzW,UAAUg4C,MAAMwI,WAAW5/C,MAGjCA,KAAK6H,QAAQm+B,cAAgBhmC,KAAK0xB,UAAU,gBAAgB,IAE/D1xB,KAAKtC,QAAQsoC,aAAa6Z,cAK3B7/C,KAAKwwB,WAAWzS,KAAKxY,QAAQ,SAAUssB,GAEtCA,EAAIsU,SAGLnmC,KAAKwwB,WAAWzS,KAAO,GAEvB/d,KAAKwwB,WAAWiH,WAAa,GAE7Bz3B,KAAKwwB,WAAWkS,YAAc,GAI1B1iC,KAAK6H,QAAQ0vC,YAAcv3C,KAAK0xB,UAAU,gBAE7C1xB,KAAKtC,QAAQgiD,YAAYI,gBAGtB9/C,KAAK0xB,UAAU,gBAElB1xB,KAAKtC,QAAQm6C,YAAYiI,gBAKnB/8C,EAAQ8tB,YACd9tB,EAAQgC,YAAYhC,EAAQ8tB,YAC5B9tB,EAAQguB,UAAU3oB,OAAO,cAG3ByN,EAAUzW,UAAU+/C,eAAiB,WAEpC,IAAIY,EAAKC,UAAUC,UAEfF,EAAGz/C,QAAQ,YAAc,GAE5BN,KAAKouC,QAAU,KAEfpuC,KAAKg3C,aAAc,GACT+I,EAAGz/C,QAAQ,SAAW,GAEhCN,KAAKouC,QAAU,OAEfpuC,KAAKg3C,aAAc,GACT+I,EAAGz/C,QAAQ,YAAc,GAEnCN,KAAKouC,QAAU,UAEfpuC,KAAKg3C,aAAc,IAGnBh3C,KAAKouC,QAAU,QAEfpuC,KAAKg3C,aAAc,IASrBnhC,EAAUzW,UAAU8gD,qBAAuB,SAAUC,GACpD,IAAIC,EAASpgD,KAEb,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI6pB,EAAQx9C,SAASC,cAAc,SAEnCu9C,EAAM33C,KAAO,OAEb23C,EAAM3nC,OAASynC,GAAc,yBAE7BE,EAAM7iB,iBAAiB,SAAU,SAAUp7B,GAE1C,IAEImR,EAFA+sC,EAAOD,EAAME,MAAM,GACnBC,EAAS,IAAIC,WAGjBD,EAAOE,WAAWJ,GAElBE,EAAOG,OAAS,SAAUv+C,GAEzB,IAECmR,EAAOvN,KAAKC,MAAMu6C,EAAOngC,QACxB,MAAOje,GAMR,OAJAP,QAAQ+0B,KAAK,kDAAmDx0B,QAEhEo0B,EAAOp0B,GAKRg+C,EAAOQ,SAASrtC,GAAMo2B,KAAK,SAAUp2B,GAEpCgjB,EAAQhjB,KACNq2B,MAAM,SAAUhoC,GAElB20B,EAAQ30B,MAIV4+C,EAAOK,QAAU,SAAUz+C,GAE1BP,QAAQ+0B,KAAK,yCAEbJ,OAIF6pB,EAAMpzC,WAMR4I,EAAUzW,UAAUsY,QAAU,SAAUnE,EAAMmsB,EAAQohB,GAOrD,OALI9gD,KAAK0xB,UAAU,SAElB1xB,KAAKtC,QAAQymC,KAAK4c,qBAGZ/gD,KAAK4gD,SAASrtC,EAAMmsB,EAAQohB,IAGpCjrC,EAAUzW,UAAUwhD,SAAW,SAAUrtC,EAAMmsB,EAAQohB,EAAQE,GAI9D,MAAoB,iBAATztC,EAsCNA,EAxCMvT,KA4CGwwB,WAAW9Y,QAAQnE,EAAMytC,GA5C5BhhD,KAiDA0xB,UAAU,UAjDV1xB,KAiD2BtC,QAAQymC,KAAK8c,QAjDxCjhD,KAiDuD6H,QAAQmzC,kBAExC,UAnDvBh7C,KAmDC6H,QAAQ09B,YAnDTvlC,KAmDwC0xB,UAAU,QAAQ,IAnD1D1xB,KAqDFtC,QAAQgqC,KAAKrV,OAAM,GArDjBryB,KAuDKtC,QAAQgqC,KAAKoC,QAAQ,IAvD1B9pC,KA0DKtC,QAAQymC,KAAK4F,SAASiX,GA1D3BhhD,KAgEIwwB,WAAW9Y,QAAQ,GAAIspC,GA5DZ,GAArBztC,EAAKjT,QAAQ,MAAkC,GAArBiT,EAAKjT,QAAQ,KAJjCN,KAQGwwB,WAAW9Y,QAAQ1R,KAAKC,MAAMsN,GAAOytC,GARxChhD,KAWA0xB,UAAU,QAAQ,IAEtBgO,GAbI1/B,KAeFtC,QAAQymC,KAAKsF,UAAU/J,GAGzBohB,GAlBI9gD,KAoBFtC,QAAQymC,KAAK+c,UAAUJ,GApBrB9gD,KAuBHtC,QAAQymC,KAAKgd,OAAO5tC,GAEM,UAzBvBvT,KAyBC6H,QAAQ09B,YAzBTvlC,KAyBwC0xB,UAAU,QAAQ,IAzB1D1xB,KA2BFtC,QAAQgqC,KAAKrV,OAAM,GA3BjBryB,KA6BKtC,QAAQgqC,KAAKoC,QAAQ,IA7B1B9pC,KAkCKtC,QAAQymC,KAAK4F,SAASiX,SAvBpC,GA6DHnrC,EAAUzW,UAAUmpC,UAAY,WAE3BvoC,KAAK0xB,UAAU,SAElB1xB,KAAKtC,QAAQymC,KAAK4c,qBAGnB/gD,KAAKwwB,WAAW+X,aAKjB1yB,EAAUzW,UAAUynC,QAAU,SAAU7R,GAEvC,OAAOh1B,KAAKwwB,WAAWqW,QAAQ7R,IAKhCnf,EAAUzW,UAAU4pC,aAAe,SAAUhU,GAE5C,OAAOh1B,KAAKwwB,WAAWwY,aAAahU,IAKrCnf,EAAUzW,UAAUgiD,WAAa,SAAUpvB,EAAOtpB,EAAMjK,GAEvD,GAAIuB,KAAK0xB,UAAU,UAAU,GAE5B,OAAO1xB,KAAKtC,QAAQsR,OAAOqyC,OAAO,OAAQrvB,EAAOtpB,EAAMjK,IAMzDoX,EAAUzW,UAAUkiD,WAAa,SAAUtvB,EAAOtpB,EAAMjK,GAEvD,GAAIuB,KAAK0xB,UAAU,UAAU,GAE5B,OAAO1xB,KAAKtC,QAAQsR,OAAOqyC,OAAO,OAAQrvB,EAAOtpB,EAAMjK,IAMzDoX,EAAUzW,UAAUmiD,QAAU,SAAU5sB,EAAStwB,EAAOy8C,GAEvD,GAAI9gD,KAAK0xB,UAAU,mBAAmB,GAErC,OAAO1xB,KAAKtC,QAAQ8jD,gBAAgBD,QAAQ5sB,EAAStwB,EAAOy8C,IAM9DjrC,EAAUzW,UAAUugD,MAAQ,SAAUhrB,EAAStwB,EAAOy8C,GAErD,GAAI9gD,KAAK0xB,UAAU,SAAS,GAE3B,OAAO1xB,KAAKtC,QAAQiiD,MAAM8B,gBAAgB9sB,EAAStwB,EAAOy8C,IAM5DjrC,EAAUzW,UAAUsiD,WAAa,WAEhC,GAAI1hD,KAAK0xB,UAAU,QAAQ,GAE1B,OAAO1xB,KAAKtC,QAAQymC,KAAK8c,UAM3BprC,EAAUzW,UAAUuiD,YAAc,SAAUpuC,EAAMmsB,EAAQohB,GAOzD,OALI9gD,KAAK0xB,UAAU,SAElB1xB,KAAKtC,QAAQymC,KAAK4c,qBAGZ/gD,KAAK4gD,SAASrtC,EAAMmsB,EAAQohB,GAAQ,IAK5CjrC,EAAUzW,UAAU6vC,WAAa,SAAU17B,GAC1C,IAAIquC,EAAU5hD,KAEVoyB,EAAOpyB,KAEP6hD,EAAY,EAEhB,OAAO,IAAIvrB,QAAQ,SAAUC,EAASC,GAEjCorB,EAAQlwB,UAAU,SAErBkwB,EAAQlkD,QAAQymC,KAAK4c,qBAGF,iBAATxtC,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGfA,EAEHA,EAAKhO,QAAQ,SAAU+hC,GAEtB,IAAIzV,EAAMO,EAAK5B,WAAW6T,QAAQiD,EAAKlV,EAAKvqB,QAAQorB,QAEhDpB,IAEHgwB,IAEAhwB,EAAIod,WAAW3H,GAAMqC,KAAK,aAEzBkY,GAICtrB,UAOJ10B,QAAQ+0B,KAAK,mCAEbJ,EAAO,uCAKV3gB,EAAUzW,UAAU0iD,QAAU,SAAUvuC,EAAMyzB,EAAK/T,GAClD,IAAI8uB,EAAU/hD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAEjCurB,EAAQrwB,UAAU,SAErBqwB,EAAQrkD,QAAQymC,KAAK4c,qBAGF,iBAATxtC,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGfA,EAEHwuC,EAAQvxB,WAAW0W,QAAQ3zB,EAAMyzB,EAAK/T,GAAO0W,KAAK,SAAU5rB,GAE3D,IAAIqR,EAAS,GAEbrR,EAAKxY,QAAQ,SAAUssB,GAEtBzC,EAAOvuB,KAAKgxB,EAAIwD,kBAGjBkB,EAAQnH,MAITvtB,QAAQ+0B,KAAK,mCAEbJ,EAAO,uCAOV3gB,EAAUzW,UAAU4iD,gBAAkB,SAAUzuC,GAC/C,IAAI0uC,EAAUjiD,KAEVoyB,EAAOpyB,KACP+d,EAAO,GACP8jC,EAAY,EAEhB,OAAO,IAAIvrB,QAAQ,SAAUC,EAASC,GAEjCyrB,EAAQvwB,UAAU,SAErBuwB,EAAQvkD,QAAQymC,KAAK4c,qBAGF,iBAATxtC,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGfA,EAEHA,EAAKhO,QAAQ,SAAU+hC,GAEtB,IAAIzV,EAAMO,EAAK5B,WAAW6T,QAAQiD,EAAKlV,EAAKvqB,QAAQorB,QAEpD4uB,IAEIhwB,EAEHA,EAAIod,WAAW3H,GAAMqC,KAAK,WAEzBkY,IAEA9jC,EAAKld,KAAKgxB,EAAIwD,gBAETwsB,GAEJtrB,EAAQxY,KAKVqU,EAAK5B,WAAW0W,QAAQI,GAAMqC,KAAK,SAAUuY,GAE5CL,IAEA9jC,EAAKld,KAAKqhD,EAAQ,GAAG7sB,gBAEhBwsB,GAEJtrB,EAAQxY,QAOZlc,QAAQ+0B,KAAK,mCAEbJ,EAAO,uCAOV3gB,EAAUzW,UAAUu0C,OAAS,SAAU1gB,GAEtC,IAAIpB,EAAM7xB,KAAKwwB,WAAW6T,QAAQpR,GAElC,OAAIpB,EAEIA,EAAIwD,gBAGXxzB,QAAQ+0B,KAAK,sCAAuC3D,IAE7C,IAMTpd,EAAUzW,UAAUqlC,mBAAqB,SAAUngC,EAAU0wB,GAE5D,IAAInD,EAAM7xB,KAAKwwB,WAAWiU,mBAAmBngC,EAAU0wB,GAEvD,OAAInD,EAEIA,EAAIwD,gBAGXxzB,QAAQ+0B,KAAK,sCAAuCtyB,IAE7C,IAMTuR,EAAUzW,UAAUgnC,UAAY,SAAUnT,GACzC,IAAIkvB,EAAUniD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI3E,EAAMswB,EAAQ3xB,WAAW6T,QAAQpR,GAEjCpB,EAEHA,EAAI6G,SAASiR,KAAK,WAEjBpT,MACEqT,MAAM,SAAUhoC,GAElB40B,EAAO50B,MAIRC,QAAQ+0B,KAAK,wCAAyC3D,GAEtDuD,EAAO,4CAOV3gB,EAAUzW,UAAU2nC,OAAS,SAAUxzB,EAAMyzB,EAAK/T,GACjD,IAAImvB,EAAUpiD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAEjB,iBAATjjB,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGnB6uC,EAAQ5xB,WAAW0W,QAAQ3zB,EAAMyzB,EAAK/T,GAAO0W,KAAK,SAAU5rB,GAIvDqkC,EAAQ1wB,UAAU,gBAErB0wB,EAAQ1kD,QAAQ85B,YAAYvzB,OAAOm+C,EAAQ5xB,WAAWiH,YAGvDlB,EAAQxY,EAAK,GAAGsX,qBAOnBxf,EAAUzW,UAAUijD,eAAiB,SAAUpvB,EAAO1f,GACrD,IAAI+uC,EAAUtiD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI3E,EAAMywB,EAAQ9xB,WAAW6T,QAAQpR,GAEjB,iBAAT1f,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGfse,EAEHA,EAAIod,WAAW17B,GAAMo2B,KAAK,WAIrB2Y,EAAQ5wB,UAAU,gBAErB4wB,EAAQ5kD,QAAQ85B,YAAYvzB,OAAOq+C,EAAQ9xB,WAAWiH,YAGvDlB,EAAQ1E,EAAIwD,kBACVuU,MAAM,SAAUhoC,GAElB40B,EAAO50B,KAIRiwB,EAAMywB,EAAQ9xB,WAAW0W,QAAQ3zB,GAAMo2B,KAAK,SAAU5rB,GAIjDukC,EAAQ5wB,UAAU,gBAErB4wB,EAAQ5kD,QAAQ85B,YAAYvzB,OAAOq+C,EAAQ9xB,WAAWiH,YAGvDlB,EAAQxY,EAAK,GAAGsX,kBACduU,MAAM,SAAUhoC,GAElB40B,EAAO50B,QAQXiU,EAAUzW,UAAUmjD,UAAY,SAAUtvB,EAAO1f,GAChD,IAAIivC,EAAUxiD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI3E,EAAM2wB,EAAQhyB,WAAW6T,QAAQpR,GAEjB,iBAAT1f,IAEVA,EAAOvN,KAAKC,MAAMsN,IAGfse,EAEHA,EAAIod,WAAW17B,GAAMo2B,KAAK,WAEzBpT,EAAQ1E,EAAIwD,kBACVuU,MAAM,SAAUhoC,GAElB40B,EAAO50B,MAIRC,QAAQ+0B,KAAK,wCAAyC3D,GAEtDuD,EAAO,4CAOV3gB,EAAUzW,UAAUslC,YAAc,SAAUzR,EAAO3uB,EAAU8xB,GAC5D,IAAIqsB,EAAUziD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI3E,EAAM4wB,EAAQjyB,WAAW6T,QAAQpR,GAEjCpB,EAEH4wB,EAAQjyB,WAAWkU,YAAY7S,EAAKvtB,EAAU8xB,GAAWuT,KAAK,WAE7DpT,MACEqT,MAAM,SAAUhoC,GAElB40B,EAAO50B,MAIRC,QAAQ+0B,KAAK,wCAAyC3D,GAEtDuD,EAAO,4CAKV3gB,EAAUzW,UAAUq8B,QAAU,SAAUvrB,EAAME,EAAIolB,GAEjD,IAAIktB,EAAU1iD,KAAKwwB,WAAW6T,QAAQn0B,GAElCwyC,EAEHA,EAAQ1T,UAAU5+B,EAAIolB,GAGtB3zB,QAAQ+0B,KAAK,sCAAuC1mB,IAItD2F,EAAUzW,UAAU4rC,QAAU,SAAUhW,GAEvC,OAAOh1B,KAAKwwB,WAAW2E,cAAcH,IAKtCnf,EAAUzW,UAAUukC,eAAiB,SAAU1Q,EAAO+B,GAErD,IAAInD,EAAM7xB,KAAKwwB,WAAW6T,QAAQpR,GAElC,OAAIpB,EAEI7xB,KAAKwwB,WAAWmT,eAAe9R,EAAKmD,IAG3CnzB,QAAQ+0B,KAAK,0CAA2C3D,IAEjD,IAMTpd,EAAUzW,UAAUujD,gBAAkB,SAAU3/C,EAAU4/C,EAAgBpjB,EAAWj5B,GAEhFvG,KAAK0xB,UAAU,aAAa,IAE/B1xB,KAAKtC,QAAQo6C,UAAU+K,KAAK7/C,EAAU4/C,EAAgBpjB,EAAWj5B,IAOnEsP,EAAUzW,UAAU+yB,WAAa,SAAUQ,GAE1C3yB,KAAK21B,cAAcxD,WAAWQ,IAG/B9c,EAAUzW,UAAUw1B,WAAa,SAAUQ,GAE1C,OAAOp1B,KAAK21B,cAAcR,cAAcC,IAGzCvf,EAAUzW,UAAUw0C,UAAY,SAAU5hB,GAEzC,IAAID,EAAM/xB,KAAK21B,cAAcxB,WAAWnC,GAExC,OAAID,EAEIA,EAAIsD,gBAGXxzB,QAAQ+0B,KAAK,yCAA0C5E,IAEhD,IAITnc,EAAUzW,UAAU0jD,qBAAuB,WAE1C,OAAO9iD,KAAK21B,cAAcT,qBAG3Brf,EAAUzW,UAAU2jD,gBAAkB,WAErC,GAAI/iD,KAAK0xB,UAAU,eAAe,GAEjC,OAAO1xB,KAAKtC,QAAQm4B,YAAYmtB,aAAahjD,KAAK21B,cAAcf,eAIlE/e,EAAUzW,UAAU6jD,gBAAkB,SAAUhsC,GAE/C,QAAIjX,KAAK0xB,UAAU,eAAe,KAEjC1xB,KAAK21B,cAAcxD,WAAWnyB,KAAKtC,QAAQm4B,YAAYqtB,gBAAgBljD,KAAK6H,QAAQiP,QAASG,KAEtF,IAMTpB,EAAUzW,UAAU+jD,WAAa,SAAUnxB,GAE1C,IAAIc,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAYH,OAFAjxB,QAAQ+0B,KAAK,gDAAiD5E,IAEvD,EAVPc,EAAOyF,OAEHv4B,KAAK6H,QAAQ4qB,kBAAoBzyB,KAAK0xB,UAAU,oBAAoB,IAEvE1xB,KAAKtC,QAAQ+0B,iBAAiByF,UAUjCriB,EAAUzW,UAAUgkD,WAAa,SAAUpxB,GAE1C,IAAIc,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAYH,OAFAjxB,QAAQ+0B,KAAK,gDAAiD5E,IAEvD,EAVPc,EAAO/mB,OAEH/L,KAAK6H,QAAQ4qB,kBAAoBzyB,KAAK0xB,UAAU,oBAAoB,IAEvE1xB,KAAKtC,QAAQ+0B,iBAAiByF,UAUjCriB,EAAUzW,UAAUikD,aAAe,SAAUrxB,GAE5C,IAAIc,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAaH,OAFAjxB,QAAQ+0B,KAAK,6DAA8D5E,IAEpE,EAXHc,EAAO6B,QAEV7B,EAAO/mB,OAGP+mB,EAAOyF,QAUV1iB,EAAUzW,UAAUm4B,UAAY,SAAU5E,EAAYC,EAAQZ,GAE7D,IAAIc,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3ChyB,KAAK21B,cAAc4B,UAAU5E,EAAYC,EAAQE,IAGlDjd,EAAUzW,UAAUkkD,aAAe,SAAUtxB,GAE5C,IAAIc,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAOH,OAFAjxB,QAAQ+0B,KAAK,kDAAmD5E,IAEzD,EALPc,EAAO4F,UAWT7iB,EAAUzW,UAAU+2B,eAAiB,SAAUnE,EAAO1tB,EAAU8xB,GAC/D,IAAImtB,EAAUvjD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IAAI1D,EAASywB,EAAQ5tB,cAAcxB,WAAWnC,GAE1Cc,EAEHywB,EAAQ5tB,cAAcQ,eAAerD,EAAQxuB,EAAU8xB,GAAWuT,KAAK,WAEtEpT,MACEqT,MAAM,SAAUhoC,GAElB40B,EAAO50B,MAIRC,QAAQ+0B,KAAK,2CAA4C5E,GAEzDwE,EAAO,+CAOV3gB,EAAUzW,UAAUkgD,UAAY,SAAUtF,GAEzCh6C,KAAKtC,QAAQ++B,SAAS6iB,UAAUtF,IAGjCnkC,EAAUzW,UAAUokD,UAAY,WAE/B,OAAOxjD,KAAKtC,QAAQ++B,SAAS+mB,aAG9B3tC,EAAUzW,UAAUqkD,QAAU,SAAUzJ,GAEvC,OAAOh6C,KAAKtC,QAAQ++B,SAASgnB,QAAQzJ,IAQtCnkC,EAAUzW,UAAUszB,OAAS,SAAUppB,GAEtCtJ,KAAK21B,cAAcjD,OAAOppB,GAE1BtJ,KAAKwwB,WAAWkC,OAAOppB,IAGxBuM,EAAUzW,UAAU2yC,UAAY,SAAUttC,GAEzCzE,KAAK6H,QAAQpD,OAASwtB,MAAMxtB,GAAUA,EAASA,EAAS,KAExDzE,KAAK+C,QAAQsB,MAAMI,OAASzE,KAAK6H,QAAQpD,OAEzCzE,KAAKwwB,WAAWkC,UAQjB7c,EAAUzW,UAAUogD,QAAU,SAAUkE,EAAUnpC,GAE7Cva,KAAK0xB,UAAU,QAAQ,KAE1B1xB,KAAKtC,QAAQ4gC,KAAKkhB,QAAQkE,EAAUnpC,GAEpCva,KAAKwwB,WAAWwZ,kBAIlBn0B,EAAUzW,UAAUukD,WAAa,WAEhC,GAAI3jD,KAAK0xB,UAAU,QAAQ,GAE1B,OAAO1xB,KAAKtC,QAAQ4gC,KAAK8K,WAI3BvzB,EAAUzW,UAAUwkD,UAAY,WAE3B5jD,KAAK0xB,UAAU,QAAQ,KAE1B1xB,KAAKtC,QAAQ4gC,KAAK52B,QAElB1H,KAAKwwB,WAAWwZ,kBASlBn0B,EAAUzW,UAAUqgD,UAAY,SAAUztB,EAAOtpB,EAAMjK,GAElDuB,KAAK0xB,UAAU,UAAU,KAE5B1xB,KAAKtC,QAAQsR,OAAOywC,UAAUztB,EAAOtpB,EAAMjK,GAE3CuB,KAAKwwB,WAAWqZ,kBAMlBh0B,EAAUzW,UAAUykD,UAAY,SAAU7xB,EAAOtpB,EAAMjK,GAElDuB,KAAK0xB,UAAU,UAAU,KAE5B1xB,KAAKtC,QAAQsR,OAAO60C,UAAU7xB,EAAOtpB,EAAMjK,GAE3CuB,KAAKwwB,WAAWqZ,kBAMlBh0B,EAAUzW,UAAUoqC,WAAa,SAAUsa,GAE1C,GAAI9jD,KAAK0xB,UAAU,UAAU,GAE5B,OAAO1xB,KAAKtC,QAAQsR,OAAOw6B,WAAWsa,IAIxCjuC,EAAUzW,UAAU65B,qBAAuB,SAAUjH,GAEpD,GAAIhyB,KAAK0xB,UAAU,UAAU,GAAO,CAEnC,IAAIoB,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAOH,OAFAjxB,QAAQ+0B,KAAK,wDAAyD5E,IAE/D,EALPhyB,KAAKtC,QAAQsR,OAAOiqB,qBAAqBnG,KAU5Cjd,EAAUzW,UAAU+5B,qBAAuB,SAAUnH,EAAOvzB,GAE3D,GAAIuB,KAAK0xB,UAAU,UAAU,GAAO,CAEnC,IAAIoB,EAAS9yB,KAAK21B,cAAcxB,WAAWnC,GAE3C,IAAIc,EAOH,OAFAjxB,QAAQ+0B,KAAK,kDAAmD5E,IAEzD,EALPhyB,KAAKtC,QAAQsR,OAAOmqB,qBAAqBrG,EAAQr0B,KAUpDoX,EAAUzW,UAAU2kD,iBAAmB,WAEtC,GAAI/jD,KAAK0xB,UAAU,UAAU,GAE5B,OAAO1xB,KAAKtC,QAAQsR,OAAO+0C,oBAM7BluC,EAAUzW,UAAU4kD,aAAe,SAAUhyB,EAAOtpB,EAAMjK,GAErDuB,KAAK0xB,UAAU,UAAU,KAE5B1xB,KAAKtC,QAAQsR,OAAOg1C,aAAahyB,EAAOtpB,EAAMjK,GAE9CuB,KAAKwwB,WAAWqZ,kBAMlBh0B,EAAUzW,UAAU6kD,YAAc,SAAUH,GAEvC9jD,KAAK0xB,UAAU,UAAU,KAE5B1xB,KAAKtC,QAAQsR,OAAOi1C,YAAYH,GAEhC9jD,KAAKwwB,WAAWqZ,kBAMlBh0B,EAAUzW,UAAU8kD,kBAAoB,WAEnClkD,KAAK0xB,UAAU,UAAU,KAE5B1xB,KAAKtC,QAAQsR,OAAOk1C,oBAEpBlkD,KAAKwwB,WAAWqZ,kBAMlBh0B,EAAUzW,UAAU0mC,UAAY,SAAU/nB,GAErC/d,KAAK0xB,UAAU,aAAa,IAE/B1xB,KAAKtC,QAAQooC,UAAUqJ,WAAWpxB,IAIpClI,EAAUzW,UAAU+kD,YAAc,SAAUpmC,GAEvC/d,KAAK0xB,UAAU,aAAa,IAE/B1xB,KAAKtC,QAAQooC,UAAU0E,aAAazsB,IAItClI,EAAUzW,UAAUglD,gBAAkB,SAAUvyB,GAE3C7xB,KAAK0xB,UAAU,aAAa,IAE/B1xB,KAAKtC,QAAQooC,UAAUwJ,UAAUzd,IAInChc,EAAUzW,UAAUilD,gBAAkB,WAErC,GAAIrkD,KAAK0xB,UAAU,aAAa,GAE/B,OAAO1xB,KAAKtC,QAAQooC,UAAUue,mBAIhCxuC,EAAUzW,UAAUklD,gBAAkB,WAErC,GAAItkD,KAAK0xB,UAAU,aAAa,GAE/B,OAAO1xB,KAAKtC,QAAQooC,UAAUwe,mBAOhCzuC,EAAUzW,UAAUmlD,WAAa,SAAU7nC,GAE1C,IAAI1c,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,QAK7C,OAAO,EAHP1xB,KAAKtC,QAAQgqC,KAAK6c,WAAW7nC,IAO/B7G,EAAUzW,UAAU0qC,QAAU,SAAUpC,GAEvC,OAAI1nC,KAAK6H,QAAQ09B,YAAcvlC,KAAK0xB,UAAU,QAEtC1xB,KAAKtC,QAAQgqC,KAAKoC,QAAQpC,GAG1B,IAAIpR,QAAQ,SAAUC,EAASC,GACrCA,OAKH3gB,EAAUzW,UAAU0vC,aAAe,SAAUjd,GAC5C,IAAI2yB,EAAUxkD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAEjCguB,EAAQ38C,QAAQ09B,YAAcif,EAAQ9yB,UAAU,UAEnDG,EAAM2yB,EAAQh0B,WAAW6T,QAAQxS,IAIhC2yB,EAAQ9mD,QAAQgqC,KAAKoH,aAAajd,GAAK8X,KAAK,WAE3CpT,MACEqT,MAAM,WAERpT,MAQFA,OAKH3gB,EAAUzW,UAAUqlD,YAAc,SAAUvgD,GAE3C,IAAIlE,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,QAO7C,OAAO,EALP1xB,KAAKtC,QAAQgqC,KAAK+c,YAAYvgD,GAE9BlE,KAAKtC,QAAQgqC,KAAKoC,QAAQ,GAAGH,KAAK,cAAgBC,MAAM,eAO1D/zB,EAAUzW,UAAUuoC,YAAc,WAEjC,GAAI3nC,KAAK6H,QAAQ09B,YAAcvlC,KAAK0xB,UAAU,QAAQ,GAErD,OAAO1xB,KAAKtC,QAAQgqC,KAAKC,eAI3B9xB,EAAUzW,UAAUslD,aAAe,WAElC,IAAI1kD,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,QAK7C,OAAO,EAHP1xB,KAAKtC,QAAQgqC,KAAKgd,gBAOpB7uC,EAAUzW,UAAUglC,SAAW,WAE9B,IAAIpkC,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,QAK7C,OAAO,EAHP1xB,KAAKtC,QAAQgqC,KAAKtD,YAOpBvuB,EAAUzW,UAAUulD,QAAU,WAE7B,SAAI3kD,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,UAEtC1xB,KAAKtC,QAAQgqC,KAAKid,WAO3B9uC,EAAUzW,UAAUwlD,WAAa,WAEhC,SAAI5kD,KAAK6H,QAAQ09B,aAAcvlC,KAAK0xB,UAAU,UAEtC1xB,KAAKtC,QAAQgqC,KAAKkd,cAU3B/uC,EAAUzW,UAAUylD,WAAa,SAAUC,GAE1C,IAAI9kD,KAAK0xB,UAAU,aAAa,GAS/B,OAAO,EAPP1xB,KAAK6H,QAAQi8B,QAAUghB,EAEvB9kD,KAAKtC,QAAQqmC,UAAU9S,aAEvBjxB,KAAKwwB,WAAW0V,kBAAkB,YAOpCrwB,EAAUzW,UAAU2lD,kBAAoB,SAAUr6B,GAEjD,IAAI1qB,KAAK0xB,UAAU,aAAa,GAe/B,OAAO,EAbP1xB,KAAK6H,QAAQ6zC,eAAiBhxB,EAE9B1qB,KAAKtC,QAAQqmC,UAAU9S,aAEnBjxB,KAAK6H,QAAQi8B,QAEhB9jC,KAAKwwB,WAAW0V,kBAAkB,SAGlCrkC,QAAQ+0B,KAAK,iEAQhB/gB,EAAUzW,UAAU4lD,eAAiB,SAAUt6B,GAE9C,IAAI1qB,KAAK0xB,UAAU,aAAa,GAe/B,OAAO,EAbP1xB,KAAK6H,QAAQ+zC,YAAclxB,EAE3B1qB,KAAKtC,QAAQqmC,UAAU9S,aAEnBjxB,KAAK6H,QAAQi8B,QAEhB9jC,KAAKwwB,WAAW0V,kBAAkB,SAGlCrkC,QAAQ+0B,KAAK,iEAQhB/gB,EAAUzW,UAAU6lD,UAAY,SAAUv6B,GAEzC,QAAI1qB,KAAK0xB,UAAU,aAAa,IAExB1xB,KAAKtC,QAAQqmC,UAAUkhB,WAAU,IAS1CpvC,EAAUzW,UAAU8lD,eAAiB,WAEpC,GAAIllD,KAAK0xB,UAAU,aAAa,GAE/B,OAAO1xB,KAAK6H,QAAQi8B,QAAU9jC,KAAKtC,QAAQqmC,UAAUmhB,iBAAmBllD,KAAK6mC,WAM/EhxB,EAAUzW,UAAU+lD,eAAiB,WAEpC,QAAInlD,KAAK0xB,UAAU,eAAe,IAE1B1xB,KAAKtC,QAAQ85B,YAAY4tB,cAUlCvvC,EAAUzW,UAAUimD,aAAe,WAElC,IAAI/+C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,eAIjBh/C,EAAK2tC,MAAMoC,QAOrBxgC,EAAUzW,UAAUmmD,aAAe,WAElC,IAAIj/C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,eAIjBh/C,EAAK2tC,MAAMkC,QAOrBtgC,EAAUzW,UAAUomD,aAAe,WAElC,IAAIl/C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,gBAIxBljD,EAAE2yC,iBAEKzuC,EAAK2tC,MAAM3iB,SAOrBzb,EAAUzW,UAAUqmD,cAAgB,WAEnC,IAAIn/C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,gBAIxBljD,EAAE2yC,iBAEKzuC,EAAK2tC,MAAMmC,UAOrBvgC,EAAUzW,UAAUsmD,WAAa,WAEhC,IAAIp/C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,gBAIxBljD,EAAE2yC,iBAEKzuC,EAAK2tC,MAAMqC,OAOrBzgC,EAAUzW,UAAUumD,aAAe,WAElC,IAAIr/C,GAAO,EAEX,SAAItG,KAAK0xB,UAAU,QAAQ,MAE1BprB,EAAOtG,KAAKtC,QAAQ8gC,KAAK8mB,gBAIxBljD,EAAE2yC,iBAEKzuC,EAAK2tC,MAAMsC,SASrB1gC,EAAUzW,UAAUwmD,KAAO,WAE1B,SAAI5lD,KAAK6H,QAAQg+B,UAAW7lC,KAAK0xB,UAAU,WAAW,KAE9C1xB,KAAKtC,QAAQmoC,QAAQ+f,QAO9B/vC,EAAUzW,UAAUymD,KAAO,WAE1B,SAAI7lD,KAAK6H,QAAQg+B,UAAW7lC,KAAK0xB,UAAU,WAAW,KAE9C1xB,KAAKtC,QAAQmoC,QAAQggB,QAO9BhwC,EAAUzW,UAAU0mD,mBAAqB,WAExC,SAAI9lD,KAAK6H,QAAQg+B,UAAW7lC,KAAK0xB,UAAU,WAAW,KAE9C1xB,KAAKtC,QAAQmoC,QAAQigB,sBAO9BjwC,EAAUzW,UAAU2mD,mBAAqB,WAExC,SAAI/lD,KAAK6H,QAAQg+B,UAAW7lC,KAAK0xB,UAAU,WAAW,KAE9C1xB,KAAKtC,QAAQmoC,QAAQkgB,sBAU9BlwC,EAAUzW,UAAUqb,SAAW,SAAU/R,EAAMs9C,EAAUn+C,GAEpD7H,KAAK0xB,UAAU,YAAY,IAE9B1xB,KAAKtC,QAAQ+c,SAASA,SAAS/R,EAAMs9C,EAAUn+C,IAIjDgO,EAAUzW,UAAU6mD,cAAgB,SAAUv9C,EAAMs9C,EAAUn+C,GAEzD7H,KAAK0xB,UAAU,YAAY,IAE9B1xB,KAAKtC,QAAQ+c,SAASA,SAAS/R,EAAMs9C,EAAUn+C,GAAS,IAO1DgO,EAAUzW,UAAU8mD,WAAa,SAAU5vC,EAAO/Y,EAAQsb,EAAQtF,GAEjEvT,KAAKtC,QAAQ05C,MAAM+O,QAAQ7vC,EAAO/Y,EAAQsb,EAAQtF,IAQnDsC,EAAUzW,UAAUgnD,eAAiB,GAIrCvwC,EAAUzW,UAAUinD,aAAe,SAAUtoD,EAAMoB,EAAUurB,GAE5D,GAAI7U,EAAUzW,UAAUgnD,eAAeroD,GAAO,CAE7C,IAAI+B,EAAS+V,EAAUzW,UAAUgnD,eAAeroD,GAAMqB,UAAUD,GAEhE,GAAIW,EAEH,GAAuE,gBAAhD,IAAX4qB,EAAyB,YAAcra,EAAQqa,IAE1D,IAAK,IAAI3rB,KAAO2rB,EAEf5qB,EAAOf,GAAO2rB,EAAO3rB,QAItB8C,QAAQ+0B,KAAK,gEAId/0B,QAAQ+0B,KAAK,0CAA2Cz3B,QAIzD0C,QAAQ+0B,KAAK,wCAAyC74B,IAMxD8X,EAAUzW,UAAUknD,eAAiB,SAAUvoD,EAAMR,GAIpDsY,EAAUzW,UAAUgnD,eAAeroD,GAAQR,GAK5CsY,EAAUzW,UAAUu/C,YAAc,WAIjC,IAAK,IAAI5gD,KAFTiC,KAAKtC,QAAU,GAEEmY,EAAUzW,UAAUgnD,eAEpCpmD,KAAKtC,QAAQK,GAAQ,IAAI8X,EAAUzW,UAAUgnD,eAAeroD,GAAMiC,OAMpE6V,EAAUzW,UAAUsyB,UAAY,SAAU60B,EAAQ1oC,GAEjD,QAAI7d,KAAKtC,QAAQ6oD,KAKZ1oC,GAEHhc,QAAQC,MAAM,mCAAqCykD,IAG7C,IAIT1wC,EAAUzW,UAAU24B,QAAU,CAE7BC,UAAW,SAAmBlH,GAE7B,QAASA,EAAGjsB,aAAe,GAAKisB,EAAGyP,cAAgB,IAGpD2E,SAAU,SAAkBpU,GAE3B,IAAI01B,EAAM11B,EAAG21B,wBAEb,MAAO,CAENliD,IAAKiiD,EAAIjiD,IAAM3B,OAAO8jD,YAAc7jD,SAAS8jD,gBAAgBC,UAE7Dt1B,KAAMk1B,EAAIl1B,KAAO1uB,OAAOikD,YAAchkD,SAAS8jD,gBAAgBG,aAKjEC,UAAW,SAAmB3lD,GAE7B,IAAI2E,EAAQjF,MAAMC,QAAQK,GAAO,GAAK,GAEtC,IAAK,IAAI5D,KAAK4D,EAEC,MAAVA,EAAI5D,IAAkC,WAApB6S,EAAQjP,EAAI5D,IAE7B4D,EAAI5D,aAAcsN,KAErB/E,EAAMvI,GAAK,IAAIsN,KAAK1J,EAAI5D,IAGxBuI,EAAMvI,GAAKwC,KAAK+mD,UAAU3lD,EAAI5D,IAI/BuI,EAAMvI,GAAK4D,EAAI5D,GAIjB,OAAOuI,IAKT8P,EAAUzW,UAAUg4C,MAAQ,CAE3B4P,OAAQ,GAER3P,SAAU,SAAkB/gC,GAE3BT,EAAUzW,UAAUg4C,MAAM4P,OAAOnmD,KAAKyV,IAGvCspC,WAAY,SAAoBtpC,GAE/B,IAAI2c,EAAQpd,EAAUzW,UAAUg4C,MAAM4P,OAAO1mD,QAAQgW,GAEjD2c,GAAS,GAEZpd,EAAUzW,UAAUg4C,MAAM4P,OAAOnyC,OAAOoe,EAAO,IAIjDg0B,YAAa,SAAqBC,GAEjC,IACIC,EACAj1B,EAFAk1B,EAAU,GAId,GAAqB,iBAAVF,GAIV,IAFAC,EAAUtkD,SAASe,iBAAiBsjD,IAExBrnD,OAEX,IAAK,IAAIrC,EAAI,EAAGA,EAAI2pD,EAAQtnD,OAAQrC,KAEnC00B,EAAQrc,EAAUzW,UAAUg4C,MAAMiQ,aAAaF,EAAQ3pD,MAItD4pD,EAAQvmD,KAAKqxB,OAIiB,oBAAhBqC,aAA+B2yB,aAAiB3yB,aAAe2yB,aAAiBrxC,GAEjGqc,EAAQrc,EAAUzW,UAAUg4C,MAAMiQ,aAAaH,KAI9CE,EAAQvmD,KAAKqxB,GAEJpxB,MAAMC,QAAQmmD,GAExBA,EAAM3hD,QAAQ,SAAU+hC,GAEvB8f,EAAUA,EAAQ51C,OAAOqE,EAAUzW,UAAUg4C,MAAM6P,YAAY3f,MAIhEzlC,QAAQ+0B,KAAK,4CAA6CswB,GAG3D,OAAOE,GAGRC,aAAc,SAAsBtkD,GAEnC,OAAO8S,EAAUzW,UAAUg4C,MAAM4P,OAAO92B,KAAK,SAAU5Z,GAEtD,OAAOvT,aAAmB8S,EAAYS,IAAUvT,EAAUuT,EAAMvT,UAAYA,MAM/E,IAAIukD,EAAS,SAAgBhxC,GAE5BtW,KAAKsW,MAAQA,EAEbtW,KAAKrB,KAAO,MAMb2oD,EAAOloD,UAAU6xB,WAAa,SAAUha,GAEnCjX,KAAKunD,MAAMtwC,GAEdjX,KAAKrB,KAAOsY,GAGZpV,QAAQ+0B,KAAK,8DAAgE3f,GAE7EjX,KAAKrB,KAAO,WAGbqB,KAAKsW,MAAMvT,QAAQ64B,aAAa,mBAAoB57B,KAAKrB,OAG1D2oD,EAAOloD,UAAUs4B,QAAU,WAE1B,OAAO13B,KAAKrB,MAMb2oD,EAAOloD,UAAU6X,OAAS,WAEzBjX,KAAKunD,MAAMvnD,KAAKrB,MAAMhB,KAAKqC,KAAMA,KAAKsW,MAAMqf,cAAclF,iBAM3D62B,EAAOloD,UAAUmoD,MAAQ,CAKxBC,QAAW,SAAiB1wC,GAE3BA,EAAQvR,QAAQ,SAAUutB,GAEzBA,EAAO6E,sBAGJ33B,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiByF,UAOtCuvB,YAAe,SAAqB3wC,GAEnCA,EAAQvR,QAAQ,SAAUutB,GAEzBA,EAAO6E,sBAGJ33B,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiByF,UAOtCwvB,WAAc,SAAoB5wC,GAEjC,IAcI6wC,EAYAC,EAxBA5wB,EAFOh3B,KAEWsW,MAAMvT,QAAQ+B,YAGhCmyB,EAAa,EAGb4wB,EAAY,EAGZC,EAAgB,EAMhBC,EAAc,GAGdC,EAAqB,GAGrBC,EAAkB,EAMlBC,EAAU,EAGd,SAASC,EAAU3jD,GAkBlB,MAdoB,iBAATA,EAENA,EAAMlE,QAAQ,MAAQ,EAEd02B,EAAa,IAAM1iB,SAAS9P,GAG5B8P,SAAS9P,GAIVA,EASb,SAAS4jD,EAAatxC,EAASuxC,EAAWhxB,EAAUixB,GAEnD,IAAIC,EAAe,GACfC,EAAgB,EAChBC,EAAiB,EACjBC,EAAe,EACfC,EAAM,EACNC,EAAc,EACdC,EAAgB,GAEpB,SAASC,EAAS/2B,GAEjB,OAAOsF,GAAYtF,EAAIe,OAAOH,WAAWo2B,WAAa,GAGvD,SAASC,EAAWj3B,GAEnB,OAAOo2B,EAAUp2B,EAAIvtB,OAAS6yB,GAAYtF,EAAIe,OAAOH,WAAWs2B,aAAe,GA4ChF,OAzCAnyC,EAAQvR,QAAQ,SAAUwsB,EAAKv0B,GAE9B,IAAIgH,EAAQ8jD,EAAaU,EAAWj3B,GAAO+2B,EAAS/2B,GAEhDA,EAAIe,OAAOsE,UAAY5yB,EAE1B+jD,EAAa1nD,KAAKkxB,IAGlB82B,EAAchoD,KAAKkxB,GAEnB62B,GAAeN,EAAav2B,EAAIe,OAAOH,WAAWs2B,aAAe,EAAIl3B,EAAIe,OAAOH,WAAWo2B,WAAa,KAItGR,EAAa1oD,QAEhB0oD,EAAahjD,QAAQ,SAAUwsB,GAE9By2B,GAAiBF,EAAav2B,EAAIvtB,MAAQutB,EAAIe,OAAOsE,SAAWrF,EAAIe,OAAOsE,SAE3ErF,EAAIvtB,MAAQutB,EAAIe,OAAOsE,WAOxBuxB,GAJAF,EAAiBJ,EAAYG,IAE7BE,EAAeE,EAAczyC,KAAKC,MAAMqyC,EAAiBG,GAAeH,GAElCG,EAEtCD,GAAOP,EAAaS,EAAeJ,EAAgBC,EAAcJ,KAGjEK,EAAMC,EAAcP,EAAYlyC,KAAKC,MAAMiyC,EAAYO,GAAeA,EAAcP,EAEpFQ,EAActjD,QAAQ,SAAUutB,GAE/BA,EAAOtuB,MAAQ8jD,EAAaU,EAAWl2B,GAAUg2B,EAASh2B,MAIrD61B,EAGJ3oD,KAAKsW,MAAMzO,QAAQ4qB,kBAAoBzyB,KAAKsW,MAAMob,UAAU,oBAAoB,IAEnF1xB,KAAKsW,MAAM5Y,QAAQ+0B,iBAAiByF,SAMjCl4B,KAAKsW,MAAMka,WAAWztB,QAAQm0B,aAAel3B,KAAKsW,MAAMka,WAAWztB,QAAQo0B,eAE9EH,GAAch3B,KAAKsW,MAAMka,WAAWztB,QAAQ8B,YAAc7E,KAAKsW,MAAMka,WAAWztB,QAAQ+B,aAGzFgS,EAAQvR,QAAQ,SAAUutB,GAEzB,IAAItuB,EAAO4yB,EAAUC,EAEjBvE,EAAO6B,UAEVnwB,EAAQsuB,EAAOH,WAAWnuB,MAE1B4yB,EAAW9iB,SAASwe,EAAOsE,UAEvB5yB,GAEH6yB,EAAW8wB,EAAU3jD,GAErByyB,GAAcI,EAAWD,EAAWC,EAAWD,EAE3CtE,EAAOH,WAAWs2B,cAErBjB,EAAmBnnD,KAAK,CAEvBiyB,OAAQA,EAERtuB,MAAO6yB,EAAWD,EAAWC,EAAWD,IAIzC6wB,GAAmBn1B,EAAOH,WAAWs2B,eAItClB,EAAYlnD,KAAK,CAEhBiyB,OAAQA,EAERtuB,MAAO,IAIRsjD,GAAiBh1B,EAAOH,WAAWo2B,WAAa,MAQnDlB,EAAY7wB,EAAaC,EAKzB0wB,EAAexxC,KAAKC,MAAMyxC,EAAYC,GAKlCI,EAAUE,EAAaL,EAAaF,EAAWF,GAAc,GAK7DI,EAAYloD,QAAUqoD,EAAU,IAEnCH,EAAYA,EAAYloD,OAAS,GAAG2E,QAAU0jD,GAM/CH,EAAYxiD,QAAQ,SAAUwsB,GAE7B81B,GAAa91B,EAAIvtB,SAGlBojD,EAAgBzxC,KAAKgvB,IAAI+iB,GAAWL,GAKhB,GAAKI,IAExBC,EAAUE,EAAaJ,EAAoBJ,EAAezxC,KAAKC,MAAMwxC,EAAgBK,IAAkB,IAMpGD,EAAmBnoD,SAEtBmoD,EAAmBA,EAAmBnoD,OAAS,GAAG2E,OAAS0jD,GAG5DH,EAAYxiD,QAAQ,SAAUwsB,GAE7BA,EAAIe,OAAOsO,SAASrP,EAAIvtB,SAGzBwjD,EAAmBziD,QAAQ,SAAUwsB,GAEpCA,EAAIe,OAAOsO,SAASrP,EAAIvtB,WAM3BqR,EAAUzW,UAAUknD,eAAe,SAAUgB,GAE7C,IAAI4B,EAAW,SAAkB5yC,GAEhCtW,KAAKsW,MAAQA,EAEbtW,KAAKg6C,OAAS,UAEdh6C,KAAKsc,MAAO,EAEZtc,KAAKmpD,SAAW,IAKjBD,EAAS9pD,UAAUggD,2BAA6B,SAAU7hC,GAEzDvd,KAAKi6C,MAAM/4C,QAAQkoD,cAAcloD,QAAUqc,GAK5C2rC,EAAS9pD,UAAUg+B,iCAAmC,SAAUtK,EAAQvV,GAEvEvd,KAAKi6C,MAAM/4C,QAAQkoD,cAActyC,QAAQgc,GAAUvV,EAE/Cvd,KAAKsc,OAAStc,KAAKsc,KAAK8sC,cAActyC,QAAQgc,KAEjD9yB,KAAKsc,KAAK8sC,cAActyC,QAAQgc,GAAUvV,IAM5C2rC,EAAS9pD,UAAUigD,YAAc,SAAUrF,EAAQ19B,GAE9Ctc,KAAKi6C,MAAMD,GAEdh6C,KAAKqpD,aAAarpD,KAAKi6C,MAAMD,GAAS19B,GAGtCtc,KAAKi6C,MAAMD,GAAU19B,GAIvB4sC,EAAS9pD,UAAUiqD,aAAe,SAAU/sC,EAAMoO,GAEjD,IAAK,IAAI3rB,KAAO2rB,EAEXpO,EAAKvd,IAA8B,UAAtBsR,EAAQiM,EAAKvd,IAE7BiB,KAAKqpD,aAAa/sC,EAAKvd,GAAM2rB,EAAO3rB,IAGpCud,EAAKvd,GAAO2rB,EAAO3rB,IAOtBmqD,EAAS9pD,UAAUkgD,UAAY,SAAUgK,GAoCxC,IAPsB,KAzBtBA,EAAgBA,GAAiB,YAyBHtJ,UAAUuJ,WAIvCD,EAAgBtJ,UAAUuJ,SAASC,eAGhCF,IAlCOtpD,KAsCAi6C,MAAMqP,GAAgB,CAE/B,IAAIG,EAASH,EAAcv5C,MAAM,KAAK,GAxC7B/P,KA0CAi6C,MAAMwP,IAEd5nD,QAAQ+0B,KAAK,8EAA+E0yB,EAAeG,GAE3GH,EAAgBG,IAGhB5nD,QAAQ+0B,KAAK,kEAAmE0yB,GAEhFA,EAAgB,WAnDRtpD,KAwDNg6C,OAASsP,EAxDHtpD,KA4DNsc,KAAOzG,EAAUzW,UAAU24B,QAAQgvB,UA5D7B/mD,KA4D4Ci6C,MAAM/4C,SAAW,IAEnD,WAAjBooD,GAxDJ,SAASI,EAAaC,EAAOxiC,GAE5B,IAAK,IAAI5O,KAAQoxC,EAEY,UAAxBt5C,EAAQs5C,EAAMpxC,KAEZ4O,EAAK5O,KAET4O,EAAK5O,GAAQ,IAGdmxC,EAAaC,EAAMpxC,GAAO4O,EAAK5O,KAG/B4O,EAAK5O,GAAQoxC,EAAMpxC,GA4CrBmxC,CAhEU1pD,KAgEQi6C,MAAMqP,GAhEdtpD,KAgEmCsc,MAhEnCtc,KAmENsW,MAAMzO,QAAQu2C,UAAUzgD,KAnElBqC,KAmE4BsW,MAnE5BtW,KAmEwCg6C,OAnExCh6C,KAmEqDsc,MAnErDtc,KAqEN4pD,oBAKNV,EAAS9pD,UAAUokD,UAAY,SAAUxJ,GAExC,OAAO5nB,KAAK4nB,QAKbkP,EAAS9pD,UAAUqkD,QAAU,SAAUzJ,GAEtC,OAAOA,EAASh6C,KAAKi6C,MAAMD,GAAUh6C,KAAKsc,MAK3C4sC,EAAS9pD,UAAUyqD,QAAU,SAAU1iC,EAAM1oB,GAE5C,IACIqrD,GADA3iC,EAAO1oB,EAAQ0oB,EAAO,IAAM1oB,EAAQ0oB,GACnBpX,MAAM,KAU3B,OATW/P,KAAK+pD,gBAAgBD,EAAW9pD,KAAKg6C,SASjC,IAKhBkP,EAAS9pD,UAAU2qD,gBAAkB,SAAU5iC,EAAM6yB,GAEpD,IAEIgQ,EAFOhqD,KAEKsc,KAoBhB,OAlBA6K,EAAK5hB,QAAQ,SAAU0kD,GAEtB,IAAIC,EAEAF,IAEHE,EAAWF,EAAKC,GAIfD,OAFsB,IAAZE,GAEHA,KAQHF,GAKRd,EAAS9pD,UAAUJ,KAAO,SAAUmoB,EAAMre,GAEpC9I,KAAKmpD,SAAShiC,KAElBnnB,KAAKmpD,SAAShiC,GAAQ,IAGvBnnB,KAAKmpD,SAAShiC,GAAMtmB,KAAKiI,GAEzBA,EAAS9I,KAAK6pD,QAAQ1iC,GAAOnnB,KAAKsc,OAKnC4sC,EAAS9pD,UAAUwqD,iBAAmB,WAErC,IAAIx3B,EAAOpyB,KAEPmqD,EAAQ,SAAehjC,GAE1BiL,EAAK+2B,SAAShiC,GAAM5hB,QAAQ,SAAU6kD,GAErCA,EAAQh4B,EAAKy3B,QAAQ1iC,GAAOiL,EAAK9V,SAInC,IAAK,IAAI6K,KAAQiL,EAAK+2B,SACrBgB,EAAMhjC,IAMR+hC,EAAS9pD,UAAU66C,MAAQ,CAE1B/4C,QAAW,CAEV4jD,OAAU,CAETxd,KAAQ,OAER+iB,MAAS,SAIVvzC,QAAW,GAEXqtB,KAAQ,CAEPmmB,QAAW,UAEXxoD,MAAS,SAIVyjC,WAAc,CAEbglB,UAAa,YAEbC,MAAS,QAETC,YAAe,aAEfC,KAAQ,OAERC,WAAc,YAEdtU,KAAQ,OAERuU,WAAc,YAEdzU,KAAQ,OAER0U,WAAc,aAIfzB,cAAiB,CAEhBloD,QAAW,mBAEX4V,QAAW,MAQdjB,EAAUzW,UAAUknD,eAAe,WAAY4C,GAE/C,IAAI4B,EAAQ,SAAex0C,GAE1BtW,KAAKsW,MAAQA,GAGdw0C,EAAM1rD,UAAU2rD,eAAiB,SAAUC,GAE1C,IAAI54B,EAAOpyB,KACPirD,EAAc,GAalB,OAVap1C,EAAUzW,UAAUg4C,MAAM6P,YAAY+D,GAExCzlD,QAAQ,SAAU2lD,GAExB94B,EAAK9b,QAAU40C,GAElBD,EAAYpqD,KAAKqqD,KAIZD,GAGRH,EAAM1rD,UAAU+rD,KAAO,SAAUH,EAAWztD,EAAQsb,EAAQtF,GAE3D,IAAI6e,EAAOpyB,KACPirD,EAAcjrD,KAAK+qD,eAAeC,GAEtCC,EAAY1lD,QAAQ,SAAU6lD,GAE7BA,EAAWlF,WAAW9zB,EAAK9b,MAAMvT,QAASxF,EAAQsb,EAAQtF,MAGtD03C,EAAYprD,QAAUmrD,GAE1BnpD,QAAQ+0B,KAAK,6DAA8Do0B,IAI7EF,EAAM1rD,UAAU+mD,QAAU,SAAU7vC,EAAO/Y,EAAQsb,EAAQtF,GAE1D,GAAIvT,KAAKsW,MAAMob,UAAUn0B,GAExB,OAAOyC,KAAKsW,MAAM5Y,QAAQH,GAAQ8tD,cAAc/0C,EAAOuC,EAAQtF,GAG/D1R,QAAQ+0B,KAAK,4CAA6Cr5B,IAI5DsY,EAAUzW,UAAUknD,eAAe,QAASwE,GAE5C,IAAIQ,EAAW,SAAkBh1C,GAChCtW,KAAKsW,MAAQA,EACbtW,KAAKurD,aAAe,CAAC,GAAI,OAAQ,WAAY,cAI9CD,EAASlsD,UAAU69B,iBAAmB,SAAUnK,GAC/C,IAAIV,EAAOpyB,KACPkyB,GAAQ,EACR4uB,EAAS,GAEb9gD,KAAKurD,aAAahmD,QAAQ,SAAUmD,GACnC,IACIi2B,EADA5/B,EAAM,YAAc2J,EAAK8iD,OAAO,GAAG94C,cAAgBhK,EAAKrF,MAAM,IAG9DyvB,EAAOH,WAAW5zB,KACrB4/B,EAAWvM,EAAKq5B,eAAe34B,EAAOH,WAAW5zB,OAGhDmzB,GAAQ,EAER4uB,EAAO/hD,GAAO,CACb4/B,SAAUA,EACVe,OAAQ5M,EAAOH,WAAW5zB,EAAM,WAAa,OAM7CmzB,IACHY,EAAOp1B,QAAQihC,SAAWmiB,IAEzBwK,EAASlsD,UAAUqsD,eAAiB,SAAUhtD,GAChD,IAAIkgC,GAAW,EAGf,YAAyB,IAAVlgC,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACAuB,KAAK0rD,UAAUjtD,GAClBkgC,EAAW3+B,KAAK0rD,UAAUjtD,GAE1BoD,QAAQ+0B,KAAK,sDAAuDn4B,GAErE,MAED,IAAK,WACJkgC,EAAWlgC,EAIb,OAAOkgC,GAIR2sB,EAASlsD,UAAU6yC,aAAe,SAAU0Z,EAAQjjD,GACnD,IACI3J,EAAM,YAAc2J,EAAK8iD,OAAO,GAAG94C,cAAgBhK,EAAKrF,MAAM,IAG9DkQ,EAAOsC,EAAUzW,UAAU24B,QAAQgvB,UAAU4E,GAAU,IAqB3D,OAzBW3rD,KAMNsW,MAAMqf,cAAcb,SAAS,SAAUhC,GAC3C,IAAIr0B,EAAOkgC,EAAUe,EAAQoV,EAEzBhiB,EAAOp1B,QAAQihC,WAElBA,EAAW7L,EAAOp1B,QAAQihC,SAAS5/B,IAAQ+zB,EAAOp1B,QAAQihC,SAASA,WAAY,IAKjE,cAFblgC,EAAQq0B,EAAOkH,cAAczmB,MAG5BuhC,EAAYhiB,EAAOuC,eACnBqK,EAAoC,mBAApBf,EAASe,OAAwBf,EAASe,OAAOjhC,EAAO8U,EAAM7K,EAAMosC,GAAanW,EAASe,OAC1G5M,EAAOmH,cAAc1mB,EAAMorB,EAASA,SAASlgC,EAAO8U,EAAM7K,EAAMg3B,EAAQoV,OAMrEvhC,GAIR+3C,EAASlsD,UAAUssD,UAAY,GAE/B71C,EAAUzW,UAAUknD,eAAe,WAAYgF,GAC/C,IAAIM,EAAO,SAAct1C,GAExBtW,KAAKsW,MAAQA,EACbtW,KAAK8gD,QAAS,EACd9gD,KAAK6rD,IAAM,GACX7rD,KAAK8rD,cAAe,EACpB9rD,KAAK0/B,QAAS,EAEd1/B,KAAK+rD,cAAgB/rD,KAAKgsD,sBAC1BhsD,KAAKisD,WAAajsD,KAAKksD,mBACvBlsD,KAAKmsD,gBAAiB,EACtBnsD,KAAKosD,cAAe,EACpBpsD,KAAKqsD,eAAgB,EAErBrsD,KAAKkqC,iBAAkB,EACvBlqC,KAAKsqD,SAAU,EAEftqD,KAAKssD,aAAe,GAIrBV,EAAKxsD,UAAU6xB,WAAa,WAC3B,IAAIs7B,EAEJvsD,KAAK+rD,cAAcnnD,YAAY5E,KAAKisD,YAEhCjsD,KAAKsW,MAAMzO,QAAQyzC,oBAC6B,iBAAxCt7C,KAAKsW,MAAMzO,QAAQyzC,oBAC7BiR,EAAW1pD,SAASC,cAAc,aACzBm9B,UAAYjgC,KAAKsW,MAAMzO,QAAQyzC,kBAAkBkR,OAC1DxsD,KAAKmsD,eAAiBI,EAASxyC,QAAQ8W,YAEvC7wB,KAAKmsD,eAAiBnsD,KAAKsW,MAAMzO,QAAQyzC,mBAI3Ct7C,KAAKqsD,cAAgBrsD,KAAKsW,MAAMzO,QAAQuzC,iBAAmBp7C,KAAKysD,qBAEhEzsD,KAAK8rD,aAAe9rD,KAAKsW,MAAMzO,QAAQmzC,kBAAoBh7C,KAAK0sD,oBAE5D1sD,KAAKsW,MAAMzO,QAAQ0zC,kBAC2B,iBAAtCv7C,KAAKsW,MAAMzO,QAAQ0zC,kBAC7BgR,EAAW1pD,SAASC,cAAc,aACzBm9B,UAAYjgC,KAAKsW,MAAMzO,QAAQ0zC,gBAAgBiR,OACxDxsD,KAAKosD,aAAeG,EAASxyC,QAAQ8W,YAErC7wB,KAAKosD,aAAepsD,KAAKsW,MAAMzO,QAAQ0zC,iBAIrCv7C,KAAKsW,MAAMzO,QAAQozC,YACtBj7C,KAAKypC,UAAUzpC,KAAKsW,MAAMzO,QAAQozC,YAG/Bj7C,KAAKsW,MAAMzO,QAAQqzC,YACtBl7C,KAAKkhD,UAAUlhD,KAAKsW,MAAMzO,QAAQqzC,YAG/Bl7C,KAAKsW,MAAMzO,QAAQkzC,SACtB/6C,KAAKmhD,OAAOnhD,KAAKsW,MAAMzO,QAAQkzC,SAG5B/6C,KAAKsW,MAAMzO,QAAQq8B,sBAClBlkC,KAAKsW,MAAMzO,QAAQ09B,YACtBvlC,KAAKkqC,iBAAkB,EACvBroC,QAAQC,MAAM,6FAEV9B,KAAKsW,MAAMob,UAAU,SACxB1xB,KAAKkqC,gBAAkBlqC,KAAKsW,MAAMzO,QAAQq8B,oBAC1ClkC,KAAKsW,MAAM5Y,QAAQgqC,KAAKilB,sBAAsB3sD,KAAKkqC,kBAEnDroC,QAAQC,MAAM,gEAMlB8pD,EAAKxsD,UAAU4sD,oBAAsB,WACpC,IAAIl7B,EAAKjuB,SAASC,cAAc,OAEhC,OADAguB,EAAGC,UAAUvc,IAAI,oBACVsc,GAGR86B,EAAKxsD,UAAU8sD,iBAAmB,WACjC,IAAIp7B,EAAKjuB,SAASC,cAAc,OAKhC,OAHAguB,EAAGC,UAAUvc,IAAI,wBACjBsc,EAAG8K,aAAa,OAAQ,SAEjB9K,GAIR86B,EAAKxsD,UAAUqqC,UAAY,SAAU/J,EAAQxH,GAC5C,GAAIA,EAGH,IAAK,IAAIn5B,KAFTiB,KAAK0/B,OAAS1/B,KAAK0/B,QAAU,GAEbA,EACf1/B,KAAK0/B,OAAO3gC,GAAO2gC,EAAO3gC,QAG3BiB,KAAK0/B,OAASA,GAIhBksB,EAAKxsD,UAAUwtD,UAAY,WAC1B,OAAO5sD,KAAK0/B,QAAU,IAIvBksB,EAAKxsD,UAAU8hD,UAAY,SAAUJ,GAGpC,GAFA9gD,KAAK6sD,qBAEgB,iBAAV/L,EACV9gD,KAAK8gD,OAAOrzC,OAASqzC,OAErB,IAAK,IAAI/hD,KAAO+hD,EACf9gD,KAAK8gD,OAAO/hD,GAAO+hD,EAAO/hD,IAM7B6sD,EAAKxsD,UAAUytD,mBAAqB,SAAUvjD,GAE7C,IADWtJ,KACD8gD,QAAUx3C,EAKnB,IAAK,IAAIvK,KANCiB,KAGL8gD,OAAS,GAHJ9gD,KAMW8sD,cANX9sD,KAOJ8gD,OAAO/hD,GAPHiB,KAOe8sD,cAAc/tD,IAMzC6sD,EAAKxsD,UAAU+hD,OAAS,SAAU0K,GACjC7rD,KAAK6rD,IAAMA,GAIZD,EAAKxsD,UAAU6hD,OAAS,WACvB,OAAOjhD,KAAK6rD,KAIbD,EAAKxsD,UAAU2qC,SAAW,SAAUiX,GAGnC,OAAIhhD,KAAKkqC,gBACDlqC,KAAK+sD,uBAEL/sD,KAAKgtD,kBAAkBhM,IAIhC4K,EAAKxsD,UAAUglC,SAAW,SAAU2H,GAG9B/rC,KAAKsqD,SAILve,GAFK/rC,KAAKsW,MAAMzO,QAAQ4zC,iCAAqF,EAAlDz7C,KAAKsW,MAAMka,WAAW9pB,aAAaywB,eAGjGn3B,KAAKsW,MAAM5Y,QAAQgqC,KAAKtD,WAAWuF,KAAK,cAAgBC,MAAM,eAKjEgiB,EAAKxsD,UAAU2hD,mBAAqB,WACnC/gD,KAAKssD,gBAGNV,EAAKxsD,UAAU2tD,qBAAuB,WAErC,OADA/sD,KAAKsW,MAAMka,WAAW9Y,QAAQ,IACvB1X,KAAKsW,MAAM5Y,QAAQgqC,KAAKoC,QAAQ,IAGxC8hB,EAAKxsD,UAAU4tD,kBAAoB,SAAUhM,GAC5C,IAAIiM,EAAUjtD,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GACrCy2B,EAAQvjB,YAAYsX,GAAYrX,KAAK,SAAUp2B,GAC9C05C,EAAQ32C,MAAMka,WAAW9Y,QAAQnE,EAAMytC,GAAYrX,KAAK,WACvDpT,MACEqT,MAAM,SAAUxnC,GAClBo0B,EAAOp0B,OAENwnC,MAAM,SAAUxnC,GAClBo0B,EAAOp0B,QAKVwpD,EAAKxsD,UAAU8tD,mBAAqB,SAAU35C,EAAMk2C,GACnD,IAAIr3B,EAAOpyB,KACPovB,EAAS,GAIb,GAFAq6B,EAASA,GAAU,GAEf3oD,MAAMC,QAAQwS,GACjBA,EAAKhO,QAAQ,SAAU+hC,EAAM9pC,GAC5B4xB,EAASA,EAAO5d,OAAO4gB,EAAK86B,mBAAmB5lB,EAAMmiB,EAASA,EAAS,IAAMjsD,EAAI,IAAMA,WAElF,GAAoE,iBAA/C,IAAT+V,EAAuB,YAAclD,EAAQkD,IAC/D,IAAK,IAAIxU,KAAOwU,EACf6b,EAASA,EAAO5d,OAAO4gB,EAAK86B,mBAAmB35C,EAAKxU,GAAM0qD,EAASA,EAAS,IAAM1qD,EAAM,IAAMA,SAG/FqwB,EAAOvuB,KAAK,CAAE9B,IAAK0qD,EAAQhrD,MAAO8U,IAGnC,OAAO6b,GAGRw8B,EAAKxsD,UAAU+tD,gBAAkB,SAAUztB,GAC1C,IAAItQ,EAASpvB,KAAKktD,mBAAmBxtB,GACjC0tB,EAAU,GAMd,OAJAh+B,EAAO7pB,QAAQ,SAAU+hC,GACxB8lB,EAAQvsD,KAAKwsD,mBAAmB/lB,EAAKvoC,KAAO,IAAMsuD,mBAAmB/lB,EAAK7oC,UAGpE2uD,EAAQnsD,KAAK,MAIrB2qD,EAAKxsD,UAAUsqC,YAAc,SAAU5I,GACtC,IAIIwsB,EAJAC,EAAUvtD,KAEVoyB,EAAOpyB,KACP6rD,EAAMz5B,EAAKy5B,IAUf,OALAz5B,EAAKk6B,eACLgB,EAAYl7B,EAAKk6B,aAEjBl6B,EAAKy6B,qBAEE,IAAIv2B,QAAQ,SAAUC,EAASC,IACgD,IAAjFpE,EAAK9b,MAAMzO,QAAQo1C,eAAet/C,KAAK4vD,EAAQj3C,MAAO8b,EAAKy5B,IAAKz5B,EAAKsN,SAExEtN,EAAKk4B,SAAU,EAEVxpB,GACJ1O,EAAKo7B,aAGND,EAAQlB,cAAcR,EAAKz5B,EAAK0uB,OAAQ1uB,EAAKsN,QAAQiK,KAAK,SAAUp2B,GAC/D+5C,IAAcl7B,EAAKk6B,cAClBl6B,EAAK9b,MAAMzO,QAAQq1C,eACtB3pC,EAAO6e,EAAK9b,MAAMzO,QAAQq1C,aAAav/C,KAAKy0B,EAAK9b,MAAO8b,EAAKy5B,IAAKz5B,EAAKsN,OAAQnsB,IAEhFgjB,EAAQhjB,IAER1R,QAAQ+0B,KAAK,kIAGdxE,EAAKq7B,aAELr7B,EAAKk4B,SAAU,IACb1gB,MAAM,SAAU9nC,GAClBD,QAAQC,MAAM,oBAAqBA,GACnCswB,EAAK9b,MAAMzO,QAAQs1C,UAAUx/C,KAAKy0B,EAAK9b,MAAOxU,GAE9CswB,EAAKs7B,YAELrhD,WAAW,WACV+lB,EAAKq7B,cACH,KAEHr7B,EAAKk4B,SAAU,EAEf9zB,OAGDA,OAKHo1B,EAAKxsD,UAAUouD,WAAa,WAG3B,GAF0D,mBAAlCxtD,KAAKsW,MAAMzO,QAAQwzC,WAA4Br7C,KAAKsW,MAAMzO,QAAQwzC,aAAer7C,KAAKsW,MAAMzO,QAAQwzC,WAE5G,CAIf,IAFAr7C,KAAKytD,aAEEztD,KAAKisD,WAAWp7B,YACtB7wB,KAAKisD,WAAWlnD,YAAY/E,KAAKisD,WAAWp7B,YAC5C7wB,KAAKisD,WAAWl7B,UAAU3oB,OAAO,mBAClCpI,KAAKisD,WAAWl7B,UAAUvc,IAAI,qBAE1BxU,KAAKmsD,eACRnsD,KAAKisD,WAAWrnD,YAAY5E,KAAKmsD,gBAEjCnsD,KAAKisD,WAAWhsB,UAAYjgC,KAAKsW,MAAM5Y,QAAQ++B,SAASotB,QAAQ,gBAGjE7pD,KAAKsW,MAAMvT,QAAQ6B,YAAY5E,KAAK+rD,iBAItCH,EAAKxsD,UAAUsuD,UAAY,WAG1B,IAFA1tD,KAAKytD,aAEEztD,KAAKisD,WAAWp7B,YACtB7wB,KAAKisD,WAAWlnD,YAAY/E,KAAKisD,WAAWp7B,YAC5C7wB,KAAKisD,WAAWl7B,UAAU3oB,OAAO,qBAClCpI,KAAKisD,WAAWl7B,UAAUvc,IAAI,mBAE1BxU,KAAKosD,aACRpsD,KAAKisD,WAAWrnD,YAAY5E,KAAKosD,cAEjCpsD,KAAKisD,WAAWhsB,UAAYjgC,KAAKsW,MAAM5Y,QAAQ++B,SAASotB,QAAQ,cAGjE7pD,KAAKsW,MAAMvT,QAAQ6B,YAAY5E,KAAK+rD,gBAGrCH,EAAKxsD,UAAUquD,WAAa,WACvBztD,KAAK+rD,cAAcz4B,YACtBtzB,KAAK+rD,cAAcz4B,WAAWvuB,YAAY/E,KAAK+rD,gBAKjDH,EAAKxsD,UAAU0tD,cAAgB,CAC9Br/C,OAAQ,OAGTm+C,EAAKxsD,UAAUstD,oBAAsB,SAAUb,EAAK/K,EAAQphB,GAW3D,OATImsB,GACCnsB,GAAUxhC,OAAOmC,KAAKq/B,GAAQ7/B,SAC5BihD,EAAOrzC,QAAyC,OAA/BqzC,EAAOrzC,OAAO+7C,gBACnC1I,EAAOrzC,OAAS,MAChBo+C,GAAO,IAAM7rD,KAAKmtD,gBAAgBztB,KAK9BmsB,GAGRD,EAAKxsD,UAAUqtD,qBAAuB,SAAUZ,EAAK/K,EAAQphB,GAC5D,IACIiuB,EADAv7B,EAAOpyB,KAGX,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAMrC,GAHAq1B,EAAMz5B,EAAK05B,aAAaD,EAAK/K,EAAQphB,GAGF,OAA/BohB,EAAOrzC,OAAOiF,cAEjB,GADAi7C,EAA8D,WAAhDt9C,EAAQ+hB,EAAK9b,MAAMzO,QAAQszC,iBAAgC/oB,EAAK9b,MAAMzO,QAAQszC,gBAAkB/oB,EAAKw7B,sBAAsBx7B,EAAK9b,MAAMzO,QAAQszC,iBAC3I,CAEhB,IAAK,IAAIp8C,KAAO4uD,EAAYtyC,QACtBylC,EAAOzlC,UACXylC,EAAOzlC,QAAU,SAGiB,IAAxBylC,EAAOzlC,QAAQtc,KACzB+hD,EAAOzlC,QAAQtc,GAAO4uD,EAAYtyC,QAAQtc,IAI5C+hD,EAAOn8C,KAAOgpD,EAAYhpD,KAAKhH,KAAKy0B,EAAMy5B,EAAK/K,EAAQphB,QAEvD79B,QAAQ+0B,KAAK,8CAA+CxE,EAAK9b,MAAMzO,QAAQszC,iBAI7E0Q,QAG2B,IAAnB/K,EAAOzlC,UACjBylC,EAAOzlC,QAAU,SAGmB,IAA1BylC,EAAOzlC,QAAQwyC,SACzB/M,EAAOzlC,QAAQwyC,OAAS,yBAGyB,IAAvC/M,EAAOzlC,QAAQ,sBACzBylC,EAAOzlC,QAAQ,oBAAsB,uBAGX,IAAhBylC,EAAOniD,OACjBmiD,EAAOniD,KAAO,QAGI,QAAfmiD,EAAOniD,WAEmD,IAAlDmiD,EAAOzlC,QAAQ,iCACzBylC,EAAOzlC,QAAQ,+BAAiCzY,OAAO+N,SAASoW,aAG/B,IAAvB+5B,EAAOgN,cACjBhN,EAAOgN,YAAc,qBAGY,IAAvBhN,EAAOgN,cACjBhN,EAAOgN,YAAc,WAKvBC,MAAMlC,EAAK/K,GAAQnX,KAAK,SAAUh/B,GAC7BA,EAASqjD,GACZrjD,EAASsjD,OAAOtkB,KAAK,SAAUp2B,GAC9BgjB,EAAQhjB,KACNq2B,MAAM,SAAU9nC,GAClB00B,EAAO10B,GACPD,QAAQ+0B,KAAK,0CAA2C90B,MAGzDD,QAAQC,MAAM,uCAAyC6I,EAASujD,OAAQvjD,EAASwjD,YACjF33B,EAAO7rB,MAENi/B,MAAM,SAAU9nC,GAClBD,QAAQC,MAAM,uCAAwCA,GACtD00B,EAAO10B,OAGRD,QAAQ+0B,KAAK,gCACbL,EAAQ,QAKXq1B,EAAKxsD,UAAUwuD,sBAAwB,CACtCK,KAAQ,CACP5yC,QAAS,CACR+yC,eAAgB,oBAEjBzpD,KAAM,SAAcknD,EAAK/K,EAAQphB,GAChC,OAAO15B,KAAKE,UAAUw5B,KAGxB5kB,KAAQ,CACPO,QAAS,GACT1W,KAAM,SAAcknD,EAAK/K,EAAQphB,GAChC,IAAItQ,EAASpvB,KAAKktD,mBAAmBxtB,GACjC5kB,EAAO,IAAIuzC,SAMf,OAJAj/B,EAAO7pB,QAAQ,SAAU+hC,GACxBxsB,EAAK5P,OAAOo8B,EAAKvoC,IAAKuoC,EAAK7oC,SAGrBqc,KAKVjF,EAAUzW,UAAUknD,eAAe,OAAQsF,GAE3C,IAAI0C,EAAc,SAAqBh4C,GACtCtW,KAAKsW,MAAQA,EACbtW,KAAKuuD,SAAW,GAChBvuD,KAAKwuD,SAAW,GAChBxuD,KAAKyuD,WAAY,EACjBzuD,KAAK0uD,WAAa1uD,KAAK8C,gBACvB9C,KAAK2uD,WAAa3uD,KAAK8C,gBACvB9C,KAAK0rC,QAAS,EACd1rC,KAAK4uD,QAAS,EACd5uD,KAAK6uD,gBAAiB,EACtB7uD,KAAK8uD,gBAAiB,EAEtB9uD,KAAKixB,cAGNq9B,EAAYlvD,UAAU0D,cAAgB,WACrC,IAAIguB,EAAKjuB,SAASC,cAAc,OAEhC,OADAguB,EAAGC,UAAUvc,IAAI,0BACVsc,GAGRw9B,EAAYlvD,UAAU6xB,WAAa,WAClCjxB,KAAKyuD,UAAY,IAAI17B,EAAO,CAAEf,MAAO,SAAWhyB,OAIjDsuD,EAAYlvD,UAAUq0B,oBAAsB,aAG5C66B,EAAYlvD,UAAU69B,iBAAmB,SAAUnK,GAClD,IAAIR,EAAMQ,EAAOH,WAEbmuB,EAAS,CACZiO,cAAez8B,EAAIy8B,eAAiB,GACpCC,cAAe18B,EAAI28B,kBAAoB,IAGxC,GAAI38B,EAAIgL,QAAS,CAEhB,OAAQjtB,EAAQiiB,EAAIgL,UACnB,IAAK,SACAt9B,KAAKkvD,aAAa58B,EAAIgL,SACzBwjB,EAAOxjB,QAAUt9B,KAAKkvD,aAAa58B,EAAIgL,SAEvCz7B,QAAQ+0B,KAAK,4DAA6DtE,EAAIgL,SAE/E,MAED,IAAK,WACJwjB,EAAOxjB,QAAUhL,EAAIgL,QAKnBwjB,EAAOxjB,UACVxK,EAAOp1B,QAAQ85B,YAAcspB,EAC7B9gD,KAAKuuD,SAAS1tD,KAAKiyB,GAEmB,SAAlC9yB,KAAKsW,MAAMzO,QAAQ2vB,aACtBx3B,KAAKmvD,oBAKR,GAAI78B,EAAIiL,WAAY,CACnB,OAAQltB,EAAQiiB,EAAIiL,aACnB,IAAK,SACAv9B,KAAKkvD,aAAa58B,EAAIiL,YACzBujB,EAAOsO,QAAUpvD,KAAKkvD,aAAa58B,EAAIiL,YAEvC17B,QAAQ+0B,KAAK,4DAA6DtE,EAAIiL,YAE/E,MAED,IAAK,WACJujB,EAAOsO,QAAU98B,EAAIiL,WAKnBujB,EAAOsO,UACVt8B,EAAOp1B,QAAQ85B,YAAcspB,EAC7B9gD,KAAKwuD,SAAS3tD,KAAKiyB,GAEmB,SAAlC9yB,KAAKsW,MAAMzO,QAAQ2vB,aACtBx3B,KAAKqvD,yBAMTf,EAAYlvD,UAAUkwD,YAAc,WACnC,IAAI1Z,GAAU,EAEV51C,KAAK6uD,iBACR7uD,KAAK6uD,gBAAiB,EACtB7uD,KAAK0uD,WAAWp7B,WAAWvuB,YAAY/E,KAAK0uD,YAC5C9Y,GAAU,GAGP51C,KAAK8uD,iBACR9uD,KAAK8uD,gBAAiB,EACtB9uD,KAAKsW,MAAM6hB,cAAc/vB,OAAOpI,KAAK2uD,YACrC/Y,GAAU,GAGPA,GACH51C,KAAKsW,MAAMka,WAAW0D,mBAIxBo6B,EAAYlvD,UAAU+vD,iBAAmB,WACnCnvD,KAAK6uD,iBAET7uD,KAAKsW,MAAMqf,cAAcjvB,aAAakqB,aAAa5wB,KAAK0uD,WAAY1uD,KAAKsW,MAAMqf,cAActF,eAAekD,aAC5GvzB,KAAK6uD,gBAAiB,IAIxBP,EAAYlvD,UAAUiwD,oBAAsB,WACtCrvD,KAAK8uD,iBACT9uD,KAAKsW,MAAM6hB,cAAc1sB,QAAQzL,KAAK2uD,YACtC3uD,KAAK8uD,gBAAiB,IAIxBR,EAAYlvD,UAAUiyB,iBAAmB,SAAUC,GAEhCtxB,KAAKsW,MAAMqf,cAAcjvB,aAAa8qB,YAAcxxB,KAAKsW,MAAMvT,QAAQ+B,YAErF9E,KAAK8uD,iBACR9uD,KAAK4uD,OAAOloD,aAAarC,MAAMotB,YAAcH,EAAO,OAItDg9B,EAAYlvD,UAAU6E,OAAS,SAAU8Z,GACxC,IAAU8T,EAEV,GAAI7xB,KAAK6uD,gBAAkB7uD,KAAK8uD,eAAgB,CAG/C,GAFO9uD,KAAKuvD,WAAWxxC,GAEnB/d,KAAK6uD,eAAgB,CAOxB,IANI7uD,KAAK0rC,QACR1rC,KAAK0rC,OAAO8F,cAGb3f,EAAM7xB,KAAKwvD,YAAY,MAAOxvD,KAAKuvD,WAAWxxC,IAC9C/d,KAAK0rC,OAAS7Z,EACP7xB,KAAK0uD,WAAW79B,YACtB7wB,KAAK0uD,WAAW3pD,YAAY/E,KAAK0uD,WAAW79B,YAC5C7wB,KAAK0uD,WAAW9pD,YAAYitB,EAAInrB,cACjCmrB,EAAIZ,YAAW,GAGhB,GAAIjxB,KAAK8uD,eAAgB,CAOxB,IANI9uD,KAAK4uD,QACR5uD,KAAK4uD,OAAOpd,cAGb3f,EAAM7xB,KAAKwvD,YAAY,SAAUxvD,KAAKuvD,WAAWxxC,IACjD/d,KAAK4uD,OAAS/8B,EACP7xB,KAAK2uD,WAAW99B,YACtB7wB,KAAK2uD,WAAW5pD,YAAY/E,KAAK2uD,WAAW99B,YAC5C7wB,KAAK2uD,WAAW/pD,YAAYitB,EAAInrB,cACjCmrB,EAAIZ,YAAW,GAGhBjxB,KAAKsW,MAAMka,WAAW0D,kBAGlBl0B,KAAKsW,MAAMob,UAAU,kBACxB1xB,KAAKsW,MAAM5Y,QAAQi0B,cAAc1a,WAKpCq3C,EAAYlvD,UAAUm0C,eAAiB,SAAU1hB,GAChD7xB,KAAKyvD,YAAYzvD,KAAKsW,MAAM5Y,QAAQqmC,UAAU2rB,YAAY79B,KAG3Dy8B,EAAYlvD,UAAUqwD,YAAc,SAAUnc,GAC7C,IAAI//B,EAAMo8C,EAENrc,GACCA,EAAM4C,QACL5C,EAAM4C,MAAM0Z,SACfr8C,EAAOvT,KAAKuvD,WAAWjc,EAAMv1B,MAC7B4xC,EAAU3vD,KAAK6vD,gBAAgB,SAAUt8C,GAEzC+/B,EAAM4C,MAAM0Z,OAAO3gB,WAAW0gB,GAC9Brc,EAAM4C,MAAM0Z,OAAOh4B,gBAGhB0b,EAAM4C,MAAM3xC,MACfgP,EAAOvT,KAAKuvD,WAAWjc,EAAMv1B,MAC7B4xC,EAAU3vD,KAAK6vD,gBAAgB,MAAOt8C,GAEtC+/B,EAAM4C,MAAM3xC,IAAI0qC,WAAW0gB,GAC3Brc,EAAM4C,MAAM3xC,IAAIqzB,kBAOpB02B,EAAYlvD,UAAU0wD,eAAiB,SAAU/xC,GAChD,OAAO/d,KAAKwvD,YAAY,MAAOxvD,KAAKuvD,WAAWxxC,KAGhDuwC,EAAYlvD,UAAU2wD,kBAAoB,SAAUhyC,GACnD,OAAO/d,KAAKwvD,YAAY,SAAUxvD,KAAKuvD,WAAWxxC,KAGnDuwC,EAAYlvD,UAAUmwD,WAAa,SAAUxxC,GAC5C,IAAIxK,EAAO,GAMX,OAJAwK,EAAKxY,QAAQ,SAAUssB,GACtBte,EAAK1S,KAAKgxB,EAAIgV,aAGRtzB,GAIR+6C,EAAYlvD,UAAUowD,YAAc,SAAUxoB,EAAKzzB,GAClD,IAEIse,EAFAO,EAAOpyB,KACP2vD,EAAU3vD,KAAK6vD,gBAAgB7oB,EAAKzzB,GA0DxC,OAvDI6e,EAAK9b,MAAMob,UAAU,YACxBU,EAAK9b,MAAM5Y,QAAQghC,QAAQsxB,UAG5Bn+B,EAAM,IAAIyS,EAAIqrB,EAAS3vD,MAEnBoyB,EAAK9b,MAAMob,UAAU,YACxBU,EAAK9b,MAAM5Y,QAAQghC,QAAQuxB,SAG5Bp+B,EAAInrB,aAAaqqB,UAAUvc,IAAI,kBAAmB,mBAAqBwyB,GACvEnV,EAAInpB,KAAO,OAEXmpB,EAAIgF,cAAgB,WAEnB,IAAIX,EAAQ,GAEZ9D,EAAK9b,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,GAGzDV,EAAKq8B,UAAUv0B,SAASpH,EAAOgF,YAC/B1F,EAAKq8B,UAAU30B,SAAWhH,EAAOgH,SAE7BhH,EAAOH,WAAWqU,EAAM,kBAAoB5U,EAAK9b,MAAMob,UAAU,UAEpEU,EAAKq8B,UAAU/wD,QAAQuE,OAAS,CAC/Bu9B,UAAWpN,EAAK9b,MAAM5Y,QAAQuE,OAAO49B,aAAa/M,EAAOH,WAAWqU,EAAM,kBAC1EtH,OAAQ5M,EAAOH,WAAWqU,EAAM,wBAGjC5U,EAAKq8B,UAAU/wD,QAAQuE,OAAS,CAC/Bu9B,UAAWpN,EAAK9b,MAAM5Y,QAAQuE,OAAO49B,aAAa,aAClDH,OAAQ,IAKVtN,EAAKq8B,UAAU97B,WAAWiM,SAAW9L,EAAOH,WAAWiM,SAGvD,IAAIt4B,EAAO,IAAIu7B,EAAKzP,EAAKq8B,UAAW58B,GACpCvrB,EAAKwsB,OAASA,EACdxsB,EAAK86B,WAELtO,EAAOoD,MAAMr1B,KAAKyF,GAClB4vB,EAAMr1B,KAAKyF,GAENwsB,EAAO6B,SACXruB,EAAKyF,SAIP/L,KAAKk2B,MAAQA,GAGPrE,GAIRy8B,EAAYlvD,UAAUywD,gBAAkB,SAAU7oB,EAAKzzB,GACtD,IAGImsB,EACAwwB,EAJAP,EAAU,GACVzZ,EAAe,OAAPlP,EAAehnC,KAAKuuD,SAAWvuD,KAAKwuD,SAC5C9lD,EAAc,OAAPs+B,EAAe,UAAY,UAmBtC,OAfAkP,EAAM3wC,QAAQ,SAAUutB,GACvB,IAAIpI,EAAS,GAEToI,EAAOp1B,QAAQ85B,aAAe1E,EAAOp1B,QAAQ85B,YAAY9uB,KAC5D6K,EAAKhO,QAAQ,SAAU+hC,GACtB5c,EAAO7pB,KAAKiyB,EAAOkH,cAAcsN,MAGlC4oB,EAAWxnD,EAAO,SAClBg3B,EAAyD,mBAAzC5M,EAAOp1B,QAAQ85B,YAAY04B,GAA2Bp9B,EAAOp1B,QAAQ85B,YAAY04B,GAAUxlC,EAAQnX,GAAQuf,EAAOp1B,QAAQ85B,YAAY04B,GAEtJp9B,EAAOmH,cAAc01B,EAAS78B,EAAOp1B,QAAQ85B,YAAY9uB,GAAMgiB,EAAQnX,EAAMmsB,OAIxEiwB,GAGRrB,EAAYlvD,UAAU+wD,YAAc,WACnC,QAASnwD,KAAKuuD,SAAS1uD,QACrByuD,EAAYlvD,UAAUgxD,eAAiB,WACzC,QAASpwD,KAAKwuD,SAAS3uD,QAIxByuD,EAAYlvD,UAAUszB,OAAS,WAC1B1yB,KAAK0rC,QACR1rC,KAAK0rC,OAAOwB,iBAAgB,GAEzBltC,KAAK4uD,QACR5uD,KAAK4uD,OAAO1hB,iBAAgB,IAK9BohB,EAAYlvD,UAAUgmD,WAAa,WAClC,IAAIhzB,EAAOpyB,KACPonD,EAAU,GAgBd,OAbIpnD,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,aAC7C1xB,KAAKsW,MAAM5Y,QAAQqmC,UAAUkhB,WAAU,GAEzC1/C,QAAQ,SAAU+tC,GACxB8T,EAAQ9T,EAAM+c,UAAYj+B,EAAKk+B,gBAAgBhd,KAGhD8T,EAAU,CACT7iD,IAAKvE,KAAK0rC,OAAS1rC,KAAK0rC,OAAO7E,UAAY,GAC3C+oB,OAAQ5vD,KAAK4uD,OAAS5uD,KAAK4uD,OAAO/nB,UAAY,IAIzCugB,GAIRkH,EAAYlvD,UAAUkxD,gBAAkB,SAAUhd,GACjD,IAAIlhB,EAAOpyB,KACPuwD,EAAWjd,EAAMhf,WACjBk8B,EAAYld,EAAMmd,eAClBC,EAAkB,GAatB,OAVAF,EAAUjrD,QAAQ,SAAUorD,GAC3BD,EAAgBC,EAASN,UAAYj+B,EAAKk+B,gBAAgBK,KAGjD,CACTpsD,IAAKgsD,EAASra,MAAM3xC,IAAMgsD,EAASra,MAAM3xC,IAAIsiC,UAAY,GACzD+oB,OAAQW,EAASra,MAAM0Z,OAASW,EAASra,MAAM0Z,OAAO/oB,UAAY,GAClEie,OAAQ4L,IAOVpC,EAAYlvD,UAAU8vD,aAAe,CACpC0B,IAAO,SAAalmC,EAAQnX,EAAMs9C,GACjC,IAAIzhC,EAAS,EACT0hC,OAA4C,IAAzBD,EAAWC,UAA4BD,EAAWC,UAAY,EAarF,OAXIpmC,EAAO7qB,SACVuvB,EAAS1E,EAAOrS,OAAO,SAAU04C,EAAKtyD,GAErC,OAAOsyD,GADPtyD,EAAQuyD,OAAOvyD,MAIhB2wB,GAAkB1E,EAAO7qB,OAEzBuvB,GAAuB,IAAd0hC,EAAsB1hC,EAAO6hC,QAAQH,GAAa1hC,GAGrD7iB,WAAW6iB,GAAQrP,YAE3BrD,IAAO,SAAagO,EAAQnX,EAAMs9C,GACjC,IAAIzhC,EAAS,KACT0hC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAWzE,OATApmC,EAAOnlB,QAAQ,SAAU9G,KAExBA,EAAQuyD,OAAOvyD,IAEH2wB,GAAqB,OAAXA,KACrBA,EAAS3wB,KAIO,OAAX2wB,GAAgC,IAAd0hC,EAAsB1hC,EAAO6hC,QAAQH,GAAa1hC,EAAS,IAErFtS,IAAO,SAAa4N,EAAQnX,EAAMs9C,GACjC,IAAIzhC,EAAS,KACT0hC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAWzE,OATApmC,EAAOnlB,QAAQ,SAAU9G,KAExBA,EAAQuyD,OAAOvyD,IAEH2wB,GAAqB,OAAXA,KACrBA,EAAS3wB,KAIO,OAAX2wB,GAAgC,IAAd0hC,EAAsB1hC,EAAO6hC,QAAQH,GAAa1hC,EAAS,IAErF2hC,IAAO,SAAarmC,EAAQnX,EAAMs9C,GACjC,IAAIzhC,EAAS,EACT0hC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAUzE,OARIpmC,EAAO7qB,QACV6qB,EAAOnlB,QAAQ,SAAU9G,GACxBA,EAAQuyD,OAAOvyD,GAEf2wB,GAAW6C,MAAMxzB,GAAyB,EAAhBuyD,OAAOvyD,MAId,IAAdqyD,EAAsB1hC,EAAO6hC,QAAQH,GAAa1hC,GAE1D5d,OAAU,SAAgBkZ,EAAQnX,EAAMs9C,GACvC,IAAIzhC,EAAS,EAQb,OANI1E,EAAO7qB,SACVuvB,EAAS1E,EAAOrS,OAAO,SAAU04C,EAAKtyD,GACrC,OAAOiR,OAAOqhD,GAAOrhD,OAAOjR,MAIvB2wB,GAER8hC,MAAS,SAAexmC,EAAQnX,EAAMs9C,GACrC,IAAIzhC,EAAS,EAUb,OARI1E,EAAO7qB,QACV6qB,EAAOnlB,QAAQ,SAAU9G,GACpBA,GACH2wB,MAKIA,IAITvZ,EAAUzW,UAAUknD,eAAe,cAAegI,GAElD,IAAI6C,EAAY,SAAmB76C,GAClCtW,KAAKsW,MAAQA,EACbtW,KAAKrB,MAAO,EACZqB,KAAKoxD,cAAe,EACpBpxD,KAAKqxD,mBAAqB,GAC1BrxD,KAAKsxD,eAAgB,EACrBtxD,KAAKuxD,oBAAsB,GAC3BvxD,KAAKwxD,YAAc,aACnBxxD,KAAKyxD,YAAc,aACnBzxD,KAAK0xD,aAAc,EACnB1xD,KAAK8gD,OAAS,GAEd9gD,KAAK2xD,SAAU,GAGhBR,EAAU/xD,UAAU6xB,WAAa,WAChC,IAAImB,EAAOpyB,KAEXA,KAAKrB,KAAOqB,KAAKsW,MAAMzO,QAAQiwC,WAEb,IAAd93C,KAAKrB,MAA+B,SAAdqB,KAAKrB,MAC9BqB,KAAKsW,MAAMvT,QAAQy6B,iBAAiB,OAAQ,SAAUp7B,GACrD,IAAImR,EAEJ6e,EAAKw/B,gBAEAx/B,EAAKu/B,UACTvvD,EAAE2yC,iBAEFxhC,EAAO6e,EAAKy/B,kBAERjvD,OAAOkvD,eAAiBlvD,OAAOkvD,cAAcp6C,QAChD9U,OAAOkvD,cAAcp6C,QAAQ,OAAQnE,GAC3BnR,EAAE0vD,eAAiB1vD,EAAE0vD,cAAcp6C,SAC7CtV,EAAE0vD,cAAcp6C,QAAQ,aAAcnE,GAClC6e,EAAKs/B,aACRtvD,EAAE0vD,cAAcp6C,QAAQ,YAAa0a,EAAKs/B,YAAYK,YAE7C3vD,EAAE4vD,eAAiB5vD,EAAE4vD,cAAcF,cAAcp6C,UAC3DtV,EAAE4vD,cAAcF,cAAcp6C,QAAQ,aAAcnE,GAChD6e,EAAKs/B,aACRtvD,EAAE4vD,cAAcF,cAAcp6C,QAAQ,YAAa0a,EAAKs/B,YAAYK,YAItE3/B,EAAK9b,MAAMzO,QAAQwwC,gBAAgB16C,KAAKqC,KAAKsW,MAAO/C,GAEpD6e,EAAKC,YAKU,IAAdryB,KAAKrB,MAA+B,UAAdqB,KAAKrB,MAC9BqB,KAAKsW,MAAMvT,QAAQy6B,iBAAiB,QAAS,SAAUp7B,GACtDgwB,EAAK6/B,MAAM7vD,KAIbpC,KAAKkyD,eAAelyD,KAAKsW,MAAMzO,QAAQqwC,sBACvCl4C,KAAKmyD,eAAenyD,KAAKsW,MAAMzO,QAAQswC,uBAGxCgZ,EAAU/xD,UAAUwyD,cAAgB,WACnC,IAAI9Q,EAAS,CACZsR,cAAe,SACfC,WAAW,EACX76B,aAAa,GAQd,QALsD,IAA3Cx3B,KAAKsW,MAAMzO,QAAQyqD,sBAC7BxR,EAAOsR,cAAgBpyD,KAAKsW,MAAMzO,QAAQyqD,oBAC1CzwD,QAAQ+0B,KAAK,kJAGV52B,KAAKsW,MAAMzO,QAAQuwC,oBACtB,IAAK,IAAIr5C,KAAOiB,KAAKsW,MAAMzO,QAAQuwC,oBAClC0I,EAAO/hD,GAAOiB,KAAKsW,MAAMzO,QAAQuwC,oBAAoBr5C,GAInD+hD,EAAOuR,WAAaryD,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,eAC1E1xB,KAAK8gD,OAAOuR,WAAY,GAGrBvR,EAAOsR,cACoB,WAAzBtR,EAAOsR,gBAAyC,IAAXtR,GAAoB9gD,KAAKsW,MAAMqf,cAAc7e,QAAQjX,QAAUG,KAAKsW,MAAMqf,cAAclF,eAAe5wB,OAGhJG,KAAK8gD,OAAOsR,cAAgB,UAF5BpyD,KAAK8gD,OAAOsR,cAAgB,SAK7BpyD,KAAK8gD,OAAOsR,eAAgB,EAGzBtR,EAAOtpB,aAAex3B,KAAKsW,MAAMob,UAAU,iBAC9C1xB,KAAK8gD,OAAOtpB,aAAc,IAI5B25B,EAAU/xD,UAAUizB,MAAQ,WAC3BryB,KAAK2xD,SAAU,EACf3xD,KAAKuyD,sBAAwB,IAG9BpB,EAAU/xD,UAAU+yD,eAAiB,SAAUt5C,GAE9C,YAA0B,IAAXA,EAAyB,YAAcxI,EAAQwI,IAC7D,IAAK,SACJ7Y,KAAKyxD,YAAczxD,KAAKwyD,aAAa35C,GAEhC7Y,KAAKyxD,aACT5vD,QAAQ+0B,KAAK,gDAAiD/d,GAE/D,MAED,IAAK,WACJ7Y,KAAKyxD,YAAc54C,IAKtBs4C,EAAU/xD,UAAU8yD,eAAiB,SAAUO,GAC9C,YAA0B,IAAXA,EAAyB,YAAcpiD,EAAQoiD,IAC7D,IAAK,SACJzyD,KAAKwxD,YAAcxxD,KAAK0yD,aAAaD,GAEhCzyD,KAAKwxD,aACT3vD,QAAQ+0B,KAAK,gDAAiD67B,GAE/D,MAED,IAAK,WACJzyD,KAAKwxD,YAAciB,IAKtBtB,EAAU/xD,UAAU6yD,MAAQ,SAAU7vD,GACrC,IAAImR,EAAMo8C,EAAS5xC,EAEf/d,KAAK2yD,gBAAgBvwD,KAExBmR,EAAOvT,KAAK4yD,aAAaxwD,IAEzButD,EAAU3vD,KAAKwxD,YAAY7zD,KAAKqC,KAAMuT,KAGrCnR,EAAE2yC,iBAEE/0C,KAAKsW,MAAMob,UAAU,aACxBi+B,EAAU3vD,KAAK6yD,WAAWlD,IAG3B5xC,EAAO/d,KAAKyxD,YAAY9zD,KAAKqC,KAAM2vD,GACnC3vD,KAAKsW,MAAMzO,QAAQywC,gBAAgB36C,KAAKqC,KAAKsW,MAAO/C,EAAMo8C,EAAS5xC,IAEnE/d,KAAKsW,MAAMzO,QAAQ0wC,oBAAoB56C,KAAKqC,KAAKsW,MAAO/C,KAK3D49C,EAAU/xD,UAAUyzD,WAAa,SAAUt/C,GAC1C,IAAI6e,EAAOpyB,KACPovB,EAAS,GAUb,OARItuB,MAAMC,QAAQwS,GACjBA,EAAKhO,QAAQ,SAAUssB,GACtBzC,EAAOvuB,KAAKuxB,EAAK9b,MAAM5Y,QAAQghC,QAAQuT,aAAapgB,EAAK,gBAG1DzC,EAAS7b,EAGH6b,GAGR+hC,EAAU/xD,UAAUuzD,gBAAkB,SAAUvwD,GAC/C,IAAI0wD,GAAQ,EAMZ,OAJwB,OAApB1wD,EAAEzC,OAAOi/C,SAAoB5+C,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eACxDwN,GAAQ,GAGFA,GAGR3B,EAAU/xD,UAAUwzD,aAAe,SAAUxwD,GAC5C,IAAImR,EAUJ,OARI3Q,OAAOkvD,eAAiBlvD,OAAOkvD,cAAcjrB,QAChDtzB,EAAO3Q,OAAOkvD,cAAcjrB,QAAQ,QAC1BzkC,EAAE0vD,eAAiB1vD,EAAE0vD,cAAcjrB,QAC7CtzB,EAAOnR,EAAE0vD,cAAcjrB,QAAQ,cACrBzkC,EAAE4vD,eAAiB5vD,EAAE4vD,cAAcF,cAAcjrB,UAC3DtzB,EAAOnR,EAAE4vD,cAAcF,cAAcjrB,QAAQ,eAGvCtzB,GAGR49C,EAAU/xD,UAAUyjD,KAAO,SAAU7/C,EAAU4/C,EAAgBpjB,EAAWj5B,EAAiBwsD,GAC1F,IAAI9d,EAAO+d,EAAKC,EAChBjzD,KAAK2xD,SAAU,GAEG,IAAd3xD,KAAKrB,MAA+B,SAAdqB,KAAKrB,YAEI,IAAvBiE,OAAOwyC,mBAA8D,IAAxBvyC,SAASwyC,cAChEJ,EAAQpyC,SAASwyC,eACX6d,mBAAmBlzD,KAAKsW,MAAMvT,UACpCiwD,EAAMpwD,OAAOwyC,gBAELr1B,YAAcgzC,IACrB/vD,EAAW,gBACXw8B,EAAY,MACZojB,EAAiBoQ,EAAIjzC,YAGtBizC,EAAIzd,kBACJyd,EAAIxd,SAASP,SAC0B,IAAtBpyC,SAASmyC,gBAAoE,IAAjCnyC,SAAS8B,KAAKuwC,mBAC3E+d,EAAYpwD,SAAS8B,KAAKuwC,mBAChBC,kBAAkBn1C,KAAKsW,MAAMvT,SACvCkwD,EAAU/jB,UAGXlvC,KAAKmzD,YAAYnwD,GACjBhD,KAAKqxD,wBAA8C,IAAlBzO,GAAmD,MAAlBA,EAAyBA,EAAiB5iD,KAAK8gD,OAAOsR,cACxHpyD,KAAKozD,aAAa5zB,GAClBx/B,KAAKuxD,yBAAgD,IAAnBhrD,GAAqD,MAAnBA,EAA0BA,EAAkB,GAEhH1D,SAASwwD,YAAY,QAEjBL,GACHA,EAAIzd,oBAKP4b,EAAU/xD,UAAU+zD,YAAc,SAAUnwD,GAG3C,YAA4B,KAF5BA,EAAWA,GAAYhD,KAAKsW,MAAMzO,QAAQmwC,uBAEA,YAAc3nC,EAAQrN,IAC/D,IAAK,SACAhD,KAAKszD,cAActwD,GACtBhD,KAAKoxD,aAAepxD,KAAKszD,cAActwD,GAEvCnB,QAAQ+0B,KAAK,4CAA6C5zB,GAE3D,MAED,IAAK,WACJhD,KAAKoxD,aAAepuD,IAKvBmuD,EAAU/xD,UAAUg0D,aAAe,SAAU5zB,GAI5C,YAA6B,KAF7BA,EAAYA,GAAax/B,KAAKsW,MAAMzO,QAAQowC,wBAED,YAAc5nC,EAAQmvB,IAChE,IAAK,SACAx/B,KAAKuzD,eAAe/zB,GACvBx/B,KAAKsxD,cAAgBtxD,KAAKuzD,eAAe/zB,GAEzC39B,QAAQ+0B,KAAK,6CAA8C4I,GAE5D,MAED,IAAK,WACJx/B,KAAKsxD,cAAgB9xB,IAKxB2xB,EAAU/xD,UAAUyyD,gBAAkB,WACrC,IAAIt+C,EAKJ,OAHAvT,KAAK0xD,aAAc,EACnBn+C,EAAOvT,KAAKoxD,aAAazzD,KAAKqC,KAAMA,KAAK8gD,OAAQ9gD,KAAKqxD,oBAE/CrxD,KAAKsxD,cAAc3zD,KAAKqC,KAAMuT,EAAMvT,KAAK8gD,OAAQ9gD,KAAKuxD,sBAG9DJ,EAAU/xD,UAAUo0D,sBAAwB,SAAU18C,GACrD,IAAIuE,EAAU,GAMd,OAJAvE,EAAQvR,QAAQ,SAAUutB,GACzBzX,EAAQxa,KAAKiyB,EAAOH,WAAWpqB,SAGzB8S,GAGR81C,EAAU/xD,UAAUq0D,2BAA6B,SAAU38C,GAC1D,IAAI48C,EAAU1zD,KAEVovB,EAAS,GAUb,OARApvB,KAAKsW,MAAMqf,cAAc7e,QAAQvR,QAAQ,SAAUutB,GAClD,IAAI6gC,EAAUD,EAAQE,mBAAmB9gC,GAErC6gC,GACHvkC,EAAOvuB,KAAK8yD,KAIPvkC,GAGR+hC,EAAU/xD,UAAUw0D,mBAAqB,SAAU9gC,GAClD,IAAI+gC,EAAU7zD,KAEVwwD,EAAY19B,EAAOhc,QAEnBg9C,EAAY,CACfprD,KAAM,QACNH,MAAOuqB,EAAOH,WAAWpqB,MACzBuqB,OAAQA,GAGT,GAAI09B,EAAU3wD,QAab,GAZAi0D,EAAUtD,UAAY,GACtBsD,EAAUtvD,MAAQ,EAElBgsD,EAAUjrD,QAAQ,SAAUwuD,GAC3B,IAAIC,EAAeH,EAAQD,mBAAmBG,GAE1CC,IACHF,EAAUtvD,OAASwvD,EAAaxvD,MAChCsvD,EAAUtD,UAAU3vD,KAAKmzD,OAItBF,EAAUtvD,MACd,OAAO,MAEF,CACN,IAAIsuB,EAAOd,QAASc,EAAO6B,QAG1B,OAAO,EAFPm/B,EAAUtvD,MAAQ,EAMpB,OAAOsvD,GAGR3C,EAAU/xD,UAAU60D,mBAAqB,SAAUn9C,GAElD,IAAIuE,EAAU,GAEd,SAAS64C,EAAiBphC,EAAQm3B,GAiBlC,IACKvtC,OAhB0B,IAAnBrB,EAAQ4uC,KAClB5uC,EAAQ4uC,GAAS,IAGlB5uC,EAAQ4uC,GAAOppD,KAAKiyB,EAAOvqB,OAEvBuqB,EAAO09B,UACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,MAQjCvtC,EAAM,EAEVrB,EAAQ9V,QAAQ,SAAUgD,GACzB,IAAIwnB,EAAMxnB,EAAM1I,OACZkwB,EAAMrT,IACTA,EAAMqT,KAIR1U,EAAQ9V,QAAQ,SAAUgD,GACzB,IAAIwnB,EAAMxnB,EAAM1I,OAChB,GAAIkwB,EAAMrT,EACT,IAAK,IAAIlf,EAAIuyB,EAAKvyB,EAAIkf,EAAKlf,IAC1B+K,EAAM1H,KAAK,OAUf,OAJAiW,EAAQvR,QAAQ,SAAUutB,GACzBohC,EAAiBphC,EAAQ,KAGnBzX,GAGR81C,EAAU/xD,UAAUmwD,WAAa,SAAUxxC,EAAM+iC,EAAQphB,GACxD,IAAI5oB,EAAU9W,KAAKsW,MAAMqf,cAAclF,eACnCld,EAAO,GA6BX,OA3BAwK,EAAKxY,QAAQ,SAAUssB,GACtB,IAAIsiC,EAAW,GACXxE,EAAU99B,aAAe0S,EAAe1S,EAAIgV,QAAQ,aAAehV,EAEvE/a,EAAQvR,QAAQ,SAAUutB,GACzB,IAAIr0B,EAAQq0B,EAAOkH,cAAc21B,GAEjC,YAAyB,IAAVlxD,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACJA,EAAQuH,KAAKE,UAAUzH,GACvB,MAED,IAAK,YACL,IAAK,OACJA,EAAQ,GACR,MAED,QACCA,EAAQA,EAGV01D,EAAStzD,KAAKpC,KAGf8U,EAAK1S,KAAKszD,KAGJ5gD,GAGR49C,EAAU/xD,UAAUg1D,iBAAmB,SAAUtT,GAChD,IAAIuT,EAAUr0D,KAEVovB,EAAS,GAOb,OANapvB,KAAKsW,MAAM5Y,QAAQqmC,UAAUkhB,YAEnC1/C,QAAQ,SAAU+tC,GACxBlkB,EAAOvuB,KAAKwzD,EAAQC,iBAAiBhhB,MAG/BlkB,GAGR+hC,EAAU/xD,UAAUk1D,iBAAmB,SAAUhhB,GAChD,IAAIihB,EAAUv0D,KAEVwwD,EAAYld,EAAMmd,eAElBqD,EAAY,CACfprD,KAAM,QACN3J,IAAKu0C,EAAMv0C,KAaZ,OAVIyxD,EAAU3wD,QACbi0D,EAAUtD,UAAY,GAEtBA,EAAUjrD,QAAQ,SAAUwuD,GAC3BD,EAAUtD,UAAU3vD,KAAK0zD,EAAQD,iBAAiBP,OAGnDD,EAAU/1C,KAAOu1B,EAAMtI,SAAQ,GAGzB8oB,GAGR3C,EAAU/xD,UAAUo1D,WAAa,SAAUte,EAAOlzC,EAAUgkC,GAC3D,IAAIytB,EAAWve,EAAMlzC,GAErB,OAAIyxD,IACCztB,IACHytB,EAAWA,EAASztB,IAGjB9oC,OAAOmC,KAAKo0D,GAAU50D,QAClBG,KAAKuvD,WAAW,CAACkF,IAInB,IAGRtD,EAAU/xD,UAAUs1D,YAAc,SAAU32C,EAAM+iC,EAAQphB,GACzD,IAGIwW,EAHAye,EAAU30D,KAEVovB,EAAS,GAETtY,EAAU9W,KAAKsW,MAAMqf,cAAclF,eAuCvC,OArCIqwB,EAAOsR,gBAEkB,UAAxBtR,EAAOsR,eACVt7C,EAAU9W,KAAKyzD,2BAA2BzzD,KAAKsW,MAAMqf,cAAc7e,SAEnEsY,EAASA,EAAO5d,OAAOxR,KAAKi0D,mBAAmBn9C,KAE/CsY,EAAOvuB,KAAKb,KAAKwzD,sBAAsB18C,KAIrC9W,KAAK8gD,OAAOtpB,cACf0e,EAAQl2C,KAAKsW,MAAM6uC,kBAIhBnlD,KAAKsW,MAAMzO,QAAQkwC,qBACtB/3C,KAAK40D,aAAa72C,EAAMjH,EAASo/B,EAAO4K,EAAQphB,GAI7CohB,EAAOuR,UACVt0C,EAAKxY,QAAQ,SAAUssB,GACtBzC,EAASA,EAAO5d,OAAOmjD,EAAQE,kBAAkBhjC,EAAKivB,EAAQphB,EAAQwW,GAAS,QAG5E4K,EAAOtpB,cACVpI,EAASA,EAAO5d,OAAOxR,KAAKw0D,WAAWte,EAAO,SAG/C9mB,EAASA,EAAO5d,OAAOxR,KAAKuvD,WAAWxxC,EAAM+iC,EAAQphB,IAEjDohB,EAAOtpB,cACVpI,EAASA,EAAO5d,OAAOxR,KAAKw0D,WAAWte,EAAO,aAIzC9mB,GAGR+hC,EAAU/xD,UAAUy1D,kBAAoB,SAAUvhB,EAAOwN,EAAQphB,EAAQo1B,GACxE,IAAIC,EAAU/0D,KAEV8zD,EAAY,GAoBhB,OAlBAA,EAAUjzD,KAAK,CAACyyC,EAAMv0C,MAElBu0C,EAAMkd,UACTld,EAAMkd,UAAUjrD,QAAQ,SAAUwuD,GACjCD,EAAYA,EAAUtiD,OAAOujD,EAAQF,kBAAkBd,EAAUjT,EAAQphB,EAAQo1B,EAAQxhB,EAAMv0C,MAAO+1D,EAAQxhB,EAAMv0C,KAAK+lD,QAAe,QAGrIhE,EAAOtpB,cACVs8B,EAAYA,EAAUtiD,OAAOxR,KAAKw0D,WAAWM,EAASxhB,EAAMv0C,IAAK,SAGlE+0D,EAAYA,EAAUtiD,OAAOxR,KAAKuvD,WAAWjc,EAAMv1B,KAAM+iC,EAAQphB,IAE7DohB,EAAOtpB,cACVs8B,EAAYA,EAAUtiD,OAAOxR,KAAKw0D,WAAWM,EAASxhB,EAAMv0C,IAAK,aAI5D+0D,GAGR3C,EAAU/xD,UAAUw1D,aAAe,SAAU72C,EAAMjH,EAASo/B,EAAO4K,EAAQphB,GAC1E,IAGI/6B,EACAqwD,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EAOCC,EAlBDnjC,EAAOpyB,KAEPqb,EAAU,GAgGd,SAASm6C,EAAWtf,EAAOlzC,EAAUgkC,GACpC,IAAIytB,EAAWve,EAAMlzC,GAEjByxD,IACCztB,IACHytB,EAAWA,EAASztB,IAGjB9oC,OAAOmC,KAAKo0D,GAAU50D,QAEzB41D,EAAY,CAAChB,KAuChB,SAASgB,EAAYtB,GAEpBA,EAAS5uD,QAAQ,SAAUssB,EAAKr0B,GAC/B,IAGImyD,EAHA5qB,EAAQliC,SAASC,cAAc,MAC/BwlC,EAAW6sB,EACXO,GAAS,EAGT7jC,aAAe0S,EAClBorB,EAAU99B,EAAIgV,QAAQ,cAEtB8oB,EAAU99B,EACV6jC,GAAS,GAGV5+C,EAAQvR,QAAQ,SAAUutB,EAAQ6iC,GACjC,IAAIlvD,EAAS5D,SAASC,cAAc,MAChCrE,EAAQq0B,EAAOkH,cAAc21B,GAEjC,YAAyB,IAAVlxD,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACJA,EAAQuH,KAAKE,UAAUzH,GACvB,MAED,IAAK,YACL,IAAK,OACJA,EAAQ,GACR,MAED,QACCA,EAAQA,EAGVgI,EAAOw5B,UAAYxhC,EAEfq0B,EAAOH,WAAWoM,QACrBt4B,EAAOpC,MAAMiwC,UAAYxhB,EAAOH,WAAWoM,OAGpCjoB,EAAQjX,OACXu1D,GACHhjC,EAAKwjC,iBAAiBR,EAAW3uD,EAAQ,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,cAQjJs+B,EAAMngC,YAAY6B,KAGfivD,EACHptB,EAAW4sB,GAEL13D,EAAI,IAAMw3D,IACf1sB,EAAW0sB,GAGRx3D,EAAI,GAAKy3D,IACZ3sB,EAAW2sB,IAIT3sB,GACHlW,EAAKwjC,iBAAiBttB,EAAUvD,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAG3JpgC,EAAKC,YAAYmgC,KAzMnB/kC,KAAK0xD,YAAc7uD,SAASC,cAAc,SAC1CsvB,EAAKwjC,iBAAiB51D,KAAKsW,MAAMvT,QAAS/C,KAAK0xD,YAAa,CAAC,aAAc,cAAe,eAAgB,kBAmGtG5Q,EAAOsR,gBACkB,UAAxBtR,EAAOsR,eACVt7C,EAAQvR,QAAQ,SAAUutB,IAjD5B,SAASohC,EAAiBphC,EAAQm3B,QAEH,IAAnB5uC,EAAQ4uC,KAClB5uC,EAAQ4uC,GAAS,IAGlB5uC,EAAQ4uC,GAAOppD,KAAK,CACnB0H,MAAOuqB,EAAOvqB,MACd/D,MAAOsuB,EAAOtuB,MACdC,OAAQ,EACRyD,WAAY4qB,EAAO09B,UACnBztD,QAAS+vB,EAAOA,OAAOpsB,eAGpBosB,EAAO09B,WACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,KAkCnCiK,CAAiBphC,EAAQ,KA5B3BzX,EAAQ9V,QAAQ,SAAUssB,EAAKoB,GAC9BpB,EAAItsB,QAAQ,SAAUswD,GAChBA,EAAO3tD,WACX2tD,EAAOpxD,OAAS4W,EAAQxb,OAASozB,OA1DrC,SAAyB5X,GAExB,IAAIy6C,EAAiBjzD,SAASC,cAAc,SAE5CuY,EAAQ9V,QAAQ,SAAUuR,GACzB,IAAIy+C,EAAW1yD,SAASC,cAAc,MAEtCgU,EAAQvR,QAAQ,SAAUutB,GACzB,IAAIijC,EAAWlzD,SAASC,cAAc,MAElCgwB,EAAOtuB,MAAQ,IAClBuxD,EAASl8C,QAAUiZ,EAAOtuB,OAGvBsuB,EAAOruB,OAAS,IACnBsxD,EAAS/3C,QAAU8U,EAAOruB,QAG3BsxD,EAAS91B,UAAYnN,EAAOvqB,MAE5B6pB,EAAKwjC,iBAAiB9iC,EAAO/vB,QAASgzD,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAE1KR,EAAS3wD,YAAYmxD,KAGtB3jC,EAAKwjC,iBAAiBxjC,EAAK9b,MAAMqf,cAAcvE,oBAAqBmkC,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAExMO,EAAelxD,YAAY2wD,KAG5BnjC,EAAKs/B,YAAY9sD,YAAYkxD,GAyD5BE,CAAgB36C,KAvGbk6C,EAAW1yD,SAASC,cAAc,MAEtCgU,EAAQvR,QAAQ,SAAUutB,GACzB,IAAIijC,EAAWlzD,SAASC,cAAc,MACtCizD,EAAS91B,UAAYnN,EAAOH,WAAWpqB,MAEvC6pB,EAAKwjC,iBAAiB9iC,EAAOpsB,aAAcqvD,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAE/KR,EAAS3wD,YAAYmxD,KAGtB3jC,EAAKwjC,iBAAiBxjC,EAAK9b,MAAMqf,cAAcvE,oBAAqBmkC,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAExMnjC,EAAKs/B,YAAY9sD,YAAY/B,SAASC,cAAc,SAAS8B,YAAY2wD,MAgG1Ez+C,EAAU9W,KAAKsW,MAAMqf,cAAclF,eAGnC9rB,EAAO9B,SAASC,cAAc,SAG1BF,OAAOqzD,mBACVjB,EAASh1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,kEAC1CmuD,EAAUj1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,mEAC3CouD,EAAUl1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,kCAC3CquD,EAAWn1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,8DAC5CuuD,EAAar1D,KAAKsW,MAAMvT,QAAQU,uBAAuB,mBAAmB,GAEtE0xD,IACHG,EAAaH,EAAS1xD,uBAAuB,kBAC7C2xD,EAAYE,EAAW,GACZA,EAAWA,EAAWz1D,OAAS,KA0GxCihD,EAAOuR,UACVt0C,EAAKxY,QAAQ,SAAU+tC,IA/BxB,SAAS4iB,EAAa5iB,EAAOwhB,GAC5B,IAAIqB,EAAUtzD,SAASC,cAAc,MACjCszD,EAAcvzD,SAASC,cAAc,MAEzCszD,EAAYv8C,QAAU/C,EAAQjX,OAE9Bu2D,EAAYn2B,UAAYqT,EAAMv0C,IAE9Bo3D,EAAQvxD,YAAYwxD,GACpBzxD,EAAKC,YAAYuxD,GAEjB/jC,EAAKwjC,iBAAiBP,EAAYc,EAAS,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAE1J7iB,EAAMkd,UACTld,EAAMkd,UAAUjrD,QAAQ,SAAUwuD,GACjCmC,EAAanC,EAAUe,EAAQxhB,EAAMv0C,MAAO+1D,EAAQxhB,EAAMv0C,KAAK+lD,QAAe,OAG3EhE,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,OAGhC02D,EAAYniB,EAAMv1B,MAEd+iC,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,WAOhCm3D,CAAa5iB,EAAO4C,GAAS,OAG1B4K,EAAOtpB,aACVg+B,EAAWtf,EAAO,OAGnBuf,EAAY13C,GAER+iC,EAAOtpB,aACVg+B,EAAWtf,EAAO,WAIpBl2C,KAAK0xD,YAAY9sD,YAAYD,IAG9BwsD,EAAU/xD,UAAUw2D,iBAAmB,SAAU1lD,EAAME,EAAIlL,GAE1D,IAAImxD,EAAS,CACZC,mBAAoB,kBACpB/pC,MAAS,YACTgqC,cAAe,aACfC,cAAe,aACfC,YAAa,WACbC,aAAc,YACdC,cAAe,aACfC,eAAgB,cAChBC,gBAAiB,gBAGlB,GAAIj0D,OAAOqzD,iBAAkB,CAC5B,IAAIa,EAAYl0D,OAAOqzD,iBAAiB/lD,GAExChL,EAAMK,QAAQ,SAAUgT,GACvBnI,EAAG/L,MAAMgyD,EAAO99C,IAASu+C,EAAUzxD,iBAAiBkT,OAOvD44C,EAAU/xD,UAAUk0D,cAAgB,CACnCyD,cAAe,SAAuBjW,EAAQphB,GAC7C,OAAOA,GAERphB,SAAU,SAAkBwiC,EAAQphB,GACnC,IAAI3hB,EAAO,GAUX,OARI/d,KAAKsW,MAAMob,UAAU,aAAa,KACrC3T,EAAO/d,KAAKsW,MAAM5Y,QAAQooC,UAAUue,mBAGjCvD,EAAOuR,WACVxwD,QAAQ+0B,KAAK,uEAGP52B,KAAK00D,YAAY32C,EAAM+iC,EAAQphB,IAEvCppB,MAAO,SAAewqC,EAAQphB,GAK7B,OAJIohB,EAAOuR,WACVxwD,QAAQ+0B,KAAK,sEAGP52B,KAAK00D,YAAY10D,KAAKsW,MAAMka,WAAW2E,gBAAiB2rB,EAAQphB,IAExE1K,OAAQ,SAAgB8rB,EAAQphB,GAC/B,IAAI3hB,EAQJ,OALCA,EADG+iC,EAAOuR,UACHryD,KAAKo0D,iBAAiBtT,GAEtB9gD,KAAKsW,MAAMka,WAAW2E,eAAc,GAGrCn1B,KAAK00D,YAAY32C,EAAM+iC,EAAQphB,KAIxCyxB,EAAU/xD,UAAUm0D,eAAiB,CACpCyD,IAAK,SAAazjD,EAAMmsB,GACvB,OAAOnsB,GAER+C,MAAO,SAAe/C,EAAMmsB,GAC3B,IAAItQ,EAAS,GAmBb,OAjBA7b,EAAKhO,QAAQ,SAAUssB,GACtBA,EAAItsB,QAAQ,SAAU9G,QACD,IAATA,IACVA,EAAQ,KAGTA,EAAQ,MAAOA,EAAyC,GAAKA,EAAMshB,YAEzDmS,MAAM,WAEfzzB,EAAQ,KADRA,EAAQA,EAAMsR,MAAM,KAAK9O,KAAK,OACR,OAIxBmuB,EAAOvuB,KAAKgxB,EAAI5wB,KAAK,SAGfmuB,EAAOnuB,KAAK,QAIrBkwD,EAAU/xD,UAAUszD,aAAe,CAClCp8C,MAAO,SAAewhC,GACrB,IAAIvkC,EAAO,GAEP0jD,GAAoB,EACpBngD,EAAU9W,KAAKsW,MAAMqf,cAAc7e,QACnCogD,EAAY,GACZn5C,EAAO,GASX,OANA+5B,EAAYA,EAAU/nC,MAAM,OAElBxK,QAAQ,SAAUssB,GAC3Bte,EAAK1S,KAAKgxB,EAAI9hB,MAAM,YAGjBwD,EAAK1T,QAA4B,IAAhB0T,EAAK1T,QAAgB0T,EAAK,GAAG1T,OAAS,MAChD,EAGV0T,EAAK,GAAGhO,QAAQ,SAAU9G,GACzB,IAAIq0B,EAAShc,EAAQoZ,KAAK,SAAU4C,GACnC,OAAOr0B,GAASq0B,EAAOH,WAAWpqB,OAAS9J,EAAM+tD,QAAU15B,EAAOH,WAAWpqB,MAAMikD,SAAW/tD,EAAM+tD,SAGjG15B,EACHokC,EAAUr2D,KAAKiyB,GAEfmkC,GAAoB,IAKjBA,IACJA,GAAoB,EACpBC,EAAY,GAEZ3jD,EAAK,GAAGhO,QAAQ,SAAU9G,GACzB,IAAIq0B,EAAShc,EAAQoZ,KAAK,SAAU4C,GACnC,OAAOr0B,GAASq0B,EAAOd,OAASvzB,EAAM+tD,QAAU15B,EAAOd,MAAMw6B,SAAW/tD,EAAM+tD,SAG3E15B,EACHokC,EAAUr2D,KAAKiyB,GAEfmkC,GAAoB,IAIjBA,IACJC,EAAYl3D,KAAKsW,MAAMqf,cAAclF,iBAKnCwmC,GACH1jD,EAAK4jD,QAGN5jD,EAAKhO,QAAQ,SAAU+hC,GACtB,IAAIzV,EAAM,GAEVyV,EAAK/hC,QAAQ,SAAU9G,EAAOjB,GACzB05D,EAAU15D,KACbq0B,EAAIqlC,EAAU15D,GAAGw0B,OAASvzB,KAI5Bsf,EAAKld,KAAKgxB,KAGJ9T,KAOVozC,EAAU/xD,UAAUozD,aAAe,CAClC/vD,QAAS,SAAiBsb,GACzB,OAAO/d,KAAKsW,MAAMoB,QAAQqG,IAE3Bma,OAAQ,SAAgBna,GACvB,OAAO/d,KAAKsW,MAAM0rC,gBAAgBjkC,IAEnCq5C,OAAQ,SAAgBr5C,GACvB,OAAO/d,KAAKsW,MAAMwrC,QAAQ/jC,KAI5BlI,EAAUzW,UAAUknD,eAAe,YAAa6K,GAEhD,IAAIkG,EAAW,SAAkB/gD,GAChCtW,KAAKsW,MAAQA,EACbtW,KAAKs3D,OAAS,GACdt3D,KAAKgyB,MAAQ,GACbhyB,KAAKu3D,WAAa,KAClBv3D,KAAKw3D,SAAW,KAChBx3D,KAAKy3D,SAAW,KAChBz3D,KAAK03D,cAAe,EAEpB13D,KAAK23D,UAAY,aAEjB33D,KAAK0mC,aAAe,GAGrB2wB,EAASj4D,UAAU6xB,WAAa,WAC/B,IAAI2mC,EAAU,KACVC,EAAW73D,KAAKsW,MAAMqf,cAAcjB,yBACpC7sB,EAAU7H,KAAKsW,MAAMzO,QAkDzB,OAhDA7H,KAAKgyB,MAAQnqB,EAAQmxC,mBACrBh5C,KAAKs3D,OAASzvD,EAAQkxC,oBACtB/4C,KAAK03D,aAAe7vD,EAAQgxC,yBAA0Bgf,GAAWA,EAAS7lC,MAEtEnqB,EAAQixC,yBAE2B,IAAlCjxC,EAAQixC,uBACX94C,KAAKy3D,SAAW50D,SAASC,cAAc,OACvC9C,KAAKy3D,SAAS1mC,UAAUvc,IAAI,+BAEiB,iBAAlC3M,EAAQixC,wBAClB8e,EAAU/0D,SAASC,cAAc,QACzBm9B,UAAYp4B,EAAQixC,sBAC5B94C,KAAKy3D,SAAWG,EAAQ/mC,YAExB7wB,KAAKy3D,SAAW5vD,EAAQixC,uBAKvBjxC,EAAQoxC,wBACoC,iBAApCpxC,EAAQoxC,0BAClB2e,EAAU/0D,SAASC,cAAc,QACzBm9B,UAAYp4B,EAAQoxC,wBAC5Bj5C,KAAKu3D,WAAaK,EAAQ/mC,YAE1B7wB,KAAKu3D,WAAa1vD,EAAQoxC,yBAG3Bj5C,KAAKu3D,WAAa10D,SAASC,cAAc,OACzC9C,KAAKu3D,WAAWxmC,UAAUvc,IAAI,+BAC9BxU,KAAKu3D,WAAWt3B,UAAY,4DAGzBp4B,EAAQqxC,sBACkC,iBAAlCrxC,EAAQqxC,wBAClB0e,EAAU/0D,SAASC,cAAc,QACzBm9B,UAAYp4B,EAAQqxC,sBAC5Bl5C,KAAKw3D,SAAWI,EAAQ/mC,YAExB7wB,KAAKw3D,SAAW3vD,EAAQqxC,uBAGzBl5C,KAAKw3D,SAAW30D,SAASC,cAAc,OACvC9C,KAAKw3D,SAASzmC,UAAUvc,IAAI,+BAC5BxU,KAAKw3D,SAASv3B,UAAY,0DAGnB5vB,EAAQxI,EAAQsxC,wBACvB,IAAK,UACJn5C,KAAK23D,UAAY,SAAU9lC,EAAKoB,GAC/B,OAAOprB,EAAQsxC,uBAEhB,MAED,IAAK,WACJn5C,KAAK23D,UAAY9vD,EAAQsxC,sBACzB,MAED,QACCn5C,KAAK23D,UAAY,SAAU9lC,EAAKoB,GAC/B,OAAOprB,EAAQsxC,sBAAsBlmB,MAMzCokC,EAASj4D,UAAUwxC,cAAgB,SAAU/e,GAC5C,IAAIimC,EAAajmC,EAAIgV,UAAU7mC,KAAKgyB,OAChCjxB,EAAUD,MAAMC,QAAQ+2D,GAExB5vD,EAAWnH,IAAYA,GAAuF,iBAArD,IAAf+2D,EAA6B,YAAcznD,EAAQynD,KAA4C,OAAfA,EAE9HjmC,EAAIn0B,QAAQutC,SAAW,CACtBhY,MAAO,EACP9V,OAAMjV,GAAWlI,KAAK23D,UAAU9lC,EAAIwD,eAAgB,GACpD0iC,WAAW,EACXN,UAAU,EACV5+B,QAAQ,EACR3wB,SAAUA,IAIZmvD,EAASj4D,UAAUqyC,UAAY,SAAU5f,GACxC,IACIf,GADO9wB,KAAK03D,aAAe7lC,EAAI6c,QAAQ1uC,KAAK03D,cAAgB7lC,EAAIwG,WAAW,IACjE3xB,aACVo6C,EAASjvB,EAAIn0B,QAAQutC,SAErB6V,EAAO2W,UACV3W,EAAO2W,SAASnkC,WAAWvuB,YAAY+7C,EAAO2W,UAG/Cz3D,KAAKg4D,uBAAuBnmC,EAAKf,GAE7BgwB,EAAO7tB,QACNjzB,KAAKy3D,UACR3W,EAAO2W,SAAWz3D,KAAKy3D,SAASQ,WAAU,GAC1CnnC,EAAGF,aAAakwB,EAAO2W,SAAU3mC,EAAGD,YACpCiwB,EAAO2W,SAASpzD,MAAMotB,YAAcqvB,EAAO2W,SAAS5yD,YAAci8C,EAAO2W,SAASpzD,MAAM6zD,cAAgBpX,EAAO7tB,MAAQ,GAAK6tB,EAAO7tB,MAAQjzB,KAAKs3D,OAAS,MAEzJxmC,EAAGzsB,MAAM8zD,YAAc7jD,SAAS1R,OAAOqzD,iBAAiBnlC,EAAI,MAAMzrB,iBAAiB,iBAAmBy7C,EAAO7tB,MAAQjzB,KAAKs3D,OAAS,OAKtID,EAASj4D,UAAU44D,uBAAyB,SAAUnmC,EAAKf,GAC1D,IAAIsnC,EAAUp4D,KAEV8gD,EAASjvB,EAAIn0B,QAAQutC,SAErBotB,GADAvnC,EAAKA,GAAMe,EAAIwG,WAAW,GAAG3xB,aAChBo6C,EAAOiX,YAEA,IAApBjX,EAAO54C,WAEN44C,EAAO3jC,MACV2jC,EAAOiX,UAAY/3D,KAAKu3D,WAAWU,WAAU,GAC7CnX,EAAOiX,UAAUv6B,iBAAiB,QAAS,SAAUp7B,GACpDA,EAAE+K,kBACFirD,EAAQtoB,YAAYje,OAGrBivB,EAAOiX,UAAY/3D,KAAKw3D,SAASS,WAAU,GAC3CnX,EAAOiX,UAAUv6B,iBAAiB,QAAS,SAAUp7B,GACpDA,EAAE+K,kBACFirD,EAAQpoB,UAAUne,MAIpBivB,EAAOiX,UAAUv6B,iBAAiB,YAAa,SAAUp7B,GACxDA,EAAE+K,oBAGCkrD,GAAcA,EAAW/kC,aAAexC,EAC3CunC,EAAW/kC,WAAWglC,aAAaxX,EAAOiX,UAAWM,GAErDvnC,EAAGF,aAAakwB,EAAOiX,UAAWjnC,EAAGD,cAKxCwmC,EAASj4D,UAAUyrC,gBAAkB,SAAU5X,GAC9CjzB,KAAK0mC,aAAezT,GAGrBokC,EAASj4D,UAAUwrC,gBAAkB,WACpC,OAAO5qC,KAAK0mC,cAGb2wB,EAASj4D,UAAU4rC,QAAU,SAAUjtB,GACtC,IAAIw6C,EAAUv4D,KAEVovB,EAAS,GAqBb,OAnBArR,EAAKxY,QAAQ,SAAUssB,EAAKr0B,GAC3B,IAAIsjD,EAEJ1xB,EAAOvuB,KAAKgxB,GAERA,aAAeyS,KAElBwc,EAASjvB,EAAIn0B,QAAQutC,SAAS/iC,UAElB+qB,QAA6B,IAApB6tB,EAAO54C,UAChBqwD,EAAQC,YAAY3mC,GAEtBtsB,QAAQ,SAAUkzD,GAC1BrpC,EAAOvuB,KAAK43D,QAMTrpC,GAGRioC,EAASj4D,UAAUo5D,YAAc,SAAU3mC,GAC1C,IAAI6mC,EAAU14D,KAEV8gD,EAASjvB,EAAIn0B,QAAQutC,SACrB/iC,EAAW,GACXknB,EAAS,GA4Bb,OA1BwB,IAApB0xB,EAAO54C,UAAsB44C,EAAO3jC,OAClCrc,MAAMC,QAAQ+/C,EAAO54C,YACzB44C,EAAO54C,SAAWlI,KAAK24D,iBAAiB9mC,IAIxC3pB,EADGlI,KAAKsW,MAAMob,UAAU,UACb1xB,KAAKsW,MAAM5Y,QAAQsR,OAAOA,OAAO8xC,EAAO54C,UAExC44C,EAAO54C,SAGflI,KAAKsW,MAAMob,UAAU,SACxB1xB,KAAKsW,MAAM5Y,QAAQ4gC,KAAKA,KAAKp2B,GAG9BA,EAAS3C,QAAQ,SAAUkzD,GAC1BrpC,EAAOvuB,KAAK43D,GAEMC,EAAQF,YAAYC,GAE1BlzD,QAAQ,SAAUqzD,GAC7BxpC,EAAOvuB,KAAK+3D,QAKRxpC,GAGRioC,EAASj4D,UAAUu5D,iBAAmB,SAAU9mC,GAC/C,IAAIgnC,EAAU74D,KAEVkI,EAAW,GAEX4vD,EAAajmC,EAAIgV,UAAU7mC,KAAKgyB,OAgBpC,OAdKlxB,MAAMC,QAAQ+2D,KAClBA,EAAa,CAACA,IAGfA,EAAWvyD,QAAQ,SAAUuzD,GAC5B,IAAIC,EAAW,IAAIz0B,EAAIw0B,GAAa,GAAID,EAAQviD,MAAMka,YACtDuoC,EAASr7D,QAAQutC,SAAShY,MAAQpB,EAAIn0B,QAAQutC,SAAShY,MAAQ,EAC/D8lC,EAASr7D,QAAQutC,SAASpS,OAAShH,EAC/BknC,EAASr7D,QAAQutC,SAAS/iC,WAC7B6wD,EAASr7D,QAAQutC,SAAS9tB,KAAO07C,EAAQlB,UAAUoB,EAAS1jC,eAAgB0jC,EAASr7D,QAAQutC,SAAShY,QAEvG/qB,EAASrH,KAAKk4D,KAGR7wD,GAGRmvD,EAASj4D,UAAU4wC,UAAY,SAAUne,EAAKiP,GAC7C,IAAIggB,EAASjvB,EAAIn0B,QAAQutC,UAED,IAApB6V,EAAO54C,WACV44C,EAAO3jC,MAAO,EAEd0U,EAAI+F,eAEJ53B,KAAKsW,MAAMka,WAAW0V,kBAAkB,QAAQ,GAAO,GAEvDlmC,KAAKsW,MAAMzO,QAAQuxC,oBAAoBvnB,EAAIwD,eAAgBxD,EAAIn0B,QAAQutC,SAAShY,SAIlFokC,EAASj4D,UAAU0wC,YAAc,SAAUje,GAC1C,IAAIivB,EAASjvB,EAAIn0B,QAAQutC,UAED,IAApB6V,EAAO54C,WACV44C,EAAO3jC,MAAO,EAEd0U,EAAI+F,eAEJ53B,KAAKsW,MAAMka,WAAW0V,kBAAkB,QAAQ,GAAO,GAEvDlmC,KAAKsW,MAAMzO,QAAQwxC,qBAAqBxnB,EAAIwD,eAAgBxD,EAAIn0B,QAAQutC,SAAShY,SAInFokC,EAASj4D,UAAUkwC,UAAY,SAAUzd,GACxC,IAAIivB,EAASjvB,EAAIn0B,QAAQutC,UAED,IAApB6V,EAAO54C,WACN44C,EAAO3jC,KACVnd,KAAK8vC,YAAYje,GAEjB7xB,KAAKgwC,UAAUne,KAKlBwlC,EAASj4D,UAAU8wC,cAAgB,SAAUre,GAC5C,QAAOA,EAAIn0B,QAAQutC,SAASpS,QAAShH,EAAIn0B,QAAQutC,SAASpS,OAAOxD,gBAGlEgiC,EAASj4D,UAAU+wC,gBAAkB,SAAUte,GAC9C,IAAIivB,EAASjvB,EAAIn0B,QAAQutC,SACrB7b,EAAS,GAeb,OAbI0xB,EAAO54C,WAELpH,MAAMC,QAAQ+/C,EAAO54C,YACzB44C,EAAO54C,SAAWlI,KAAK24D,iBAAiB9mC,IAGzCivB,EAAO54C,SAAS3C,QAAQ,SAAUwzD,GAC7BA,aAAoBz0B,GACvBlV,EAAOvuB,KAAKk4D,EAAS1jC,mBAKjBjG,GAGRioC,EAASj4D,UAAU45D,gBAAkB,SAAU1yD,GACzCA,EAAKurB,IAAIqE,MAAM51B,QAAQgG,KACgB,IAAvCA,EAAKurB,IAAIn0B,QAAQutC,SAAS/iC,UAC7B5B,EAAKurB,IAAI+F,gBAKZy/B,EAASj4D,UAAUozC,cAAgB,WAClC,OAAOxyC,KAAKgyB,OAGbnc,EAAUzW,UAAUknD,eAAe,WAAY+Q,GAC/C,IAAI4B,EAAW,SAAkB3iD,GAChCtW,KAAKsW,MAAQA,EACbtW,KAAKk5D,OAAS,GACdl5D,KAAKywB,eAAiB,GACtBzwB,KAAK0wB,eAAiB,GACtB1wB,KAAK8gD,OAAS,IAIfmY,EAAS75D,UAAUqb,SAAW,SAAU/R,EAAMs9C,EAAUn+C,EAASsxD,GAChE,IAAI/mC,EAAOpyB,KACPo5D,GAAe,EACnBp5D,KAAK4xD,gBAcc,mBAARlpD,EACV0wD,EAAe1wD,EAEX0pB,EAAKinC,YAAY3wD,GACpB0wD,EAAehnC,EAAKinC,YAAY3wD,GAEhC7G,QAAQ+0B,KAAK,iDAAkDluB,GAIjE1I,KAAKs5D,iBAEDF,GACHA,EAAaz7D,KAAKqC,KAAMoyB,EAAKmnC,qBAAsBnnC,EAAKonC,cAAe3xD,GAAW,GAzBnF,SAAmB0L,EAAMkmD,GACpBN,GACuB,IAAtBA,EACH/mC,EAAKsnC,gBAAgBnmD,EAAMkmD,EAAM/wD,EAAMs9C,GAAU,GAEjDmT,EAAkB5lD,GAGnB6e,EAAKsnC,gBAAgBnmD,EAAMkmD,EAAM/wD,EAAMs9C,IAiByDhmD,KAAK8gD,SAIxGmY,EAAS75D,UAAUwyD,cAAgB,WAClC,IAAI9Q,EAAS,CACZ6Y,cAAc,EACdtH,WAAW,EACX76B,aAAa,GAGd,GAAIx3B,KAAKsW,MAAMzO,QAAQ+wC,eACtB,IAAK,IAAI75C,KAAOiB,KAAKsW,MAAMzO,QAAQ+wC,eAClCkI,EAAO/hD,GAAOiB,KAAKsW,MAAMzO,QAAQ+wC,eAAe75C,GAI9C+hD,EAAOuR,WAAaryD,KAAKsW,MAAMzO,QAAQi8B,SAAW9jC,KAAKsW,MAAMob,UAAU,eAC1E1xB,KAAK8gD,OAAOuR,WAAY,GAGrBvR,EAAO6Y,cAAgB35D,KAAKsW,MAAMqf,cAAc7e,QAAQjX,QAAUG,KAAKsW,MAAMqf,cAAclF,eAAe5wB,SAC7GG,KAAK8gD,OAAO6Y,cAAe,GAGxB7Y,EAAOtpB,aAAex3B,KAAKsW,MAAMob,UAAU,iBAC9C1xB,KAAK8gD,OAAOtpB,aAAc,IAI5ByhC,EAAS75D,UAAUk6D,eAAiB,WACnC,IAAIlnC,EAAOpyB,KAEXoyB,EAAK3B,eAAiB,GACtB2B,EAAK1B,eAAiB,GAEtB0B,EAAK9b,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,GAErDA,EAAOd,QAAwC,IAA/Bc,EAAOH,WAAWlY,WAAuBqY,EAAO6B,UAAY7B,EAAO6B,SAAW7B,EAAOH,WAAWlY,YACnH2X,EAAK3B,eAAe5vB,KAAKiyB,GACzBV,EAAK1B,eAAeoC,EAAOd,OAASc,MAKvCmmC,EAAS75D,UAAUm6D,mBAAqB,WACvC,IAAInnC,EAAOpyB,KACP45D,EAAuB,GAmB3B,OAjBI55D,KAAK8gD,OAAO6Y,aACfvnC,EAAK9b,MAAMqf,cAAc7e,QAAQvR,QAAQ,SAAUutB,GAClD,IAAI6gC,EAAUvhC,EAAKwhC,mBAAmB9gC,GAElC6gC,GACHiG,EAAqB/4D,KAAK8yD,KAI5BvhC,EAAK3B,eAAelrB,QAAQ,SAAUutB,IACb,IAApBA,EAAOrY,UAEVm/C,EAAqB/4D,KAAKuxB,EAAKynC,kBAAkB/mC,MAK7C8mC,GAGRX,EAAS75D,UAAUw0D,mBAAqB,SAAU9gC,GACjD,IAAIgnC,EAAU95D,KAEVwwD,EAAY19B,EAAOhc,QACnBijD,EAAW,EACXC,EAAkBh6D,KAAK65D,kBAAkB/mC,GACzCghC,EAAY,CACfprD,KAAM,QACNH,MAAOyxD,EAAgBzxD,MACvB0xD,MAAO,GAGR,GAAIzJ,EAAU3wD,QAmBb,GAlBAi0D,EAAUtD,UAAY,GACtBsD,EAAUtvD,MAAQ,EAElBgsD,EAAUjrD,QAAQ,SAAUwuD,GAC3B,IAAIC,EAAe8F,EAAQlG,mBAAmBG,GAE1CC,EAAaiG,MAAQF,IACxBA,EAAW/F,EAAaiG,OAGrBjG,IACHF,EAAUtvD,OAASwvD,EAAaxvD,MAChCsvD,EAAUtD,UAAU3vD,KAAKmzD,MAI3BF,EAAUmG,OAASF,GAEdjG,EAAUtvD,MACd,OAAO,MAEF,CACN,IAAIsuB,EAAOd,QAAwC,IAA/Bc,EAAOH,WAAWlY,YAAuBqY,EAAO6B,UAAY7B,EAAO6B,SAAW7B,EAAOH,WAAWlY,UAInH,OAAO,EAHPq5C,EAAUtvD,MAAQ,EAClBsvD,EAAUnhC,WAAaqnC,EAMzB,OAAOlG,GAGRmF,EAAS75D,UAAUy6D,kBAAoB,SAAU/mC,GAChD,IAAIR,EAAM,GAEV,IAAK,IAAIvzB,KAAO+zB,EAAOH,WACtBL,EAAIvzB,GAAO+zB,EAAOH,WAAW5zB,GAO9B,YAJ8C,IAAnC+zB,EAAOH,WAAWunC,gBAC5B5nC,EAAI/pB,MAAQuqB,EAAOH,WAAWunC,eAGxB5nC,GAGR2mC,EAAS75D,UAAUo6D,YAAc,WAChC,IAAIW,EAAUn6D,KAGVuT,EAAO,GAEP2iC,EAAQ,GA0BZ,OAxBIl2C,KAAK8gD,OAAOuR,UACNryD,KAAKsW,MAAM5Y,QAAQqmC,UAAUkhB,YAE/B1/C,QAAQ,SAAU+tC,GACxB//B,EAAK1S,KAAKs5D,EAAQ7F,iBAAiBhhB,MAGpC//B,EAZUvT,KAYEsW,MAAMka,WAAWqW,SAAQ,EAAM,YAGxC7mC,KAAK8gD,OAAOtpB,cACf0e,EAAQl2C,KAAKsW,MAAM6uC,iBAEnB5xC,EAAO,CACN2iC,MAAOA,EACP3iC,KAAMA,IAK+C,mBAzB5CvT,KAyBKsW,MAAMzO,QAAQ2wC,wBAC7BjlC,EA1BUvT,KA0BEsW,MAAMzO,QAAQ2wC,sBAAsBjlC,IAG1CA,GAGR0lD,EAAS75D,UAAUk1D,iBAAmB,SAAUhhB,GAC/C,IAAI8mB,EAAUp6D,KAEVwwD,EAAYld,EAAMmd,eAElBqD,EAAY,CACfprD,KAAM,QACN3J,IAAKu0C,EAAMv0C,KAaZ,OAVIyxD,EAAU3wD,QACbi0D,EAAUtD,UAAY,GAEtBA,EAAUjrD,QAAQ,SAAUwuD,GAC3BD,EAAUtD,UAAU3vD,KAAKu5D,EAAQ9F,iBAAiBP,OAGnDD,EAAU/1C,KAAOu1B,EAAMzM,SAAQ,EAAM,YAG/BitB,GAGRmF,EAAS75D,UAAUs6D,gBAAkB,SAAUnmD,EAAMkmD,EAAM/wD,EAAMs9C,EAAUqU,GAC1E,IAAIt3D,EAAUF,SAASC,cAAc,KACjC41C,EAAO,IAAI4hB,KAAK,CAAC/mD,GAAO,CAAE7K,KAAM+wD,IAChCzT,EAAWA,GAAY,cAAgC,mBAATt9C,EAAsB,MAAQA,IAEhFgwC,EAAO14C,KAAKsW,MAAMzO,QAAQ4wC,cAAc96C,KAAKqC,KAAKsW,MAAO/C,EAAMmlC,MAI1D2hB,EACHz3D,OAAOua,KAAKva,OAAO23D,IAAIC,gBAAgB9hB,IAEnCsH,UAAUya,iBACbza,UAAUya,iBAAiB/hB,EAAMsN,IAEjCjjD,EAAQ64B,aAAa,OAAQh5B,OAAO23D,IAAIC,gBAAgB9hB,IAGxD31C,EAAQ64B,aAAa,WAAYoqB,GAGjCjjD,EAAQsB,MAAMqoB,QAAU,OACxB7pB,SAAS8B,KAAKC,YAAY7B,GAC1BA,EAAQkK,QAGRpK,SAAS8B,KAAKI,YAAYhC,IAIxB/C,KAAKsW,MAAMzO,QAAQ8wC,kBACtB34C,KAAKsW,MAAMzO,QAAQ8wC,qBAMtBsgB,EAAS75D,UAAU46B,cAAgB,SAAUhI,EAAOze,GACnD,IAAIuf,EAAS9yB,KAAK0wB,eAAesB,GAEjC,QAAIc,GACIA,EAAOkH,cAAczmB,IAM9B0lD,EAAS75D,UAAUisD,cAAgB,SAAU/0C,EAAOuC,EAAQtF,GAC3D,OAAQsF,GACP,IAAK,YACJ7Y,KAAKya,SAASlH,EAAK7K,KAAM,GAAI6K,EAAK1L,QAAS0L,EAAK2Q,aAMnD+0C,EAAS75D,UAAUi6D,YAAc,CAChCqB,IAAK,SAAa5jD,EAASvD,EAAM1L,EAAS8yD,EAAiB7Z,GAC1D,IAII8Z,EACAxrC,EALAgD,EAAOpyB,KACP66D,EAAS,GACT3B,EAAS,GACT4B,EAAYjzD,GAAWA,EAAQizD,UAAYjzD,EAAQizD,UAAY,IAoCnE,SAASC,EAAUxnD,GAElBA,EAAKhO,QAAQ,SAAUssB,GACtB,IAAI89B,EAAU,GAEduJ,EAAO3zD,QAAQ,SAAUysB,GACxB,IAAIvzB,EAAQ2zB,EAAK4H,cAAchI,EAAOH,GAEtC,YAAyB,IAAVpzB,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACJA,EAAQuH,KAAKE,UAAUzH,GACvB,MAED,IAAK,YACL,IAAK,OACJA,EAAQ,GACR,MAED,QACCA,EAAQA,EAIVkxD,EAAQ9uD,KAAK,IAAM6O,OAAOjR,GAAOsR,MAAM,KAAK9O,KAAK,MAAQ,OAG1D25D,EAAa/5D,KAAK8uD,EAAQ1uD,KAAK65D,MAvC7Bha,EAAO6Y,cACV93D,QAAQ+0B,KAAK,kEAEb9f,EAAQvR,QAAQ,SAAUutB,IAd3B,SAASohC,EAAiBphC,EAAQm3B,GAC7Bn3B,EAAO09B,UACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,MAGpC4Q,EAAOh6D,KAAK,IAAM6O,OAAOojB,EAAOvqB,OAAOwH,MAAM,KAAK9O,KAAK,MAAQ,KAC/Di4D,EAAOr4D,KAAKiyB,EAAOH,WAAWX,QAQ9BkiC,CAAiBphC,EAAQ,MArB1Bhc,EAAQvR,QAAQ,SAAUutB,GACzB+nC,EAAOh6D,KAAK,IAAM6O,OAAOojB,EAAOvqB,OAAOwH,MAAM,KAAK9O,KAAK,MAAQ,KAC/Di4D,EAAOr4D,KAAKiyB,EAAOd,SA0BrB4oC,EAAe,CAACC,EAAO55D,KAAK65D,IA0CxBha,EAAOtpB,cACV31B,QAAQ+0B,KAAK,wEACbrjB,EAAOA,EAAKA,MAGTutC,EAAOuR,WACVxwD,QAAQ+0B,KAAK,+DAEbrjB,EAAKhO,QAAQ,SAAU+tC,IAlBxB,SAAS0nB,EAAW1nB,GACfA,EAAMkd,UACTld,EAAMkd,UAAUjrD,QAAQ,SAAUwuD,GACjCiH,EAAWjH,KAGZgH,EAAUznB,EAAMv1B,MAahBi9C,CAAW1nB,MAGZynB,EAAUxnD,GAGX6b,EAASwrC,EAAa35D,KAAK,MAEvB4G,EAAQozD,MACX7rC,EAAS,SAAWA,GAGrBurC,EAAgBvrC,EAAQ,aAGzB6+B,KAAM,SAAcn3C,EAASvD,EAAM1L,EAAS8yD,EAAiB7Z,GAGxDA,EAAOtpB,cACV31B,QAAQ+0B,KAAK,wEACbrjB,EAAOA,EAAKA,MAKbonD,EAFe30D,KAAKE,UAAUqN,EAAM,KAAM,MAEZ,qBAG/B2nD,IAAK,SAAapkD,EAASvD,EAAM1L,EAAS8yD,EAAiB7Z,GAC1D,IAAI1uB,EAAOpyB,KACPk5D,EAAS,GACTrD,EAAS,GACTlxD,EAAO,GACPuxC,EAAQ,GACRilB,EAAc,EAEdC,EAAkB,GAClBC,EAAiBxzD,EAAQwzD,gBAAkB,CAC9Cn4C,UAAW,OACXF,SAAU,GACV3J,YAAa,EACbiiD,UAAW,KAERC,EAAgB1zD,EAAQ0zD,eAAiB,CAC5Cr4C,UAAW,OACXF,SAAU,GACV3J,YAAa,EACbiiD,UAAW,KAERE,EAAc3zD,EAAQ4zD,OAAS,GAC/BlzD,EAAQV,GAAWA,EAAQU,MAAQV,EAAQU,MAAQ,GA8DvD,GA5DIu4C,EAAOtpB,cACV0e,EAAQ3iC,EAAK2iC,MACb3iC,EAAOA,EAAKA,MAGRioD,EAAY10C,cAChB00C,EAAY10C,YAAcjf,EAAQif,aAAe,aAG7C00C,EAAYE,OAChBF,EAAYE,KAAO,MAkDhB5a,EAAO6Y,aAAc,CACxB7iD,EAAQvR,QAAQ,SAAUutB,GACrBA,EAAOmnC,MAAQkB,IAClBA,EAAcroC,EAAOmnC,SAIvB,IAAK,IAAIz8D,EAAI,EAAGA,EAAI29D,EAAa39D,IAChCq4D,EAAOh1D,KAAK,IAGbiW,EAAQvR,QAAQ,SAAUutB,IA9C3B,SAASohC,EAAiBphC,EAAQm3B,GACjC,IAAIpwC,EAAUiZ,EAAOtuB,MACjBwZ,EAAU,EACV+T,EAAM,CACThY,QAAS+Y,EAAOvqB,OAAS,IAoB1B,GAjBIuqB,EAAO09B,WACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,KAEpCjsC,EAAU,IAEVk7C,EAAOr4D,KAAKiyB,EAAOH,WAAWX,OAC9BhU,EAAUm9C,EAAclR,GAGzBl4B,EAAI/T,QAAUA,EAGd63C,EAAO5L,GAAOppD,KAAKkxB,GAEnBlY,IAEImE,EAAU,EACb,IAAK,IAAIxgB,EAAIysD,EAAQ,EAAGzsD,EAAI29D,EAAa39D,IACxCq4D,EAAOr4D,GAAGqD,KAAK,IAIjB,IAASrD,EAAI,EAAGA,EAAIqc,EAASrc,IAC5Bq4D,EAAO5L,GAAOppD,KAAK,IAgBnBqzD,CAAiBphC,EAAQ,UAzD1Bhc,EAAQvR,QAAQ,SAAUutB,GACrBA,EAAOd,QACV6jC,EAAOh1D,KAAKiyB,EAAOvqB,OAAS,IAC5B2wD,EAAOr4D,KAAKiyB,EAAOd,UAIrB6jC,EAAS,CAACA,GAwDX,SAAS8F,EAAWl9D,GACnB,YAAyB,IAAVA,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACJA,EAAQuH,KAAKE,UAAUzH,GACvB,MAED,IAAK,YACL,IAAK,OACJA,EAAQ,GACR,MAED,QACCA,EAAQA,EAGV,OAAOA,EAGR,SAASs8D,EAAUxnD,GAElBA,EAAKhO,QAAQ,SAAUssB,GACtBltB,EAAK9D,KAAK+6D,EAAS/pC,MAIrB,SAAS+pC,EAAS/pC,EAAKgqC,GACtB,IAAIlM,EAAU,GAgBd,OAdAuJ,EAAO3zD,QAAQ,SAAUysB,GACxB,IAAIvzB,EAAQ2zB,EAAK4H,cAAchI,EAAOH,GACtCpzB,EAAQk9D,EAAWl9D,GAEfo9D,EACHlM,EAAQ9uD,KAAK,CACZkZ,QAAStb,EACTo9D,OAAQA,IAGTlM,EAAQ9uD,KAAKpC,KAIRkxD,EA4BR,SAAS6F,EAAWtf,EAAOlzC,EAAUgkC,GACpC,IAAIytB,EAAWve,EAAMlzC,GAEjByxD,IACCztB,IACHytB,EAAWA,EAASztB,IAGjB9oC,OAAOmC,KAAKo0D,GAAU50D,QACzB8E,EAAK9D,KAAK+6D,EAASnH,EAAU8G,KAK5Bza,EAAOuR,UACV9+C,EAAKhO,QAAQ,SAAU+tC,IAxCxB,SAAS0nB,EAAW1nB,EAAOwhB,GAC1B,IAAIhB,EAAY,GAEhBA,EAAUjzD,KAAK,CAAEkZ,QAAS4hD,EAAWroB,EAAMv0C,KAAM8a,QAASq/C,EAAOr5D,OAAQg8D,OAAQR,IAEjF12D,EAAK9D,KAAKizD,GAENxgB,EAAMkd,UACTld,EAAMkd,UAAUjrD,QAAQ,SAAUwuD,GACjCiH,EAAWjH,EAAUe,EAAQxhB,EAAMv0C,MAAO+1D,EAAQxhB,EAAMv0C,KAAK+lD,QAAe,OAIzEhE,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,OAGhCg8D,EAAUznB,EAAMv1B,MAEZ+iC,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,WAqBhCi8D,CAAW1nB,EAAO4C,MAGf4K,EAAOtpB,aACVg+B,EAAWtf,EAAO,OAGnB6kB,EAAUxnD,GAENutC,EAAOtpB,aACVg+B,EAAWtf,EAAO,WAIpB,IAAI4lB,EAAM,IAAIL,MAAMD,GAEhB3zD,GAAWA,EAAQk0D,YAErBX,EADgC,mBAAtBvzD,EAAQk0D,UACAl0D,EAAQk0D,UAAUD,IAAQ,GAE1Bj0D,EAAQk0D,WAIxBxzD,IACH6yD,EAAgBY,eAAiB,SAAUzoD,GAC1CuoD,EAAIx8B,KAAK/2B,EAAO,GAAI,MAItB6yD,EAAgBa,KAAOpG,EACvBuF,EAAgBz2D,KAAOA,EAEvBm3D,EAAIC,UAAUX,GAEVvzD,GAAWA,EAAQq0D,oBACtBr0D,EAAQq0D,mBAAmBJ,GAG5BnB,EAAgBmB,EAAI1sC,OAAO,eAAgB,oBAG5C+sC,KAAM,SAAcrlD,EAASvD,EAAM1L,EAAS8yD,EAAiB7Z,GAC5D,IAAI1uB,EAAOpyB,KACPo8D,EAAYv0D,EAAQu0D,WAAa,SACjCC,EAAW,CAAEC,WAAY,GAAIC,OAAQ,IACrCrmB,EAAQ,GACRsmB,EAAiB,GACjBC,EAAoB,GACpBC,EAAgB,GAQpB,SAASC,IACR,IAAI9B,EAAS,GACT3B,EAAS,GACTn7C,EAAO,GA+BX,SAASm2C,EAAiBphC,EAAQm3B,GAoClC,IACKvtC,OAnCyB,IAAlBm+C,EAAO5Q,KACjB4Q,EAAO5Q,GAAS,SAGuB,IAA7BwS,EAAkBxS,KAC5BwS,EAAkBxS,GAAS,IAGxBn3B,EAAOtuB,MAAQ,GAElBi4D,EAAkBxS,GAAOppD,KAAK,CAC7B6H,KAAM,MACNqW,MAAO87C,EAAO5Q,GAAOpqD,OACrB4iB,IAAKo4C,EAAO5Q,GAAOpqD,OAASizB,EAAOtuB,MAAQ,IAI7Cq2D,EAAO5Q,GAAOppD,KAAKiyB,EAAOvqB,OAEtBuqB,EAAO09B,UACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,MAGpCiP,EAAOr4D,KAAKiyB,EAAOH,WAAWX,OACdknC,EAAOr5D,OAUpB6c,EAAM,EAEVm+C,EAAOt1D,QAAQ,SAAUgD,GACxB,IAAIwnB,EAAMxnB,EAAM1I,OACZkwB,EAAMrT,IACTA,EAAMqT,KAIR8qC,EAAOt1D,QAAQ,SAAUgD,GACxB,IAAIwnB,EAAMxnB,EAAM1I,OAChB,GAAIkwB,EAAMrT,EACT,IAAK,IAAIlf,EAAIuyB,EAAKvyB,EAAIkf,EAAKlf,IAC1B+K,EAAM1H,KAAK,MArBb47D,EAAkBxS,GAAOppD,KAAK,CAC7B6H,KAAM,OACNqW,MAAOm6C,EAAOr5D,OAAS,KA4D1B,SAASk7D,EAAUxnD,GAClBA,EAAKhO,QAAQ,SAAUssB,GACtB9T,EAAKld,KAAK+6D,EAAS/pC,MAIrB,SAAS+pC,EAAS/pC,GACjB,IAAI89B,EAAU,GAOd,OALAuJ,EAAO3zD,QAAQ,SAAUysB,GACxB,IAAIvzB,EAAQ2zB,EAAK4H,cAAchI,EAAOH,GACtC89B,EAAQ9uD,KAAOpC,aAAiBqM,MAA2E,iBAAhD,IAAVrM,EAAwB,YAAc4R,EAAQ5R,IAA+CA,EAAxBuH,KAAKE,UAAUzH,MAG/HkxD,EAGR,SAAS6F,EAAWtf,EAAOlzC,EAAUgkC,GACpC,IAAIytB,EAAWve,EAAMlzC,GAEjByxD,IACCztB,IACHytB,EAAWA,EAASztB,IAGjB9oC,OAAOmC,KAAKo0D,GAAU50D,SACzB68D,EAAc77D,KAAKkd,EAAKle,QACxBke,EAAKld,KAAK+6D,EAASnH,MAkDtB,OAhHI3T,EAAO6Y,cACV7iD,EAAQvR,QAAQ,SAAUutB,GACzBohC,EAAiBphC,EAAQ,KAG1B+nC,EAAOt1D,QAAQ,SAAUgD,GACxBwV,EAAKld,KAAK0H,OAtEXuO,EAAQvR,QAAQ,SAAUutB,GACzB+nC,EAAOh6D,KAAKiyB,EAAOvqB,OACnB2wD,EAAOr4D,KAAKiyB,EAAOd,SAGpBjU,EAAKld,KAAKg6D,IAyJP/Z,EAAOuR,UACV9+C,EAAKhO,QAAQ,SAAU+tC,IA5BxB,SAAS0nB,EAAW1nB,EAAOwhB,GAC1B,IAAIhB,EAAY,GAEhBA,EAAUjzD,KAAKyyC,EAAMv0C,KAErBy9D,EAAe37D,KAAKkd,EAAKle,QAEzBke,EAAKld,KAAKizD,GAENxgB,EAAMkd,UACTld,EAAMkd,UAAUjrD,QAAQ,SAAUwuD,GACjCiH,EAAWjH,EAAUe,EAAQxhB,EAAMv0C,MAAO+1D,EAAQxhB,EAAMv0C,KAAK+lD,QAAe,OAIzEhE,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,OAGhCg8D,EAAUznB,EAAMv1B,MAEZ+iC,EAAOtpB,aACVg+B,EAAWV,EAASxhB,EAAMv0C,IAAK,WAOhCi8D,CAAW1nB,EAAO4C,MAGf4K,EAAOtpB,aACVg+B,EAAWtf,EAAO,OAGnB6kB,EAAUxnD,GAENutC,EAAOtpB,aACVg+B,EAAWtf,EAAO,WA7LpB,WACC,IAAI0mB,EAAQ,GACR3nB,EAAQ,CAAE11C,EAAG,CAAE1B,EAAG,EAAGS,EAAG,GAAK8D,EAAG,CAAEvE,EAAGq7D,EAAOr5D,OAAQvB,EAAGyf,EAAKle,SAEhEg9D,KAAKC,MAAMC,cAAcH,EAAO7+C,GAEhC6+C,EAAM,QAAUC,KAAKC,MAAME,aAAa/nB,GAExC,IAAIgoB,EAuFL,WACC,IAAI7tC,EAAS,GAkBb,OAhBAotC,EAAej3D,QAAQ,SAAU0tB,GAChC7D,EAAOvuB,KAAK,CAAEtB,EAAG,CAAEjB,EAAG20B,EAAOp1B,EAAG,GAAKuE,EAAG,CAAE9D,EAAG20B,EAAOp1B,EAAGq7D,EAAOr5D,OAAS,OAGxE48D,EAAkBl3D,QAAQ,SAAU03D,EAAQhT,GAC3CgT,EAAO13D,QAAQ,SAAU23D,GACL,QAAfA,EAAMx0D,KACT0mB,EAAOvuB,KAAK,CAAEtB,EAAG,CAAEjB,EAAG2rD,EAAOpsD,EAAGq/D,EAAMn+C,OAAS3c,EAAG,CAAE9D,EAAG2rD,EAAOpsD,EAAGq/D,EAAMz6C,OAEnEwnC,GAAS4Q,EAAOh7D,OAAS,GAC5BuvB,EAAOvuB,KAAK,CAAEtB,EAAG,CAAEjB,EAAG2rD,EAAOpsD,EAAGq/D,EAAMn+C,OAAS3c,EAAG,CAAE9D,EAAGu8D,EAAOh7D,OAAS,EAAGhC,EAAGq/D,EAAMn+C,aAMhFqQ,EA1GM+tC,GAMb,OAJIF,EAAOp9D,SACV+8D,EAAM,WAAaK,GAGbL,EAmLIQ,GAKb,GAlNItc,EAAOtpB,cACV0e,EAAQ3iC,EAAK2iC,MACb3iC,EAAOA,EAAKA,MAgNT1L,EAAQw1D,UACX1C,EAAgBgC,SADjB,CAKA,GAAI90D,EAAQy1D,OACX,IAAK,IAAIV,KAAS/0D,EAAQy1D,QAEK,IAA1Bz1D,EAAQy1D,OAAOV,IAClBP,EAASC,WAAWz7D,KAAK+7D,GACzBP,EAASE,OAAOK,GAASD,MAGzBN,EAASC,WAAWz7D,KAAK+7D,GAEzB58D,KAAKsW,MAAM5Y,QAAQ05C,MAAM+T,KAAKtjD,EAAQy1D,OAAOV,GAAQ,WAAY,YAAa,CAC7El0D,KAAM,OACNb,QAAS,CAAEw1D,WAAW,GACtBn5C,UAAW,SAAmB3Q,GAC7B8oD,EAASE,OAAOK,GAASrpD,WAM7B8oD,EAASC,WAAWz7D,KAAKu7D,GACzBC,EAASE,OAAOH,GAAaO,IAc9BhC,EAVA,SAAcp7D,GAGb,IAFA,IAAIg+D,EAAM,IAAIC,YAAYj+D,EAAEM,QACxB49D,EAAO,IAAIC,WAAWH,GACjB//D,EAAI,EAAGA,GAAK+B,EAAEM,SAAUrC,EAChCigE,EAAKjgE,GAAuB,IAAlB+B,EAAEo+D,WAAWngE,GACvB,OAAO+/D,EAKOK,CAFPf,KAAKgB,MAAMxB,EAAU,CAAEyB,SAAU,OAAQC,SAAS,EAAMr1D,KAAM,YAEzC,+BAKhCmN,EAAUzW,UAAUknD,eAAe,WAAY2S,GAE/C,IAAI+E,EAAO,SAAc1nD,GACxBtW,KAAKsW,MAAQA,EACbtW,KAAKslD,aAAc,EACnBtlD,KAAKi+D,YAAa,EAClBj+D,KAAKk+D,gBAAiB,EACtBl+D,KAAKm+D,aAAc,GAIpBH,EAAK5+D,UAAU69B,iBAAmB,SAAUnK,GAC3C,IACIguB,EAAS,CACZviB,QAAQ,EACRozB,SAAS,EACT5e,MAAOjgB,EAAOH,WAAWyrC,SACzB1+B,OAAQ5M,EAAOH,WAAW0rC,cAAgB,IAI3C,OAAQhuD,EAAQyiB,EAAOH,WAAW4L,SACjC,IAAK,SAE6B,SAA7BzL,EAAOH,WAAW4L,SACrBzL,EAAOH,WAAW4L,OAAS,YAC3B18B,QAAQ+0B,KAAK,+FAdL52B,KAiBAs+D,QAAQxrC,EAAOH,WAAW4L,QAClCuiB,EAAOviB,OAlBCv+B,KAkBas+D,QAAQxrC,EAAOH,WAAW4L,QAE/C18B,QAAQ+0B,KAAK,wCAAyC9D,EAAOH,WAAW4L,QAEzE,MAED,IAAK,WACJuiB,EAAOviB,OAASzL,EAAOH,WAAW4L,OAClC,MAED,IAAK,WAE6B,IAA7BzL,EAAOH,WAAW4L,SAEsB,mBAAhCzL,EAAOH,WAAW6M,WAEQ,SAAhC1M,EAAOH,WAAW6M,YACrB1M,EAAOH,WAAW6M,UAAY,YAC9B39B,QAAQ+0B,KAAK,+FApCP52B,KAuCEs+D,QAAQxrC,EAAOH,WAAW6M,WAClCshB,EAAOviB,OAxCDv+B,KAwCes+D,QAAQxrC,EAAOH,WAAW6M,WAE/CshB,EAAOviB,OA1CDv+B,KA0Ces+D,QAAL,OAGjBz8D,QAAQ+0B,KAAK,oEAAqE9D,EAAOH,WAAW6M,YAMpGshB,EAAOviB,SACVzL,EAAOp1B,QAAQ8gC,KAAOsiB,IAIxBkd,EAAK5+D,UAAU62C,eAAiB,WAC/B,QAAOj2C,KAAKslD,aAActlD,KAAKslD,YAAYjwB,gBAG5C2oC,EAAK5+D,UAAUm/D,YAAc,WAC5B,IACI93D,EADAH,EAAOtG,KAAKslD,YAKhB,GAFAtlD,KAAKm+D,aAAc,EAEf73D,EAAM,CAMT,IALAtG,KAAKslD,aAAc,GAEnB7+C,EAASH,EAAKI,cACPqqB,UAAU3oB,OAAO,6BACxB3B,EAAOsqB,UAAU3oB,OAAO,qBACjB3B,EAAOoqB,YACbpqB,EAAO1B,YAAY0B,EAAOoqB,YAC1BvqB,EAAKurB,IAAInrB,aAAaqqB,UAAU3oB,OAAO,2BAI1C41D,EAAK5+D,UAAUirC,WAAa,WAE3B,GAAIrqC,KAAKslD,YAAa,CACrB,IAAIh/C,EAAOtG,KAAKslD,YACZxQ,EAAY90C,KAAKslD,YAAYjwB,eAEjCr1B,KAAKu+D,cACLj4D,EAAK0tC,eAAe1tC,EAAKw5B,YAErBx5B,EAAKwsB,OAAOsH,WAAWiE,mBAC1B/3B,EAAKwsB,OAAOsH,WAAWiE,kBAAkB1gC,KAAKqC,KAAKsW,MAAOw+B,GAG3D90C,KAAKsW,MAAMzO,QAAQw2B,kBAAkB1gC,KAAKqC,KAAKsW,MAAOw+B,KAKxDkpB,EAAK5+D,UAAUw1C,WAAa,SAAUtuC,GACrC,IAAI8rB,EAAOpyB,KACP+C,EAAUuD,EAAKI,aAEnB3D,EAAQ64B,aAAa,WAAY,GAEjC74B,EAAQy6B,iBAAiB,QAAS,SAAUp7B,GACtCW,EAAQguB,UAAUytC,SAAS,sBAC/Bz7D,EAAQq8B,UAIVr8B,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAC/CgwB,EAAK6rC,YAAa,IAGnBl7D,EAAQy6B,iBAAiB,QAAS,SAAUp7B,GACtCgwB,EAAK8rC,gBACT9rC,EAAKoM,KAAKl4B,EAAMlE,GAAG,MAKtB47D,EAAK5+D,UAAUq/D,iBAAmB,SAAUn4D,GAC3CtG,KAAKk+D,gBAAiB,EACK,OAAvBl+D,KAAKsW,MAAM83B,SACd9nC,EAAKI,aAAa04B,QAEnBp/B,KAAKk+D,gBAAiB,GAGvBF,EAAK5+D,UAAU22C,SAAW,SAAUzvC,EAAMo4D,GACzC1+D,KAAKy+D,iBAAiBn4D,GACtBtG,KAAKw+B,KAAKl4B,GAAM,EAAOo4D,IAGxBV,EAAK5+D,UAAUo/B,KAAO,SAAUl4B,EAAMlE,EAAGs8D,GACxC,IAIIC,EACA7pB,EACApV,EANAtN,EAAOpyB,KACP8yC,GAAY,EACZ8rB,EAAW,aACX77D,EAAUuD,EAAKI,aAMnB,IAAI1G,KAAKslD,YAAT,CAqDA,GAAKh/C,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKmzB,QAiF7B,OAFA3xD,KAAKi+D,YAAa,EAClBl7D,EAAQ87D,QACD,EA5EP,OAJIz8D,GACHA,EAAE+K,kBAGKkD,EAAQ/J,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,QACxC,IAAK,WACJD,EAAYxsC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,MAAMzsC,EAAK+uB,gBAChD,MAED,IAAK,UACJyd,EAAYxsC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKuU,MAIvC,GAAID,GAAa4rB,EAAW,CA2B3B,GAzBAtsC,EAAKiY,aAELjY,EAAKkzB,YAAch/C,EAEnBwuC,EAAYxuC,EAAK+uB,eAEbr1B,KAAKi+D,aACRj+D,KAAKi+D,YAAa,EAEd33D,EAAKwsB,OAAOsH,WAAWC,WAC1B/zB,EAAKwsB,OAAOsH,WAAWC,UAAU18B,KAAKqC,KAAKsW,MAAOlU,EAAG0yC,IAInDxuC,EAAKwsB,OAAOsH,WAAWgE,aAC1B93B,EAAKwsB,OAAOsH,WAAWgE,YAAYzgC,KAAKqC,KAAKsW,MAAOw+B,GAGrD1iB,EAAK9b,MAAMzO,QAAQu2B,YAAYzgC,KAAKqC,KAAKsW,MAAOw+B,GAEhDpV,EAAoD,mBAApCp5B,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKkB,OAAwBp5B,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKkB,OAAOoV,GAAaxuC,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKkB,QAKpH,KAHnBi/B,EAAar4D,EAAKwsB,OAAOp1B,QAAQ8gC,KAAKD,OAAO5gC,KAAKy0B,EAAM0iB,EA3C1D,SAAoBhsC,GACnB81D,EAAW91D,GA1CZ,SAAiBrK,GAEhB,GAAI2zB,EAAKkzB,cAAgBh/C,EAAM,CAC9B,IAAIwsD,GAAQ,EAERxsD,EAAKwsB,OAAOp1B,QAAQuT,UAAYmhB,EAAK9b,MAAMob,UAAU,cACxDohC,EAAQ1gC,EAAK9b,MAAM5Y,QAAQuT,SAASA,SAAS3K,EAAKwsB,OAAOp1B,QAAQuT,SAAU3K,EAAK+uB,eAAgB52B,KAGnF,IAAVq0D,GACH1gC,EAAKmsC,cACLj4D,EAAKutC,SAASp1C,GAAO,GAEjB2zB,EAAK9b,MAAMzO,QAAQojC,UAAY7Y,EAAK9b,MAAMob,UAAU,aACvDU,EAAK9b,MAAM5Y,QAAQutC,SAAS+tB,gBAAgB1yD,KAG7C8rB,EAAK+rC,aAAc,EACnBp7D,EAAQguB,UAAUvc,IAAI,6BACtB4d,EAAKqsC,iBAAiBn4D,GACtBs4D,IACAxsC,EAAK9b,MAAMzO,QAAQw2C,iBAAiB1gD,KAAKy0B,EAAK9b,MAAOhQ,EAAK+uB,eAAgB52B,EAAOq0D,MAQpF,WACK1gC,EAAKkzB,cAAgBh/C,IACxB8rB,EAAKiY,aAEDjY,EAAK9b,MAAMzO,QAAQojC,UAAY7Y,EAAK9b,MAAMob,UAAU,aACvDU,EAAK9b,MAAM5Y,QAAQutC,SAAS+tB,gBAAgB1yD,KAkDmDo5B,IA8B/F,OADA38B,EAAQ87D,QACD,EAzBP,KAAIF,aAAsB3+B,MAqBzB,OAFAn+B,QAAQ+0B,KAAK,8EAA+E+nC,GAC5F57D,EAAQ87D,QACD,EAlBP,IAFA97D,EAAQguB,UAAUvc,IAAI,qBACtBlO,EAAKurB,IAAInrB,aAAaqqB,UAAUvc,IAAI,yBAC7BzR,EAAQ8tB,YACd9tB,EAAQgC,YAAYhC,EAAQ8tB,YAC5B9tB,EAAQ6B,YAAY+5D,GAGrBC,IAKA,IAFA,IAAI12D,EAAWnF,EAAQmF,SAEd1K,EAAI,EAAGA,EAAI0K,EAASrI,OAAQrC,IACpC0K,EAAS1K,GAAGggC,iBAAiB,QAAS,SAAUp7B,GAC/CA,EAAE+K,oBAaN,OAAO,EAIP,OAFAnN,KAAKi+D,YAAa,EAClBl7D,EAAQ87D,QACD,EAhIH7+D,KAAKm+D,aACTn+D,KAAKqqC,cAyIR2zB,EAAK5+D,UAAUk/D,QAAU,CAGxBje,MAAO,SAAe/5C,EAAME,EAAYgB,EAASs3D,EAAQT,GAGxD,IAAIU,EAAYz4D,EAAKw5B,WACjBugB,EAAQx9C,SAASC,cAAc,SAenC,SAASk8D,EAAS58D,GACb,MAAC28D,GAA2E,KAAhB1e,EAAM5hD,OAAgB4hD,EAAM5hD,OAASsgE,EACpGv3D,EAAQ64C,EAAM5hD,OAEdqgE,IAqBF,OAtCAze,EAAMzkB,aAAa,OAAQyiC,EAAahd,OAAS,SAAW,QAE5DhB,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aAExB7e,EAAM5hD,WAA6B,IAAdsgE,EAA4BA,EAAY,GAE7Dv4D,EAAW,WACV65C,EAAMjhB,QACNihB,EAAMh8C,MAAMI,OAAS,SAYtB47C,EAAM7iB,iBAAiB,SAAUwhC,GACjC3e,EAAM7iB,iBAAiB,OAAQwhC,GAG/B3e,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC3C,OAAQA,EAAE+8D,SACT,KAAK,GACJ33D,EAAQ64C,EAAM5hD,OACd,MAED,KAAK,GACJqgE,OAKIze,GAIR+e,SAAU,SAAkB94D,EAAME,EAAYgB,EAASs3D,EAAQT,GAC9D,IACIU,EAAYz4D,EAAKw5B,WACjBrhC,EAAQiR,OAAOqvD,QAAyDA,EAAY,IAEpF1e,IADS5hD,EAAMyzB,MAAM,oBAAsB,IAAIryB,OACvCgD,SAASC,cAAc,aAC/Bo0B,EAAe,EAkBnB,SAAS8nC,EAAS58D,GAEb,MAAC28D,GAA2E,KAAhB1e,EAAM5hD,OAAgB4hD,EAAM5hD,OAASsgE,GACpGv3D,EAAQ64C,EAAM5hD,OACd4N,WAAW,WACV/F,EAAKqtC,SAASzG,mBACZ,MAEH4xB,IA4BF,OAnDAze,EAAMh8C,MAAMqoB,QAAU,QACtB2zB,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMI,OAAS,OACrB47C,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aACxB7e,EAAMh8C,MAAMg7D,WAAa,WACzBhf,EAAMh8C,MAAMi7D,OAAS,OAErBjf,EAAM5hD,MAAQA,EAEd+H,EAAW,WACV65C,EAAMjhB,QACNihB,EAAMh8C,MAAMI,OAAS,SAgBtB47C,EAAM7iB,iBAAiB,SAAUwhC,GACjC3e,EAAM7iB,iBAAiB,OAAQwhC,GAE/B3e,EAAM7iB,iBAAiB,QAAS,WAE/B6iB,EAAMh8C,MAAMI,OAAS,GAErB,IAAI86D,EAAYlf,EAAMnpB,aAEtBmpB,EAAMh8C,MAAMI,OAAS86D,EAAY,KAE7BA,GAAaroC,IAChBA,EAAeqoC,EACfj5D,EAAKqtC,SAASzG,qBAIhBmT,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC1B,IAAbA,EAAE+8D,SACLL,MAIKze,GAIRmf,OAAQ,SAAgBl5D,EAAME,EAAYgB,EAASs3D,EAAQT,GAE1D,IAAIU,EAAYz4D,EAAKw5B,WACjBugB,EAAQx9C,SAASC,cAAc,SAEnCu9C,EAAMzkB,aAAa,OAAQ,eAEI,IAApByiC,EAAa3hD,KACvB2jC,EAAMzkB,aAAa,MAAOyiC,EAAa3hD,UAGT,IAApB2hD,EAAavhD,KACvBujC,EAAMzkB,aAAa,MAAOyiC,EAAavhD,UAGR,IAArBuhD,EAAar/C,MACvBqhC,EAAMzkB,aAAa,OAAQyiC,EAAar/C,MAIzCqhC,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aAExB7e,EAAM5hD,MAAQsgE,EAEd,IAAIU,EAAW,SAAkBr9D,GAChC48D,KAcD,SAASA,IACR,IAAIvgE,EAAQ4hD,EAAM5hD,MAEbwzB,MAAMxzB,IAAoB,KAAVA,IACpBA,EAAQuyD,OAAOvyD,IAGZA,GAASsgE,EACZv3D,EAAQ/I,GAERqgE,IAkBF,OAvCAt4D,EAAW,WAEV65C,EAAMqf,oBAAoB,OAAQD,GAElCpf,EAAMjhB,QACNihB,EAAMh8C,MAAMI,OAAS,OAGrB47C,EAAM7iB,iBAAiB,OAAQiiC,KAkBhCpf,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC3C,OAAQA,EAAE+8D,SACT,KAAK,GACL,KAAK,EACJH,IACA,MAED,KAAK,GACJF,OAKIze,GAIRpL,MAAO,SAAe3uC,EAAME,EAAYgB,EAASs3D,EAAQT,GAExD,IAAIU,EAAYz4D,EAAKw5B,WACjBugB,EAAQx9C,SAASC,cAAc,SA4BnC,SAASk8D,IACR,IAAIvgE,EAAQ4hD,EAAM5hD,MAEbwzB,MAAMxzB,IAAoB,KAAVA,IACpBA,EAAQuyD,OAAOvyD,IAGZA,GAASsgE,EACZv3D,EAAQ/I,GAERqgE,IAuBF,OA3DAze,EAAMzkB,aAAa,OAAQ,cAEI,IAApByiC,EAAa3hD,KACvB2jC,EAAMzkB,aAAa,MAAOyiC,EAAa3hD,UAGT,IAApB2hD,EAAavhD,KACvBujC,EAAMzkB,aAAa,MAAOyiC,EAAavhD,UAGR,IAArBuhD,EAAar/C,MACvBqhC,EAAMzkB,aAAa,OAAQyiC,EAAar/C,MAIzCqhC,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aAExB7e,EAAM5hD,MAAQsgE,EAEdv4D,EAAW,WACV65C,EAAMjhB,QACNihB,EAAMh8C,MAAMI,OAAS,SAkBtB47C,EAAM7iB,iBAAiB,OAAQ,SAAUp7B,GACxC48D,MAID3e,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC3C,OAAQA,EAAE+8D,SACT,KAAK,GACL,KAAK,EACJH,IACA,MAED,KAAK,GACJF,OAKIze,GAIRnR,OAAQ,SAAgB5oC,EAAME,EAAYgB,EAASs3D,EAAQT,GAC1D,IAAIjsC,EAAOpyB,KACPyG,EAASH,EAAKI,aACdi5D,EAAer5D,EAAKw5B,WACpBugB,EAAQx9C,SAASC,cAAc,SAC/B88D,EAAS/8D,SAASC,cAAc,OAChC+8D,EAAY,GACZC,EAAe,GACfC,EAAc,GACdC,GAAW,EASf,SAASC,IACR,IAAI7wC,EAAS,GACT0D,EAASxsB,EAAKstC,YAAYtf,WAqB9B,OApBWlC,EAAK9b,MAAMuwB,UAEjBthC,QAAQ,SAAUssB,GACtB,IAAItiB,EAAMujB,EAAOkH,cAAcnI,GAE3BtiB,SAAsD,KAARA,IACjD6f,EAAO7f,IAAO,KAMd6f,EAFEivC,EAAa6B,eACmB,OAA/B7B,EAAa6B,eACPhiE,OAAOmC,KAAK+uB,GAAQkP,OAEpBpgC,OAAOmC,KAAK+uB,GAAQkP,OAAO+I,UAG5BnpC,OAAOmC,KAAK+uB,GAMvB,SAAS+wC,EAAWC,EAAaC,GAChC,IAAIC,EAAW,GACXC,EAAc,GAElB,SAASC,EAAuBl5B,GAc/B,OAbIA,EAAO,CACVjrB,MAAOgiD,EAAaoC,kBAAoBpC,EAAaoC,kBAAkBn5B,EAAK7oC,MAAO6oC,EAAKjrB,OAASirB,EAAKjrB,MACtG5d,MAAO6oC,EAAK7oC,MACZsE,SAAS,IAGDtE,QAAU4hE,IAAgBpuC,MAAM1lB,WAAW+6B,EAAK7oC,SAAYwzB,MAAM1lB,WAAW+6B,EAAK7oC,SAAW8N,WAAW+6B,EAAK7oC,SAAW8N,WAAW8zD,KAC3IK,EAAep5B,GAGhBg5B,EAASz/D,KAAKymC,GACdi5B,EAAY1/D,KAAKymC,GAEVA,EAOR,GAJ0B,mBAAf84B,IACVA,EAAcA,EAAY95D,IAGvBxF,MAAMC,QAAQq/D,GACjBA,EAAY76D,QAAQ,SAAU9G,GAC7B,IAAI6oC,EAEkE,iBAAhD,IAAV7oC,EAAwB,YAAc4R,EAAQ5R,IAErDA,EAAMoJ,SACTy/B,EAAO,CACNjrB,MAAO5d,EAAM4d,MACbi3B,OAAO,EACPvwC,SAAS,GAGVw9D,EAAY1/D,KAAKymC,GAEjB7oC,EAAMoJ,QAAQtC,QAAQ,SAAU+hC,GAC/Bk5B,EAAuBl5B,MAGxBk5B,EAAuB/hE,KAIxB6oC,EAAO,CACNjrB,MAAOgiD,EAAaoC,kBAAoBpC,EAAaoC,kBAAkBhiE,EAAOA,GAASA,EACvFA,MAAOA,EACPsE,SAAS,IAGDtE,QAAU4hE,IAAgBpuC,MAAM1lB,WAAW+6B,EAAK7oC,SAAYwzB,MAAM1lB,WAAW+6B,EAAK7oC,SAAW8N,WAAW+6B,EAAK7oC,SAAW8N,WAAW8zD,KAC3IK,EAAep5B,GAGhBg5B,EAASz/D,KAAKymC,GACdi5B,EAAY1/D,KAAKymC,WAInB,IAAK,IAAIvoC,KAAOqhE,EAAa,CAC5B,IAAI94B,EAAO,CACVjrB,MAAOgiD,EAAaoC,kBAAoBpC,EAAaoC,kBAAkB1hE,EAAKqhE,EAAYrhE,IAAQqhE,EAAYrhE,GAC5GN,MAAOM,EACPgE,SAAS,GAGNukC,EAAK7oC,QAAU4hE,IAAgBpuC,MAAM1lB,WAAW+6B,EAAK7oC,SAAYwzB,MAAM1lB,WAAW+6B,EAAK7oC,SAAW8N,WAAW+6B,EAAK7oC,SAAW8N,WAAW8zD,KAC3IK,EAAep5B,GAGhBg5B,EAASz/D,KAAKymC,GACdi5B,EAAY1/D,KAAKymC,GAInBu4B,EAAYS,EACZR,EAAeS,EAKhB,WACC,KAAOX,EAAO/uC,YACb+uC,EAAO76D,YAAY66D,EAAO/uC,YAC1BivC,EAAav6D,QAAQ,SAAU+hC,GAC/B,IAAIxW,EAAKwW,EAAKvkC,QAET+tB,IAEAwW,EAAKgM,QACRxiB,EAAKjuB,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,oCACjBsc,EAAG7R,SAAW,EACd6R,EAAGmP,UAA2B,KAAfqH,EAAKjrB,MAAe,SAAWirB,EAAKjrB,SAEnDyU,EAAKjuB,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,mCACjBsc,EAAG7R,SAAW,EACd6R,EAAGmP,UAA2B,KAAfqH,EAAKjrB,MAAe,SAAWirB,EAAKjrB,MAEnDyU,EAAG0M,iBAAiB,QAAS,WAC5BkjC,EAAep5B,GACfq5B,MAGGr5B,IAASy4B,GACZjvC,EAAGC,UAAUvc,IAAI,WAInBsc,EAAG0M,iBAAiB,YAAa,WAChCwiC,GAAW,EAEX3zD,WAAW,WACV2zD,GAAW,GACT,MAGJ14B,EAAKvkC,QAAU+tB,GAGhB8uC,EAAOh7D,YAAYksB,KA3CpB8vC,GA+CD,SAASF,EAAep5B,GAEnBy4B,GAAeA,EAAYh9D,SAC9Bg9D,EAAYh9D,QAAQguB,UAAU3oB,OAAO,UAGtC23D,EAAcz4B,EACd+Y,EAAM5hD,MAAuB,WAAf6oC,EAAKjrB,MAAqB,GAAKirB,EAAKjrB,MAE9CirB,EAAKvkC,SACRukC,EAAKvkC,QAAQguB,UAAUvc,IAAI,UAI7B,SAASmsD,IACRE,IAEIlB,IAAiBI,EAAYthE,OAChCkhE,EAAeI,EAAYthE,MAC3B+I,EAAQu4D,EAAYthE,QAEpBqgE,IAIF,SAASgC,IACRD,IACA/B,IAsBD,SAAS+B,IACJjB,EAAOtsC,YACVssC,EAAOtsC,WAAWvuB,YAAY66D,GAO/BxtC,EAAK9b,MAAMka,WAAWztB,QAAQ28D,oBAAoB,SAAUoB,GA8F7D,OA1TA9gE,KAAKsW,MAAMka,WAAWztB,QAAQy6B,iBAAiB,SAAUsjC,IAErDhgE,MAAMC,QAAQs9D,KAAkBv9D,MAAMC,QAAQs9D,IAAiG,iBAAvD,IAAjBA,EAA+B,YAAchuD,EAAQguD,MAAgCA,EAAa3zC,UAC5K7oB,QAAQ+0B,KAAK,6JACbynC,EAAe,CAAE3zC,OAAQ2zC,IA4N1Bhe,EAAMzkB,aAAa,OAAQ,QAE3BykB,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aACxB7e,EAAMh8C,MAAMmoB,OAAS,UACrB6zB,EAAM1iC,SAA+B,GAApB3d,KAAKslD,YAEtBjF,EAAM5hD,WAAgC,IAAjBkhE,GAAiD,OAAjBA,EAAwBA,EAAe,IAEhE,IAAxBtB,EAAa3zC,OAChBy1C,EAAWF,IAAyBN,GAEpCQ,EAAW9B,EAAa3zC,QAAU,GAAIi1C,GAIvCtf,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC3C,IAAI6wB,EAEJ,OAAQ7wB,EAAE+8D,SACT,KAAK,GAEJ/8D,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,kBAEF9hB,EAAQ4sC,EAAUv/D,QAAQy/D,IAEd,GACXW,EAAeb,EAAU5sC,EAAQ,IAElC,MAED,KAAK,GAEJ7wB,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,kBAEF9hB,EAAQ4sC,EAAUv/D,QAAQy/D,IAEdF,EAAUhgE,OAAS,GAE7B6gE,GADa,GAAVztC,EACY4sC,EAAU,GAEVA,EAAU5sC,EAAQ,IAGnC,MAED,KAAK,GACL,KAAK,GAEJ7wB,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,iBACF,MAED,KAAK,GAEJ4rB,IACA,MAED,KAAK,GAEJG,OAKHzgB,EAAM7iB,iBAAiB,OAAQ,SAAUp7B,GACpC49D,GACHc,MAIFzgB,EAAM7iB,iBAAiB,QAAS,SAAUp7B,IA7G1C,WACC,IAAKw9D,EAAOtsC,WAAY,EAEK,IAAxB+qC,EAAa3zC,OAChBy1C,EAAWF,IAAyBN,GAEpCQ,EAAW9B,EAAa3zC,QAAU,GAAIi1C,GAGvC,IAAIp6C,EAAS1P,EAAUzW,UAAU24B,QAAQmN,SAASz+B,GAElDm5D,EAAOv7D,MAAM+yB,SAAW3wB,EAAO5B,YAAc,KAE7C+6D,EAAOv7D,MAAME,IAAMghB,EAAOhhB,IAAMkC,EAAO85B,aAAe,KACtDq/B,EAAOv7D,MAAMitB,KAAO/L,EAAO+L,KAAO,KAClCzuB,SAAS8B,KAAKC,YAAYg7D,IA+F3BoB,MAIDpB,EAAS/8D,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,8BAErBhO,EAAW,WACV65C,EAAMh8C,MAAMI,OAAS,OACrB47C,EAAMjhB,UAGAihB,GAIR4gB,aAAc,SAAsB36D,EAAME,EAAYgB,EAASs3D,EAAQT,GACtE,IAAIjsC,EAAOpyB,KACPyG,EAASH,EAAKI,aACdi5D,EAAer5D,EAAKw5B,WACpBugB,EAAQx9C,SAASC,cAAc,SAC/B88D,EAAS/8D,SAASC,cAAc,OAChCo+D,EAAW,GACXpB,EAAe,GACfp1C,EAAS,GACTq1C,EAAc,GACdC,GAAW,EA2Ef,SAASmB,EAAWC,EAAMC,GACzB,IAAIla,EAAU,GACVma,EAAa,GAGbjD,EAAakD,YAEhBL,EAAS37D,QAAQ,SAAU+hC,GAC1Bg6B,EAAWzgE,KAAKymC,EAAK+Z,UAGNgd,EAAakD,WAAWH,EAAME,GAEhC/7D,QAAQ,SAAU8a,GAC/B,IAAI6R,EAAQgvC,EAAShxC,KAAK,SAAUoX,GACnC,OAAOA,EAAK+Z,SAAWhhC,IAGpB6R,GACHi1B,EAAQtmD,KAAKqxB,MAIF,KAATkvC,EAEC/C,EAAamD,iBAChBN,EAAS37D,QAAQ,SAAU+hC,GAC1B6f,EAAQtmD,KAAKymC,KAIf45B,EAAS37D,QAAQ,SAAU+hC,GAEP,OAAfA,EAAK7oC,YAAwC,IAAf6oC,EAAK7oC,QAClCiR,OAAO43B,EAAK7oC,OAAO+qD,cAAclpD,QAAQoP,OAAO0xD,GAAM5X,gBAAkB,GAAK95C,OAAO43B,EAAK/+B,OAAOihD,cAAclpD,QAAQoP,OAAO0xD,GAAM5X,gBAAkB,IACxJrC,EAAQtmD,KAAKymC,KAOlBw4B,EAAe3Y,EAKhB,SAAkBka,GACjB,IAAII,GAAU,EAEd,KAAO7B,EAAO/uC,YACb+uC,EAAO76D,YAAY66D,EAAO/uC,YAC1BivC,EAAav6D,QAAQ,SAAU+hC,GAC/B,IAAIxW,EAAKwW,EAAKvkC,QAET+tB,KACJA,EAAKjuB,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,mCACjBsc,EAAG7R,SAAW,EACd6R,EAAGmP,UAAYqH,EAAK/+B,MAEpBuoB,EAAG0M,iBAAiB,QAAS,WAC5BkjC,EAAep5B,GACfq5B,MAGD7vC,EAAG0M,iBAAiB,YAAa,WAChCwiC,GAAW,EAEX3zD,WAAW,WACV2zD,GAAW,GACT,MAGJ14B,EAAKvkC,QAAU+tB,EAEXuwC,GAAc/5B,EAAK7oC,OAASkhE,IAC/Btf,EAAM5hD,MAAQ6oC,EAAK/+B,MACnB++B,EAAKvkC,QAAQguB,UAAUvc,IAAI,UAC3BitD,GAAU,GAGPn6B,IAASy4B,IACZz4B,EAAKvkC,QAAQguB,UAAUvc,IAAI,UAC3BitD,GAAU,IAIZ7B,EAAOh7D,YAAYksB,KAGf2wC,GACJf,GAAe,GAhDhBE,CAASS,GAoDV,SAASX,EAAep5B,EAAMo6B,GACzB3B,GAAeA,EAAYh9D,SAC9Bg9D,EAAYh9D,QAAQguB,UAAU3oB,OAAO,UAGtC23D,EAAcz4B,EAEVA,GAAQA,EAAKvkC,SAChBukC,EAAKvkC,QAAQguB,UAAUvc,IAAI,UAI7B,SAASmsD,IACRE,IAEId,EACCJ,IAAiBI,EAAYthE,OAChCkhE,EAAeI,EAAYthE,MAC3B4hD,EAAM5hD,MAAQshE,EAAYx3D,MAC1Bf,EAAQu4D,EAAYthE,QAEpBqgE,IAGGT,EAAasD,UAChBhC,EAAetf,EAAM5hD,MACrB+I,EAAQ64C,EAAM5hD,QAEV4/D,EAAauD,YAA8B,KAAhBvhB,EAAM5hD,OACpCkhE,EAAetf,EAAM5hD,MACrB+I,EAAQ64C,EAAM5hD,QAEdqgE,IAMJ,SAASgC,IACRD,IACA/B,IAGD,SAASkC,IACR,IAAKpB,EAAOtsC,WAAY,CACvB,KAAOssC,EAAO/uC,YACb+uC,EAAO76D,YAAY66D,EAAO/uC,aACE,IAAxBwtC,EAAa3zC,QArNf0E,EAAS,GACT0D,EAASxsB,EAAKstC,YAAYtf,WACnBlC,EAAK9b,MAAMuwB,UAEjBthC,QAAQ,SAAUssB,GACtB,IAAItiB,EAAMujB,EAAOkH,cAAcnI,GAE3BtiB,SAAsD,KAARA,IACjD6f,EAAO7f,IAAO,KA8Mdmb,EAxMA0E,EAFEivC,EAAa6B,eACmB,OAA/B7B,EAAa6B,eACPhiE,OAAOmC,KAAK+uB,GAAQkP,OAEpBpgC,OAAOmC,KAAK+uB,GAAQkP,OAAO+I,UAG5BnpC,OAAOmC,KAAK+uB,IAqMpB1E,EAAS2zC,EAAa3zC,QAAU,GA/LnC,SAAoB01C,EAAaC,GAChC,IAAIwB,EAAW,GAEf,GAAI/gE,MAAMC,QAAQq/D,GACjBA,EAAY76D,QAAQ,SAAU9G,GAC7B,IAAI6oC,EAAO,CACV/+B,MAAO81D,EAAaoC,kBAAoBpC,EAAaoC,kBAAkBhiE,EAAOA,GAASA,EACvFA,MAAOA,EACPsE,SAAS,GAGNukC,EAAK7oC,QAAU4hE,IAAgBpuC,MAAM1lB,WAAW+6B,EAAK7oC,SAAYwzB,MAAM1lB,WAAW+6B,EAAK7oC,SAAW8N,WAAW+6B,EAAK7oC,SAAW8N,WAAW8zD,KAC3IK,EAAep5B,GAGhBu6B,EAAShhE,KAAKymC,UAGf,IAAK,IAAIvoC,KAAOqhE,EAAa,CAC5B,IAAI94B,EAAO,CACV/+B,MAAO81D,EAAaoC,kBAAoBpC,EAAaoC,kBAAkB1hE,EAAKqhE,EAAYrhE,IAAQqhE,EAAYrhE,GAC5GN,MAAOM,EACPgE,SAAS,GAGNukC,EAAK7oC,QAAU4hE,IAAgBpuC,MAAM1lB,WAAW+6B,EAAK7oC,SAAYwzB,MAAM1lB,WAAW+6B,EAAK7oC,SAAW8N,WAAW+6B,EAAK7oC,SAAW8N,WAAW8zD,KAC3IK,EAAep5B,GAGhBu6B,EAAShhE,KAAKymC,GAIZ+2B,EAAakD,YAChBM,EAASt8D,QAAQ,SAAU+hC,GAC1BA,EAAK+Z,OAAS,CACb94C,MAAO++B,EAAK/+B,MACZ9J,MAAO6oC,EAAK7oC,SAKfyiE,EAAWW,EAwJV1B,CAAWz1C,EAAQi1C,GAEnB,IAAIp6C,EAAS1P,EAAUzW,UAAU24B,QAAQmN,SAASz+B,GAElDm5D,EAAOv7D,MAAM+yB,SAAW3wB,EAAO5B,YAAc,KAE7C+6D,EAAOv7D,MAAME,IAAMghB,EAAOhhB,IAAMkC,EAAO85B,aAAe,KACtDq/B,EAAOv7D,MAAMitB,KAAO/L,EAAO+L,KAAO,KAClCzuB,SAAS8B,KAAKC,YAAYg7D,GApO5B,IACKxwC,EACA0D,EAsOL,SAAS+tC,IACJjB,EAAOtsC,YACVssC,EAAOtsC,WAAWvuB,YAAY66D,GAO/BxtC,EAAK9b,MAAMka,WAAWztB,QAAQ28D,oBAAoB,SAAUoB,GAqH7D,OAxWA9gE,KAAKsW,MAAMka,WAAWztB,QAAQy6B,iBAAiB,SAAUsjC,GAuPzDzgB,EAAMzkB,aAAa,OAAQ,UAE3BykB,EAAMh8C,MAAM46D,QAAU,MACtB5e,EAAMh8C,MAAMG,MAAQ,OACpB67C,EAAMh8C,MAAM66D,UAAY,aAGxB7e,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC3C,IAAI6wB,EAEJ,OAAQ7wB,EAAE+8D,SACT,KAAK,GAEJ/8D,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,iBAKD2rB,GAHDztC,EAAQ6sC,EAAax/D,QAAQy/D,IAEjB,GACID,EAAa7sC,EAAQ,IAIrC,MAED,KAAK,GAEJ7wB,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,kBAEF9hB,EAAQ6sC,EAAax/D,QAAQy/D,IAEjBD,EAAajgE,OAAS,GAEhC6gE,GADa,GAAVztC,EACY6sC,EAAa,GAEbA,EAAa7sC,EAAQ,IAGtC,MAED,KAAK,GACL,KAAK,GAEJ7wB,EAAE2+D,2BACF3+D,EAAE+K,kBACF/K,EAAE2yC,iBACF,MAED,KAAK,GAEJ4rB,IACA,MAED,KAAK,GAEJG,IACA,MAED,KAAK,GACL,KAAK,GAGJ1+D,EAAE2+D,8BAKL1gB,EAAM7iB,iBAAiB,QAAS,SAAUp7B,GAEzC,OAAQA,EAAE+8D,SACT,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GAEJ,MAED,QACCgC,EAAW9gB,EAAM5hD,UAIpB4hD,EAAM7iB,iBAAiB,SAAU,SAAUp7B,GAC1C++D,EAAW9gB,EAAM5hD,SAGlB4hD,EAAM7iB,iBAAiB,OAAQ,SAAUp7B,GACpC49D,GACHW,MAIFtgB,EAAM7iB,iBAAiB,QAAS,SAAUp7B,GACzC,IAAI3D,OAAgC,IAAjBkhE,GAAiD,OAAjBA,EAAwBA,EAAe,GAC1FqB,IACA3gB,EAAM5hD,MAAQA,EACd0iE,EAAW1iE,GAAO,MAInBmhE,EAAS/8D,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,8BAErBhO,EAAW,WACV65C,EAAMh8C,MAAMI,OAAS,OACrB47C,EAAMjhB,UAGAihB,GAIRyhB,KAAM,SAAcx7D,EAAME,EAAYgB,EAASs3D,EAAQT,GACtD,IAAIjsC,EAAOpyB,KACP+C,EAAUuD,EAAKI,aACfjI,EAAQ6H,EAAKw5B,WACbiiC,EAAWh/D,EAAQY,qBAAqB,OAAO9D,QAAU,EACzDqE,EAAOnB,EAAQY,qBAAqB,OAAO,GAAKZ,EAAQY,qBAAqB,OAAO,GAAGq+D,aAAa,SAAW,GAC/GC,EAAQ,GACRC,EAAcr/D,SAASC,cAAc,OACrCg/D,EAAOj/D,SAASs/D,gBAAgB,6BAA8B,OAGlE,SAASC,EAAW7yD,GACnB0yD,EAAM18D,QAAQ,SAAUu8D,EAAMtkE,GACzBA,EAAI+R,GACmB,MAAtB6iB,EAAK9b,MAAM83B,QACd0zB,EAAKlmC,aAAa,QAAS,yBAE3BkmC,EAAK/wC,UAAUtuB,QAAQ,0BAA2B,yBAGnDq/D,EAAK7hC,UAAY,4SAES,MAAtB7N,EAAK9b,MAAM83B,QACd0zB,EAAKlmC,aAAa,QAAS,2BAE3BkmC,EAAK/wC,UAAUtuB,QAAQ,wBAAyB,2BAGjDq/D,EAAK7hC,UAAY,6SAMpB,SAASoiC,EAAU7kE,GAElB,IAAI8kE,EAAaz/D,SAASC,cAAc,QACpCy/D,EAAWT,EAAK7J,WAAU,GAE9BgK,EAAMphE,KAAK0hE,GAEXD,EAAW9kC,iBAAiB,aAAc,SAAUp7B,GACnDA,EAAE+K,kBACF/K,EAAE2+D,2BACFqB,EAAW5kE,KAGZ8kE,EAAW9kC,iBAAiB,YAAa,SAAUp7B,GAClDA,EAAE+K,kBACF/K,EAAE2+D,6BAGHuB,EAAW9kC,iBAAiB,QAAS,SAAUp7B,GAC9CA,EAAE+K,kBACF/K,EAAE2+D,2BACFv5D,EAAQhK,KAGT8kE,EAAW19D,YAAY29D,GACvBL,EAAYt9D,YAAY09D,GAIzB,SAASE,EAAYjzD,GACpB9Q,EAAQ8Q,EACR6yD,EAAW7yD,GAIZxM,EAAQsB,MAAMg7D,WAAa,SAC3Bt8D,EAAQsB,MAAMK,SAAW,SACzB3B,EAAQsB,MAAMo+D,aAAe,WAG7BP,EAAY79D,MAAM2vB,cAAgB,SAClCkuC,EAAY79D,MAAMqoB,QAAU,eAC5Bw1C,EAAY79D,MAAM46D,QAAU,MAG5B6C,EAAKlmC,aAAa,QAAS13B,GAC3B49D,EAAKlmC,aAAa,SAAU13B,GAC5B49D,EAAKlmC,aAAa,UAAW,eAC7BkmC,EAAKlmC,aAAa,YAAa,YAC/BkmC,EAAKz9D,MAAM46D,QAAU,QAGrB,IAAK,IAAIzhE,EAAI,EAAGA,GAAKukE,EAAUvkE,IAC9B6kE,EAAU7kE,GA8CX,OAvCA4kE,EAHA3jE,EAAQ0X,KAAK2G,IAAIxI,SAAS7V,GAAQsjE,IAKlCG,EAAY1kC,iBAAiB,YAAa,SAAUp7B,GACnDggE,EAAW,KAGZF,EAAY1kC,iBAAiB,QAAS,SAAUp7B,GAC/CoF,EAAQ,KAGTzE,EAAQy6B,iBAAiB,OAAQ,SAAUp7B,GAC1C08D,MAID/7D,EAAQy6B,iBAAiB,UAAW,SAAUp7B,GAC7C,OAAQA,EAAE+8D,SACT,KAAK,GAEJqD,EAAY/jE,EAAQ,GACpB,MAED,KAAK,GAEJ+jE,EAAY/jE,EAAQ,GACpB,MAED,KAAK,GAEJ+I,EAAQ/I,GACR,MAED,KAAK,GAEJqgE,OAKIoD,GAIRQ,SAAU,SAAkBp8D,EAAME,EAAYgB,EAASs3D,EAAQT,GAC9D,IAOIsE,EACAC,EARA7/D,EAAUuD,EAAKI,aACfgW,OAAkC,IAArB2hD,EAAa3hD,IAAsB3Z,EAAQY,qBAAqB,OAAO,GAAGq+D,aAAa,QAAU,IAAM3D,EAAa3hD,IACjII,OAAkC,IAArBuhD,EAAavhD,IAAsB/Z,EAAQY,qBAAqB,OAAO,GAAGq+D,aAAa,QAAU,EAAI3D,EAAavhD,IAC/H+lD,GAAWnmD,EAAMI,GAAO,IACxBre,EAAQ6H,EAAKw5B,YAAc,EAC3BgjC,EAASjgE,SAASC,cAAc,OAChCigE,EAAMlgE,SAASC,cAAc,OAKjC,SAASkgE,IACR,IAAIC,EAAUJ,EAAU1sD,KAAK+sD,MAAMH,EAAIl+D,aAAe9B,EAAQ+B,YAAc,MAAQgY,EACpFtV,EAAQy7D,GACRlgE,EAAQ64B,aAAa,gBAAiBqnC,GACtClgE,EAAQ64B,aAAa,aAAcn9B,GAiGpC,OA7FAqkE,EAAOz+D,MAAMC,SAAW,WACxBw+D,EAAOz+D,MAAM+xC,MAAQ,IACrB0sB,EAAOz+D,MAAME,IAAM,IACnBu+D,EAAOz+D,MAAMurD,OAAS,IACtBkT,EAAOz+D,MAAMG,MAAQ,MACrBs+D,EAAO/xC,UAAUvc,IAAI,6BAGrBuuD,EAAI1+D,MAAMqoB,QAAU,eACpBq2C,EAAI1+D,MAAMC,SAAW,WAKrBy+D,EAAI1+D,MAAMI,OAAS,OACnBs+D,EAAI1+D,MAAM8+D,gBAAkB,UAC5BJ,EAAI1+D,MAAM88B,SAAW,OACrB4hC,EAAI1+D,MAAM+yB,SAAW,KAGrBr0B,EAAQsB,MAAM46D,QAAU,UAGxBxgE,EAAQ0X,KAAK2G,IAAIvQ,WAAW9N,GAAQie,GACpCje,EAAQ0X,KAAKuG,IAAInQ,WAAW9N,GAAQqe,GAGpCre,EAAQ0X,KAAK+sD,OAAOzkE,EAAQqe,GAAO+lD,GAEnCE,EAAI1+D,MAAMG,MAAQ/F,EAAQ,IAE1BsE,EAAQ64B,aAAa,gBAAiB9e,GACtC/Z,EAAQ64B,aAAa,gBAAiBlf,GAEtCqmD,EAAIn+D,YAAYk+D,GAEhBA,EAAOtlC,iBAAiB,YAAa,SAAUp7B,GAC9CugE,EAAYvgE,EAAEghE,QACdR,EAAiBG,EAAIl+D,cAGtBi+D,EAAOtlC,iBAAiB,YAAa,WACpCslC,EAAOz+D,MAAMmoB,OAAS,cAGvBzpB,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAC3CugE,IACHI,EAAI1+D,MAAMG,MAAQo+D,EAAiBxgE,EAAEghE,QAAUT,EAAY,QAI7D5/D,EAAQy6B,iBAAiB,UAAW,SAAUp7B,GACzCugE,IACHvgE,EAAE+K,kBACF/K,EAAE2+D,2BAEF4B,GAAY,EACZC,GAAiB,EAEjBI,OAKFjgE,EAAQy6B,iBAAiB,UAAW,SAAUp7B,GAC7C,OAAQA,EAAE+8D,SACT,KAAK,GAEJ4D,EAAI1+D,MAAMG,MAAQu+D,EAAIj+D,YAAc/B,EAAQ+B,YAAc,IAAM,KAChE,MAED,KAAK,GAEJi+D,EAAI1+D,MAAMG,MAAQu+D,EAAIj+D,YAAc/B,EAAQ+B,YAAc,IAAM,KAChE,MAED,KAAK,GAEJk+D,IACA,MAED,KAAK,GAEJlE,OAMH/7D,EAAQy6B,iBAAiB,OAAQ,WAChCshC,MAGMiE,GAIRM,UAAW,SAAmB/8D,EAAME,EAAYgB,EAASs3D,EAAQT,GAChE,IAAI5/D,EAAQ6H,EAAKw5B,WACbugB,EAAQx9C,SAASC,cAAc,SAC/BwgE,EAAWjF,EAAaiF,SACxBC,OAA2D,IAApClF,EAAamF,mBAAqC,KAAOnF,EAAamF,mBAC7FC,GAAgB,EAsBpB,SAAS5vB,EAASgrB,GACjB,OAAIyE,EACEzE,EAWA4E,EACIF,EAEAljB,EAAM5mC,QAbV4mC,EAAM5mC,UAAYgqD,GACrBpjB,EAAM5mC,SAAU,EAChB4mC,EAAMqjB,eAAgB,EACtBD,GAAgB,EACTF,IAEPE,GAAgB,EACTpjB,EAAM5mC,SAUR4mC,EAAM5mC,QAuBf,OA/DA4mC,EAAMzkB,aAAa,OAAQ,YAC3BykB,EAAMh8C,MAAMs/D,UAAY,MACxBtjB,EAAMh8C,MAAM66D,UAAY,aAExB7e,EAAM5hD,MAAQA,GAEV6kE,QAA8B,IAAV7kE,GAAyBA,IAAU8kE,GAA2B,KAAV9kE,IAC3EglE,GAAgB,EAChBpjB,EAAMqjB,eAAgB,GAGG,WAAtB1jE,KAAKsW,MAAM83B,SAEd5nC,EAAW,WACV65C,EAAMjhB,UAIRihB,EAAM5mC,SAAoB,IAAVhb,GAA4B,SAAVA,GAA8B,SAAVA,GAA8B,IAAVA,EA2B1E4hD,EAAM7iB,iBAAiB,SAAU,SAAUp7B,GAC1CoF,EAAQqsC,OAGTwM,EAAM7iB,iBAAiB,OAAQ,SAAUp7B,GACxCoF,EAAQqsC,GAAS,MAIlBwM,EAAM7iB,iBAAiB,UAAW,SAAUp7B,GAC1B,IAAbA,EAAE+8D,SACL33D,EAAQqsC,KAEQ,IAAbzxC,EAAE+8D,SACLL,MAIKze,IAITxqC,EAAUzW,UAAUknD,eAAe,OAAQ0X,GAE3C,IAAI4F,EAAS,SAAgBttD,GAE5BtW,KAAKsW,MAAQA,EAEbtW,KAAKmhE,WAAa,GAClBnhE,KAAKopD,cAAgB,GACrBppD,KAAK6jE,qBAAuB,GAC5B7jE,KAAK8jE,oBAAsB,GAE3B9jE,KAAK41C,SAAU,GAIhBguB,EAAOxkE,UAAU69B,iBAAmB,SAAUnK,EAAQr0B,GACrD,IAEIslE,EAFA3xC,EAAOpyB,KACPgyB,EAAQc,EAAOgF,WAkFnBhF,EAAOp1B,QAAQsR,OAAS,CACvBxH,QA9ED,SAAiB/I,GAChB,IAEIulE,EAFAC,EAA8C,SAAjCnxC,EAAOp1B,QAAQsR,OAAOk1D,SAAwD,QAAlCpxC,EAAOp1B,QAAQsR,OAAOm1D,UAAuD,YAAjCrxC,EAAOp1B,QAAQsR,OAAOk1D,QAAwB,UAAY,QAC/Jx7D,EAAO,GAGX,QAA2B,IAAhBq7D,GAA+BA,IAAgBtlE,EAAO,CAIhE,GAFAslE,EAActlE,EAETq0B,EAAOp1B,QAAQsR,OAAOo1D,UAAU3lE,UA2D7B2zB,EAAKg3B,cAAcp3B,OA3DkB,CAG5C,OAFAc,EAAOp1B,QAAQsR,OAAOvQ,MAAQA,EAEtB4R,EAAQyiB,EAAOH,WAAW0xC,mBACjC,IAAK,SACAjyC,EAAKmX,QAAQzW,EAAOH,WAAW0xC,mBAClC37D,EAAOoqB,EAAOH,WAAW0xC,iBACzBL,EAAa,SAAoBzwD,GAChC,IAAImsB,EAAS5M,EAAOH,WAAW2xC,wBAA0B,GACrDC,EAAWzxC,EAAOkH,cAAczmB,GAIpC,OAFAmsB,EAA2B,mBAAXA,EAAwBA,EAAOjhC,EAAO8lE,EAAUhxD,GAAQmsB,EAEjEtN,EAAKmX,QAAQzW,EAAOH,WAAW0xC,kBAAkB5lE,EAAO8lE,EAAUhxD,EAAMmsB,KAGhF79B,QAAQ+0B,KAAK,6DAA8D9D,EAAOH,WAAW0xC,kBAE9F,MAED,IAAK,WAUJ37D,EATAs7D,EAAa,SAAoBzwD,GAChC,IAAImsB,EAAS5M,EAAOH,WAAW2xC,wBAA0B,GACrDC,EAAWzxC,EAAOkH,cAAczmB,GAIpC,OAFAmsB,EAA2B,mBAAXA,EAAwBA,EAAOjhC,EAAO8lE,EAAUhxD,GAAQmsB,EAEjE5M,EAAOH,WAAW0xC,iBAAiB5lE,EAAO8lE,EAAUhxD,EAAMmsB,IAOpE,IAAKskC,EACJ,OAAQC,GACP,IAAK,UACJD,EAAa,SAAoBzwD,GAChC,IAAIixD,EAAS1xC,EAAOkH,cAAczmB,GAElC,OAAI,MAAOixD,GACH90D,OAAO80D,GAAQhb,cAAclpD,QAAQoP,OAAOjR,GAAO+qD,gBAAkB,GAK9E9gD,EAAO,OACP,MAED,QACCs7D,EAAa,SAAoBzwD,GAChC,OAAOuf,EAAOkH,cAAczmB,IAAS9U,GAEtCiK,EAAO,IAIV0pB,EAAKg3B,cAAcp3B,GAAS,CAAEvzB,MAAOA,EAAOkhB,KAAMqkD,EAAYt7D,KAAMA,GAKrE0pB,EAAKwjB,SAAU,EAEfxjB,EAAK9b,MAAMka,WAAWqZ,kBAMvBs6B,UAAU,EACVD,SAAS,EACTE,WAAW,GAGZpkE,KAAKykE,4BAA4B3xC,IAGlC8wC,EAAOxkE,UAAUqlE,4BAA8B,SAAU3xC,EAAQ6sC,GAChE,IAKI+E,EACAnmC,EACAomC,EACAC,EACAC,EACAC,EACAplC,EAXAqlC,EAAU/kE,KAEVoyB,EAAOpyB,KACPwH,EAAUsrB,EAAOp1B,QAAQsR,OAAOxH,QAChCwqB,EAAQc,EAAOgF,WAYnB,GAAIhF,EAAOp1B,QAAQsR,OAAOg2D,eAAiBlyC,EAAOp1B,QAAQsR,OAAOg2D,cAAc1xC,WAAY,CAC1F,IAAI2xC,EAAmBnyC,EAAOp1B,QAAQsR,OAAOg2D,cAAc1xC,WACvD4xC,EAAwB9yC,EAAKyxC,qBAAqBvjE,QAAQ2kE,GAC1DC,GAAyB,GAC5B9yC,EAAKyxC,qBAAqBhvD,OAAOqwD,EAAuB,GAGzD,IAAIC,EAAiB/yC,EAAK0xC,oBAAoBxjE,QAAQ6kE,GAClDA,GAAkB,GACrB/yC,EAAK0xC,oBAAoBjvD,OAAOswD,EAAgB,GAGjDryC,EAAO4G,eAAe30B,YAAYkgE,GAGnC,GAAIjzC,EAAO,CAWV,OARAc,EAAOp1B,QAAQsR,OAAOo1D,UAAYtxC,EAAOH,WAAWyyC,wBAA0B,SAAU3mE,GACvF,OAAQA,GAAmB,MAAVA,IAGlBimE,EAAgB7hE,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,2BAGpBnE,EAAQyiB,EAAOH,WAAWuK,eACjC,IAAK,SACA9K,EAAK9b,MAAM5Y,QAAQ8gC,KAAK8/B,QAAQxrC,EAAOH,WAAWuK,eACrDqB,EAASnM,EAAK9b,MAAM5Y,QAAQ8gC,KAAK8/B,QAAQxrC,EAAOH,WAAWuK,cAEnB,SAAnCpK,EAAOH,WAAWuK,cAA8D,cAAnCpK,EAAOH,WAAWuK,cAAkCpK,EAAOH,WAAWyyC,yBACvHtyC,EAAOp1B,QAAQsR,OAAOo1D,UAAY,SAAU3lE,GAC3C,OAAiB,IAAVA,IAA4B,IAAVA,KAI3BoD,QAAQ+0B,KAAK,oEAAqE9D,EAAOH,WAAW4L,QAErG,MAED,IAAK,WACJA,EAASzL,EAAOH,WAAWuK,aAC3B,MAED,IAAK,UACApK,EAAOp1B,QAAQ8gC,MAAQ1L,EAAOp1B,QAAQ8gC,KAAKD,OAC9CA,EAASzL,EAAOp1B,QAAQ8gC,KAAKD,OAEzBzL,EAAOH,WAAW6M,WAAapN,EAAK9b,MAAM5Y,QAAQ8gC,KAAK8/B,QAAQxrC,EAAOH,WAAW6M,YACpFjB,EAASnM,EAAK9b,MAAM5Y,QAAQ8gC,KAAK8/B,QAAQxrC,EAAOH,WAAW6M,WAEtB,SAAhC1M,EAAOH,WAAW6M,WAAwD,cAAhC1M,EAAOH,WAAW6M,WAA+B1M,EAAOH,WAAWyyC,yBACjHtyC,EAAOp1B,QAAQsR,OAAOo1D,UAAY,SAAU3lE,GAC3C,OAAiB,IAAVA,IAA4B,IAAVA,KAI3B8/B,EAASnM,EAAK9b,MAAM5Y,QAAQ8gC,KAAK8/B,QAAxB,MAMb,GAAI//B,EAAQ,CA4BX,GA1BAqmC,EAAc,CACb9kC,SAAU,WACT,YAA+B,IAAjB6/B,EAA+BA,EAAe,IAE7D7nC,SAAU,WACT,OAAOhF,EAAOH,WAAWX,OAE1BtrB,WAAY,WACX,OAAOg+D,GAER9wB,UAAW,WACV,OAAO9gB,EAAOuC,gBAEfse,OAAQ,WACP,MAAO,CACNzG,gBAAiB,gBAOpBxN,EAA2B,mBAF3BA,EAAS5M,EAAOH,WAAW0yC,oBAAsB,IAET3lC,EAAO/hC,KAAKy0B,EAAK9b,OAASopB,IAElEilC,EAAgBpmC,EAAO5gC,KAAKqC,KAAKsW,MAAM5Y,QAAQ8gC,KAAMomC,EAAa,aAAgBp9D,EA5FpF,aA4FqGk4B,IAIlG,YADA79B,QAAQ+0B,KAAK,uCAAyC5E,EAAQ,6CAI/D,KAAM2yC,aAAyB3kC,MAE9B,YADAn+B,QAAQ+0B,KAAK,uCAAyC5E,EAAQ,0EAA2E2yC,GAKtI3yC,EACHI,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,yBAA2B8zB,EAAOH,WAAWX,MAAO,SAAUvzB,GAC9FkmE,EAAc/oC,aAAa,mBAAgC,IAAVn9B,GAAyBA,EAAQA,EAAQ2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASotB,QAAQ,4BAG/Hz3B,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,wBAAyB,SAAUP,GACnEkmE,EAAc/oC,aAAa,mBAAyE,IAAnDxJ,EAAKU,OAAOH,WAAWwK,yBAA2C/K,EAAKU,OAAOH,WAAWwK,wBAA0B/K,EAAKU,OAAOH,WAAWwK,wBAA0B1+B,KAKvNkmE,EAAcnnC,iBAAiB,QAAS,SAAUp7B,GACjDA,EAAE+K,kBACFw3D,EAAcvlC,UAGfulC,EAAcnnC,iBAAiB,QAAS,SAAUp7B,GACjD,IAAIkvB,EAAOyzC,EAAQzuD,MAAMqf,cAAc5yB,QAAQ4tB,WAE3CW,IAASyzC,EAAQzuD,MAAMka,WAAWztB,QAAQ4tB,aAC7Co0C,EAAQzuD,MAAMka,WAAWa,iBAAiBC,GAC1CyzC,EAAQzuD,MAAMqf,cAActE,iBAAiBC,MAK/CuzC,GAAc,EAEdC,EAAgB,SAAuB1iE,GAClCyiE,GACHh3D,aAAag3D,GAGdA,EAAcx4D,WAAW,WACxB7E,EAAQm9D,EAAclmE,QACpB,MAGJq0B,EAAOp1B,QAAQsR,OAAOg2D,cAAgBL,EACtC7xC,EAAOp1B,QAAQsR,OAAOm1D,SAAWQ,EAAcW,aAAa,QAAUX,EAAc3C,aAAa,QAAQxY,cAAgB,GACzH12B,EAAOp1B,QAAQsR,OAAOk1D,QAAUS,EAAc/lB,QAAQ4K,eAEL,IAA7C12B,EAAOH,WAAW4yC,yBAEoB,iBAAnCzyC,EAAOH,WAAWuK,cAAsE,cAAnCpK,EAAOH,WAAWuK,eAA8D,iBAA7BpK,EAAOH,WAAW4L,QAA0D,cAA7BzL,EAAOH,WAAW4L,SAA8D,IAAnCzL,EAAOH,WAAWuK,gBAC3NynC,EAAcnnC,iBAAiB,QAASsnC,GACxCH,EAAcnnC,iBAAiB,SAAUsnC,GAGH,UAAlChyC,EAAOp1B,QAAQsR,OAAOm1D,UACzBQ,EAAcnnC,iBAAiB,SAAU,SAAUp7B,GAClDoF,EAAQm9D,EAAclmE,SAKc,QAAlCq0B,EAAOp1B,QAAQsR,OAAOm1D,UAA6C,OAAvBnkE,KAAKsW,MAAM83B,SAC1Du2B,EAAc/oC,aAAa,OAAQ,WAMA,SAAjC9I,EAAOp1B,QAAQsR,OAAOk1D,SAAuD,UAAjCpxC,EAAOp1B,QAAQsR,OAAOk1D,SAAwD,YAAjCpxC,EAAOp1B,QAAQsR,OAAOk1D,SAClHS,EAAcnnC,iBAAiB,YAAa,SAAUp7B,GACrDA,EAAE+K,qBAKLu3D,EAAc9/D,YAAY+/D,GAE1B7xC,EAAO4G,eAAe90B,YAAY8/D,GAElCtyC,EAAKyxC,qBAAqBhjE,KAAK8jE,GAC/BvyC,EAAK0xC,oBAAoBjjE,KAAKiyB,SAG/BjxB,QAAQ+0B,KAAK,oEAAqE9D,EAAOH,WAAWpqB,QAKtGq7D,EAAOxkE,UAAU0iC,yBAA2B,WAC3C9hC,KAAK6jE,qBAAqBt+D,QAAQ,SAAUxC,GAC3CA,EAAQsB,MAAMqoB,QAAU,UAK1Bk3C,EAAOxkE,UAAU4iC,yBAA2B,WAC3ChiC,KAAK6jE,qBAAqBt+D,QAAQ,SAAUxC,GAC3CA,EAAQsB,MAAMqoB,QAAU,MAK1Bk3C,EAAOxkE,UAAU65B,qBAAuB,SAAUnG,GAC7CA,EAAOp1B,QAAQsR,QAAU8jB,EAAOp1B,QAAQsR,OAAOg2D,cAClDlyC,EAAOp1B,QAAQsR,OAAOg2D,cAAc5lC,QAEpCv9B,QAAQ+0B,KAAK,8DAA+D9D,EAAOgF,aAKrF8rC,EAAOxkE,UAAU+5B,qBAAuB,SAAUrG,EAAQr0B,GACrDq0B,IACCA,EAAOp1B,QAAQsR,QAAU8jB,EAAOp1B,QAAQsR,OAAOg2D,eAClDhlE,KAAKykE,4BAA4B3xC,EAAQr0B,GACzCq0B,EAAOp1B,QAAQsR,OAAOxH,QAAQ/I,IAE9BoD,QAAQ+0B,KAAK,wDAAyD9D,EAAOgF,cAKhF8rC,EAAOxkE,UAAU85B,mBAAqB,SAAUpG,GAC3CA,IACCA,EAAOp1B,QAAQsR,QAAU8jB,EAAOp1B,QAAQsR,OAAOg2D,cAClDhlE,KAAKykE,4BAA4B3xC,EAAQA,EAAOp1B,QAAQsR,OAAOvQ,OAE/DoD,QAAQ+0B,KAAK,wDAAyD9D,EAAOgF,cAMhF8rC,EAAOxkE,UAAUomE,WAAa,WAC7B,IAAI5vB,EAAU51C,KAAK41C,QAEnB,OADA51C,KAAK41C,SAAU,EACRA,GAIRguB,EAAOxkE,UAAUqgD,UAAY,SAAUztB,EAAOtpB,EAAMjK,GACxCuB,KAENmhE,WAAa,GAEbrgE,MAAMC,QAAQixB,KAClBA,EAAQ,CAAC,CAAEA,MAAOA,EAAOtpB,KAAMA,EAAMjK,MAAOA,KALlCuB,KAQN6jD,UAAU7xB,IAIhB4xC,EAAOxkE,UAAUykD,UAAY,SAAU7xB,EAAOtpB,EAAMjK,GACnD,IAAI2zB,EAAOpyB,KAENc,MAAMC,QAAQixB,KAClBA,EAAQ,CAAC,CAAEA,MAAOA,EAAOtpB,KAAMA,EAAMjK,MAAOA,KAG7CuzB,EAAMzsB,QAAQ,SAAUyJ,IAEvBA,EAASojB,EAAKqzC,WAAWz2D,MAGxBojB,EAAK+uC,WAAWtgE,KAAKmO,GAErBojB,EAAKwjB,SAAU,KAIb51C,KAAKsW,MAAMzO,QAAQsyC,kBAAoBn6C,KAAKsW,MAAMob,UAAU,eAAe,IAC9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,WAItC8tC,EAAOxkE,UAAUqmE,WAAa,SAAUz2D,GACvC,IACI8jB,EADAV,EAAOpyB,KAGX,GAAIc,MAAMC,QAAQiO,GACjB,OAAOhP,KAAK0lE,eAAe12D,GAG5B,IAAIg1D,GAAa,EA4BjB,MA1B2B,mBAAhBh1D,EAAOgjB,MACjBgyC,EAAa,SAAoBzwD,GAChC,OAAOvE,EAAOgjB,MAAMze,EAAMvE,EAAOtG,MAAQ,KAItC0pB,EAAKmX,QAAQv6B,EAAOtG,MAKtBs7D,GAHDlxC,EAASV,EAAK9b,MAAMqf,cAAcnB,iBAAiBxlB,EAAOgjB,QAG5C,SAAoBze,GAChC,OAAO6e,EAAKmX,QAAQv6B,EAAOtG,MAAMsG,EAAOvQ,MAAOq0B,EAAOkH,cAAczmB,KAGxD,SAAoBA,GAChC,OAAO6e,EAAKmX,QAAQv6B,EAAOtG,MAAMsG,EAAOvQ,MAAO8U,EAAKvE,EAAOgjB,SAI7DnwB,QAAQ+0B,KAAK,uDAAwD5nB,EAAOtG,MAI9EsG,EAAO2Q,KAAOqkD,IAEPh1D,EAAO2Q,MAAO3Q,GAGtB40D,EAAOxkE,UAAUsmE,eAAiB,SAAUn8B,GAC3C,IAAInX,EAAOpyB,KACPovB,EAAS,GAUb,OARAma,EAAQhkC,QAAQ,SAAUyJ,IACzBA,EAASojB,EAAKqzC,WAAWz2D,KAGxBogB,EAAOvuB,KAAKmO,OAIPogB,EAAOvvB,QAASuvB,GAIxBw0C,EAAOxkE,UAAUoqC,WAAa,SAAUsa,EAAK3f,GAC5C,IAAI/U,EAAS,GAgBb,OAdI00B,IACH10B,EAASpvB,KAAK+jD,oBAGX5f,GACH/U,EAAO7pB,QAAQ,SAAU+hC,GACA,mBAAbA,EAAK5+B,OACf4+B,EAAK5+B,KAAO,cAKf0mB,EAASA,EAAO5d,OAAOxR,KAAK2lE,eAAe3lE,KAAKmhE,WAAYh9B,KAM7Dy/B,EAAOxkE,UAAUumE,eAAiB,SAAUxE,EAAYh9B,GACvD,IAAIyhC,EAAU5lE,KAEVovB,EAAS,GAoBb,OAlBA+xC,EAAW57D,QAAQ,SAAUyJ,GAC5B,IAAIs4B,EAEAxmC,MAAMC,QAAQiO,GACjBogB,EAAOvuB,KAAK+kE,EAAQD,eAAe32D,EAAQm1B,KAE3CmD,EAAO,CAAEtV,MAAOhjB,EAAOgjB,MAAOtpB,KAAMsG,EAAOtG,KAAMjK,MAAOuQ,EAAOvQ,OAE3D0lC,GACqB,mBAAbmD,EAAK5+B,OACf4+B,EAAK5+B,KAAO,YAId0mB,EAAOvuB,KAAKymC,MAIPlY,GAIRw0C,EAAOxkE,UAAU2kD,iBAAmB,WACnC,IACI30B,EAAS,GAEb,IAAK,IAAIrwB,KAAOiB,KAAKopD,cACpBh6B,EAAOvuB,KAAK,CAAEmxB,MAAOjzB,EAAK2J,KAAM1I,KAAKopD,cAAcrqD,GAAK2J,KAAMjK,MAAOuB,KAAKopD,cAAcrqD,GAAKN,QAG9F,OAAO2wB,GAIRw0C,EAAOxkE,UAAU4kD,aAAe,SAAUhyB,EAAOtpB,EAAMjK,GACtD,IAAI2zB,EAAOpyB,KAENc,MAAMC,QAAQixB,KAClBA,EAAQ,CAAC,CAAEA,MAAOA,EAAOtpB,KAAMA,EAAMjK,MAAOA,KAG7CuzB,EAAMzsB,QAAQ,SAAUyJ,GACvB,IAAIikB,GAAS,GAGZA,EAD4B,UAAzB5iB,EAAQrB,EAAOgjB,OACVI,EAAK+uC,WAAWtxC,UAAU,SAAU9sB,GAC3C,OAAOiM,IAAWjM,IAGXqvB,EAAK+uC,WAAWtxC,UAAU,SAAU9sB,GAC3C,OAAOiM,EAAOgjB,QAAUjvB,EAAQivB,OAAShjB,EAAOtG,OAAS3F,EAAQ2F,MAAQsG,EAAOvQ,QAAUsE,EAAQtE,UAIvF,GACZ2zB,EAAK+uC,WAAWtsD,OAAOoe,EAAO,GAC9Bb,EAAKwjB,SAAU,GAEf/zC,QAAQ+0B,KAAK,2DAA4D5nB,EAAOtG,QAI9E1I,KAAKsW,MAAMzO,QAAQsyC,kBAAoBn6C,KAAKsW,MAAMob,UAAU,eAAe,IAC9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,WAKtC8tC,EAAOxkE,UAAU6kD,YAAc,SAAUH,GACxC9jD,KAAKmhE,WAAa,GAEdrd,GACH9jD,KAAKkkD,oBAGNlkD,KAAK41C,SAAU,EAEX51C,KAAKsW,MAAMzO,QAAQsyC,kBAAoBn6C,KAAKsW,MAAMob,UAAU,eAAe,IAC9E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,WAKtC8tC,EAAOxkE,UAAU8kD,kBAAoB,WACpC,IAAI9xB,EAAOpyB,KAEXA,KAAKopD,cAAgB,GAErBppD,KAAK8jE,oBAAoBv+D,QAAQ,SAAUutB,GAC1CA,EAAOp1B,QAAQsR,OAAOvQ,MAAQ,KAC9B2zB,EAAK8G,mBAAmBpG,KAGzB9yB,KAAK41C,SAAU,GAIhBguB,EAAOxkE,UAAUiiD,OAAS,SAAUwkB,EAAY7zC,EAAOtpB,EAAMjK,GAC5D,IAAI2zB,EAAOpyB,KACPy3B,EAAa,GACb0pC,EAAa,GA4BjB,OA1BKrgE,MAAMC,QAAQixB,KAClBA,EAAQ,CAAC,CAAEA,MAAOA,EAAOtpB,KAAMA,EAAMjK,MAAOA,KAG7CuzB,EAAMzsB,QAAQ,SAAUyJ,IACvBA,EAASojB,EAAKqzC,WAAWz2D,KAGxBmyD,EAAWtgE,KAAKmO,KAIlBhP,KAAKsW,MAAMka,WAAWzS,KAAKxY,QAAQ,SAAUssB,GAC5C,IAAIK,GAAQ,EAEZivC,EAAW57D,QAAQ,SAAUyJ,GACvBojB,EAAK0zC,cAAc92D,EAAQ6iB,EAAIgV,aACnC3U,GAAQ,KAINA,GACHuF,EAAW52B,KAAoB,SAAfglE,EAAwBh0C,EAAIgV,QAAQ,QAAUhV,EAAIwD,kBAI7DoC,GAIRmsC,EAAOxkE,UAAU4P,OAAS,SAAU+2D,EAASx8B,GAC5C,IAAInX,EAAOpyB,KACPy3B,EAAa,GACbuuC,EAAsB,GA0B1B,OAxBI5zC,EAAK9b,MAAMzO,QAAQu1C,eACtBhrB,EAAK9b,MAAMzO,QAAQu1C,cAAcz/C,KAAKy0B,EAAK9b,MAAO8b,EAAKoX,cAGnDpX,EAAK9b,MAAMzO,QAAQyhC,gBAAkBlX,EAAK+uC,WAAWthE,SAAU3B,OAAOmC,KAAK+xB,EAAKg3B,eAAevpD,OAQnG43B,EAAasuC,EAAQ1iE,MAAM,GAN3B0iE,EAAQxgE,QAAQ,SAAUssB,GACrBO,EAAK6zC,UAAUp0C,IAClB4F,EAAW52B,KAAKgxB,KAOfO,EAAK9b,MAAMzO,QAAQw1C,eAEtB5lB,EAAWlyB,QAAQ,SAAUssB,GAC5Bm0C,EAAoBnlE,KAAKgxB,EAAIwD,kBAG9BjD,EAAK9b,MAAMzO,QAAQw1C,aAAa1/C,KAAKy0B,EAAK9b,MAAO8b,EAAKoX,aAAcw8B,IAG9DvuC,GAIRmsC,EAAOxkE,UAAU6mE,UAAY,SAAUp0C,EAAK0X,GAC3C,IAAInX,EAAOpyB,KACPkyB,GAAQ,EACR3e,EAAOse,EAAIgV,UAQf,IAAK,IAAI7U,KANTI,EAAK+uC,WAAW57D,QAAQ,SAAUyJ,GAC5BojB,EAAK0zC,cAAc92D,EAAQuE,KAC/B2e,GAAQ,KAIQE,EAAKg3B,cACjBh3B,EAAKg3B,cAAcp3B,GAAOrS,KAAKpM,KACnC2e,GAAQ,GAIV,OAAOA,GAGR0xC,EAAOxkE,UAAU0mE,cAAgB,SAAU92D,EAAQuE,GAClD,IAAI6e,EAAOpyB,KACPkyB,GAAQ,EAYZ,OAVIpxB,MAAMC,QAAQiO,GACjBA,EAAOzJ,QAAQ,SAAU2gE,GACpB9zC,EAAK0zC,cAAcI,EAAW3yD,KACjC2e,GAAQ,KAIVA,EAAQljB,EAAO2Q,KAAKpM,GAGd2e,GAIR0xC,EAAOxkE,UAAUmqC,QAAU,CAG1B48B,IAAK,SAAWC,EAAWC,EAAQ1W,EAAS2W,GAC3C,OAAOD,GAAUD,GAIlBG,IAAK,SAAWH,EAAWC,EAAQ1W,EAAS2W,GAC3C,OAAOD,EAASD,GAIjBI,KAAM,SAAWJ,EAAWC,EAAQ1W,EAAS2W,GAC5C,OAAOD,GAAUD,GAIlBK,IAAK,SAAWL,EAAWC,EAAQ1W,EAAS2W,GAC3C,OAAOD,EAASD,GAIjBM,KAAM,SAAWN,EAAWC,EAAQ1W,EAAS2W,GAC5C,OAAOD,GAAUD,GAIlBO,KAAM,SAAWP,EAAWC,EAAQ1W,EAAS2W,GAC5C,OAAOD,GAAUD,GAGlBQ,MAAS,SAAeR,EAAWC,EAAQ1W,EAAS2W,GAMnD,MAJwB,iBAAbF,IACVA,EAAY,IAAIS,OAAOT,IAGjBA,EAAU7iE,KAAK8iE,IAIvBS,KAAQ,SAAcV,EAAWC,EAAQ1W,EAAS2W,GACjD,OAAIF,QACIC,IAAWD,EAEd,MAAOC,GACH32D,OAAO22D,GAAQ7c,cAAclpD,QAAQ8lE,EAAU5c,gBAAkB,GAQ3ExlC,GAAM,SAAaoiD,EAAWC,EAAQ1W,EAAS2W,GAC9C,OAAIxlE,MAAMC,QAAQqlE,GACVA,EAAU9lE,QAAQ+lE,IAAW,GAEpCxkE,QAAQ+0B,KAAK,+CAAgDwvC,IACtD,KAKVvwD,EAAUzW,UAAUknD,eAAe,SAAUsd,GAC7C,IAAImD,EAAS,SAAgBzwD,GAC5BtW,KAAKsW,MAAQA,GAIdywD,EAAO3nE,UAAU69B,iBAAmB,SAAUnK,GAC7C,IACIguB,EAAS,CAAEphB,OAAQ5M,EAAOH,WAAWpsB,iBAAmB,IAG5D,OAAQ8J,EAAQyiB,EAAOH,WAAW6M,YACjC,IAAK,SAEgC,SAAhC1M,EAAOH,WAAW6M,YACrB1M,EAAOH,WAAW6M,UAAY,iBAEW,IAA9BshB,EAAOphB,OAAOsnC,eACxBlmB,EAAOphB,OAAOsnC,cAAe,GAG9BnlE,QAAQ+0B,KAAK,8IAdL52B,KAiBAinE,WAAWn0C,EAAOH,WAAW6M,WACrCshB,EAAOthB,UAlBCx/B,KAkBgBinE,WAAWn0C,EAAOH,WAAW6M,YAErD39B,QAAQ+0B,KAAK,8CAA+C9D,EAAOH,WAAW6M,WAC9EshB,EAAOthB,UArBCx/B,KAqBgBinE,WAAWC,WAEpC,MAED,IAAK,WACJpmB,EAAOthB,UAAY1M,EAAOH,WAAW6M,UACrC,MAED,QACCshB,EAAOthB,UA9BEx/B,KA8BeinE,WAAWC,UAIrCp0C,EAAOp1B,QAAQuE,OAAS6+C,GAGzBimB,EAAO3nE,UAAUsyC,aAAe,SAAUprC,GACrCA,EAAKwsB,OAAOp1B,QAAQuE,OAAOklE,kBAC9B7gE,EAAKwsB,OAAOp1B,QAAQuE,OAAOklE,oBAK7BJ,EAAO3nE,UAAUs2C,YAAc,SAAUpvC,GACxC,IAAIwuC,EAAYxuC,EAAK+uB,eACjBqK,EAAsD,mBAAtCp5B,EAAKwsB,OAAOp1B,QAAQuE,OAAOy9B,OAAwBp5B,EAAKwsB,OAAOp1B,QAAQuE,OAAOy9B,OAAOoV,GAAaxuC,EAAKwsB,OAAOp1B,QAAQuE,OAAOy9B,OAMjJ,OAAOp5B,EAAKwsB,OAAOp1B,QAAQuE,OAAOu9B,UAAU7hC,KAAKqC,KAAM80C,EAAWpV,EAJlE,SAAoB52B,GACnBxC,EAAKwsB,OAAOp1B,QAAQuE,OAAOklE,iBAAmBr+D,KAMhDi+D,EAAO3nE,UAAUgoE,aAAe,SAAU3oE,GACzC,GAAIA,EAAO,CACV,IAAI4oE,EAAY,CACfC,IAAK,QACLf,IAAK,OACLE,IAAK,OACLc,IAAK,SACLC,IAAK,QACLC,IAAK,SACLC,IAAK,SACLvB,IAAK,UAGN,OAAOz2D,OAAOjR,GAAOgE,QAAQ,eAAgB,SAAUlD,GACtD,OAAO8nE,EAAU9nE,KAGlB,OAAOd,GAITsoE,EAAO3nE,UAAUuoE,aAAe,SAAUlpE,GACzC,OAAOA,QAAiD,QAAUA,GAInEsoE,EAAO3nE,UAAUygC,aAAe,SAAUL,GAGzC,YAA6B,IAAdA,EAA4B,YAAcnvB,EAAQmvB,IAChE,IAAK,SACAx/B,KAAKinE,WAAWznC,GACnBA,EAAYx/B,KAAKinE,WAAWznC,IAE5B39B,QAAQ+0B,KAAK,8CAA+C4I,GAC5DA,EAAYx/B,KAAKinE,WAAWC,WAE7B,MAED,IAAK,WACJ1nC,EAAYA,EACZ,MAED,QACCA,EAAYx/B,KAAKinE,WAAWC,UAI9B,OAAO1nC,GAIRunC,EAAO3nE,UAAU6nE,WAAa,CAE7BC,UAAW,SAAmB5gE,EAAMC,EAAiBC,GACpD,OAAOxG,KAAK2nE,aAAa3nE,KAAKonE,aAAa9gE,EAAKw5B,cAIjD8nC,KAAM,SAActhE,EAAMC,EAAiBC,GAC1C,OAAOF,EAAKw5B,YAIbs/B,SAAU,SAAkB94D,EAAMC,EAAiBC,GAElD,OADAF,EAAKI,aAAarC,MAAMg7D,WAAa,WAC9Br/D,KAAK2nE,aAAa3nE,KAAKonE,aAAa9gE,EAAKw5B,cAIjD+nC,MAAO,SAAevhE,EAAMC,EAAiBC,GAC5C,IACIg5D,EACAsI,EACAC,EACAC,EAJAC,EAAW17D,WAAWjG,EAAKw5B,YAM3BooC,EAAa3hE,EAAgBwhE,SAAW,IACxCI,EAAc5hE,EAAgB6hE,UAAY,IAC1CC,EAAS9hE,EAAgB8hE,QAAU,GACnC7yC,IAAUjvB,EAAgB+hE,YAC1BxX,OAAiD,IAA9BvqD,EAAgBuqD,UAA4BvqD,EAAgBuqD,UAAY,EAE/F,GAAI7+B,MAAMg2C,GACT,OAAOjoE,KAAK2nE,aAAa3nE,KAAKonE,aAAa9gE,EAAKw5B,aAWjD,IARA0/B,GAAuB,IAAd1O,EAAsBmX,EAAShX,QAAQH,GAAamX,EAG7DH,GAFAtI,EAAS9vD,OAAO8vD,GAAQzvD,MAAM,MAEb,GACjBg4D,EAAUvI,EAAO3/D,OAAS,EAAIqoE,EAAa1I,EAAO,GAAK,GAEvDwI,EAAM,eAECA,EAAIzkE,KAAKukE,IACfA,EAAUA,EAAQrlE,QAAQulE,EAAK,KAAOG,EAAc,MAGrD,OAAO3yC,EAAQsyC,EAAUC,EAAUM,EAASA,EAASP,EAAUC,GAIhEjxB,KAAM,SAAcxwC,EAAMC,EAAiBC,GAC1C,IAAI/H,EAAQ6H,EAAKw5B,WACbyoC,EAAYhiE,EAAgBgiE,WAAa,GACzClsD,EAAQrc,KAAK2nE,aAAalpE,GAC1BqyB,EAAKjuB,SAASC,cAAc,KAQhC,GALIyD,EAAgBiiE,aAEnBnsD,EADO/V,EAAKugC,UACCtgC,EAAgBiiE,aAG1BjiE,EAAgB8V,MACnB,OAAQhM,EAAQ9J,EAAgB8V,QAC/B,IAAK,SACJA,EAAQ9V,EAAgB8V,MACxB,MAED,IAAK,WACJA,EAAQ9V,EAAgB8V,MAAM/V,GAUjC,GALIC,EAAgBkiE,WAEnBhqE,EADO6H,EAAKugC,UACCtgC,EAAgBkiE,WAG1BliE,EAAgBslD,IACnB,OAAQx7C,EAAQ9J,EAAgBslD,MAC/B,IAAK,SACJptD,EAAQ8H,EAAgBslD,IACxB,MAED,IAAK,WACJptD,EAAQ8H,EAAgBslD,IAAIvlD,GAa/B,OARAwqB,EAAG8K,aAAa,OAAQ2sC,EAAY9pE,GAEhC8H,EAAgB5G,QACnBmxB,EAAG8K,aAAa,SAAUr1B,EAAgB5G,QAG3CmxB,EAAGmP,UAAYjgC,KAAK2nE,aAAa3nE,KAAKonE,aAAa/qD,IAE5CyU,GAIR43C,MAAO,SAAepiE,EAAMC,EAAiBC,GAC5C,IAAIsqB,EAAKjuB,SAASC,cAAc,OAGhC,OAFAguB,EAAG8K,aAAa,MAAOt1B,EAAKw5B,YAEpBzvB,EAAQ9J,EAAgB9B,SAC/B,IAAK,SACJqsB,EAAGzsB,MAAMI,OAAS8B,EAAgB9B,OAAS,KAC3C,MAED,IAAK,SACJqsB,EAAGzsB,MAAMI,OAAS8B,EAAgB9B,OAIpC,OAAQ4L,EAAQ9J,EAAgB/B,QAC/B,IAAK,SACJssB,EAAGzsB,MAAMG,MAAQ+B,EAAgB/B,MAAQ,KACzC,MAED,IAAK,SACJssB,EAAGzsB,MAAMG,MAAQ+B,EAAgB/B,MAQnC,OAJAssB,EAAG0M,iBAAiB,OAAQ,WAC3Bl3B,EAAKqtC,SAASzG,oBAGRpc,GAIRuyC,UAAW,SAAmB/8D,EAAMC,EAAiBC,GACpD,IAAI/H,EAAQ6H,EAAKw5B,WACb/8B,EAAUuD,EAAKI,aACf+3C,EAAQl4C,EAAgBq7D,WACxB+G,EAASpiE,EAAgBqiE,YACzBC,OAA8C,IAAhCtiE,EAAgBuiE,YAA8BviE,EAAgBuiE,YAAc,qkBAC1FC,OAAgD,IAAjCxiE,EAAgBygE,aAA+BzgE,EAAgBygE,aAAe,4rBAEjG,OAAI2B,GAAUlqE,IAAmB,IAAVA,GAA4B,SAAVA,GAA8B,SAAVA,GAA8B,IAAVA,GAAyB,MAAVA,GAC/FsE,EAAQ64B,aAAa,gBAAgB,GAC9BitC,GAAQ,KAEXpqB,GAAoB,SAAVhgD,GAA8B,KAAVA,GAAzB,MAAyCA,GAIjDsE,EAAQ64B,aAAa,gBAAgB,GAC9BmtC,GAAS,KAJhBhmE,EAAQ64B,aAAa,eAAgB,SAC9B,KAQVotC,SAAU,SAAkB1iE,EAAMC,EAAiBC,GAClD,IAAIyiE,EAAc1iE,EAAgB0iE,aAAe,sBAC7CC,EAAe3iE,EAAgB2iE,cAAgB,sBAC/CC,OAAwD,IAAvC5iE,EAAgB6iE,mBAAqC7iE,EAAgB6iE,mBAAqB,GAC3G3qE,EAAQ6H,EAAKw5B,WAEbupC,EAAcC,OAAO7qE,EAAOwqE,GAEhC,OAAII,EAAYE,UACRF,EAAYpnE,OAAOinE,IAGV,IAAZC,EACI1qE,EACsB,mBAAZ0qE,EACVA,EAAQ1qE,GAER0qE,GAKVK,aAAc,SAAkBljE,EAAMC,EAAiBC,GACtD,IAAIyiE,EAAc1iE,EAAgB0iE,aAAe,sBAC7CE,OAAwD,IAAvC5iE,EAAgB6iE,mBAAqC7iE,EAAgB6iE,mBAAqB,GAC3Gp+D,OAA2C,IAA3BzE,EAAgByE,QAAyBzE,EAAgByE,OACzE0wD,OAAuC,IAAzBn1D,EAAgBm1D,KAAuBn1D,EAAgBm1D,UAAOv6D,EAC5EsoE,OAA+C,IAA7BljE,EAAgBkjE,UAA2BljE,EAAgBkjE,SAC7EC,OAAuC,IAAzBnjE,EAAgBmjE,KAAuBnjE,EAAgBmjE,KAAOJ,SAC5E7qE,EAAQ6H,EAAKw5B,WAEbupC,EAAcC,OAAO7qE,EAAOwqE,GAEhC,OAAII,EAAYE,UACXE,EACIH,OAAO9/D,SAAS6/D,EAAYt9B,KAAK29B,IAAOD,SAASz+D,GAEjDq+D,EAAYt9B,KAAK29B,EAAMhO,IAAS1wD,EAAS,IAAMA,EAAS,KAIhD,IAAZm+D,EACI1qE,EACsB,mBAAZ0qE,EACVA,EAAQ1qE,GAER0qE,GAMV9S,OAAQ,SAAgB/vD,EAAMC,EAAiBC,GAC9C,IAAI/H,EAAQ6H,EAAKw5B,WAEjB,YAAsC,IAA3Bv5B,EAAgB9H,IAC1BoD,QAAQ+0B,KAAK,6BAA+Bn4B,GACrCA,GAGD8H,EAAgB9H,IAIxBqjE,KAAM,SAAcx7D,EAAMC,EAAiBC,GAC1C,IAAI/H,EAAQ6H,EAAKw5B,WACb/8B,EAAUuD,EAAKI,aACfq7D,EAAWx7D,GAAmBA,EAAgB07D,MAAQ17D,EAAgB07D,MAAQ,EAC9EA,EAAQp/D,SAASC,cAAc,QAC/Bg/D,EAAOj/D,SAASs/D,gBAAgB,6BAA8B,OAKlEF,EAAM59D,MAAM2vB,cAAgB,SAG5B8tC,EAAKlmC,aAAa,QAAS,MAC3BkmC,EAAKlmC,aAAa,SAAU,MAC5BkmC,EAAKlmC,aAAa,UAAW,eAC7BkmC,EAAKlmC,aAAa,YAAa,YAC/BkmC,EAAKz9D,MAAM46D,QAAU,QAErBxgE,EAAQ6V,SAAS7V,GAASsjE,EAAWztD,SAAS7V,GAASsjE,EAEvD,IAAK,IAAIvkE,EAAI,EAAGA,GAAKukE,EAAUvkE,IAAK,CACnC,IAAI+kE,EAAWT,EAAK7J,WAAU,GAC9BsK,EAAStiC,UAAYziC,GAAKiB,EAjBV,0SACE,0SAkBlBwjE,EAAMr9D,YAAY29D,GASnB,OANAx/D,EAAQsB,MAAMg7D,WAAa,SAC3Bt8D,EAAQsB,MAAMK,SAAW,SACzB3B,EAAQsB,MAAMo+D,aAAe,WAE7B1/D,EAAQ64B,aAAa,aAAcn9B,GAE5BwjE,GAGR0H,QAAS,SAAiBrjE,EAAMC,EAAiBC,GAChD,IAMIq8D,EACA+G,EAPAnrE,EAAQuB,KAAKonE,aAAa9gE,EAAKw5B,aAAe,EAC9ChP,EAAKjuB,SAASC,cAAc,QAC5B4Z,EAAMnW,GAAmBA,EAAgBmW,IAAMnW,EAAgBmW,IAAM,IACrEI,EAAMvW,GAAmBA,EAAgBuW,IAAMvW,EAAgBuW,IAAM,EACrE+sD,EAAStjE,QAAoD,IAA1BA,EAAgBgmB,MAAwBhmB,EAAgBgmB,MAAQ,CAAC,MAAO,SAAU,SACrHA,EAAQ,UAIZ,IAAI0F,MAAMxzB,SAAqC,IAApB6H,EAAKw5B,WAAhC,CAeA,OAXAhP,EAAGC,UAAUvc,IAAI,2BAGjBo1D,EAAer9D,WAAW9N,IAAUie,EAAMnQ,WAAW9N,GAASie,EAC9DktD,EAAer9D,WAAWq9D,IAAiB9sD,EAAMvQ,WAAWq9D,GAAgB9sD,EAG5E+lD,GAAWnmD,EAAMI,GAAO,IACxB8sD,EAAezzD,KAAK+sD,OAAO0G,EAAe9sD,GAAO+lD,QAGvB,IAAXgH,EAAyB,YAAcx5D,EAAQw5D,IAC7D,IAAK,SACJt9C,EAAQs9C,EACR,MACD,IAAK,WACJt9C,EAAQs9C,EAAOprE,GACf,MACD,IAAK,SACJ,GAAIqC,MAAMC,QAAQ8oE,GAAS,CAC1B,IAAInO,EAAO,IAAMmO,EAAOhqE,OACpBozB,EAAQ9c,KAAKC,MAAMwzD,EAAelO,GAEtCzoC,EAAQ9c,KAAK2G,IAAImW,EAAO42C,EAAOhqE,OAAS,GAExC0sB,EAAQs9C,EADR52C,EAAQ9c,KAAKuG,IAAIuW,EAAO,IAExB,OAMH,OAFAnC,EAAGzsB,MAAM8+D,gBAAkB52C,EAEpBuE,IAIR4xC,SAAU,SAAkBp8D,EAAMC,EAAiBC,GAElD,IAKIq8D,EACA+G,EACAr9C,EACAu9C,EACAC,EATAtrE,EAAQuB,KAAKonE,aAAa9gE,EAAKw5B,aAAe,EAC9C/8B,EAAUuD,EAAKI,aACfgW,EAAMnW,GAAmBA,EAAgBmW,IAAMnW,EAAgBmW,IAAM,IACrEI,EAAMvW,GAAmBA,EAAgBuW,IAAMvW,EAAgBuW,IAAM,EACrEktD,EAAczjE,GAAmBA,EAAgByjE,YAAczjE,EAAgByjE,YAAc,SAoBjG,OARAJ,EAAer9D,WAAW9N,IAAUie,EAAMnQ,WAAW9N,GAASie,EAC9DktD,EAAer9D,WAAWq9D,IAAiB9sD,EAAMvQ,WAAWq9D,GAAgB9sD,EAG5E+lD,GAAWnmD,EAAMI,GAAO,IACxB8sD,EAAezzD,KAAK+sD,OAAO0G,EAAe9sD,GAAO+lD,GAGzCxyD,EAAQ9J,EAAgBgmB,QAC/B,IAAK,SACJA,EAAQhmB,EAAgBgmB,MACxB,MACD,IAAK,WACJA,EAAQhmB,EAAgBgmB,MAAM9tB,GAC9B,MACD,IAAK,SACJ,GAAIqC,MAAMC,QAAQwF,EAAgBgmB,OAAQ,CACzC,IAAImvC,EAAO,IAAMn1D,EAAgBgmB,MAAM1sB,OACnCozB,EAAQ9c,KAAKC,MAAMwzD,EAAelO,GAEtCzoC,EAAQ9c,KAAK2G,IAAImW,EAAO1sB,EAAgBgmB,MAAM1sB,OAAS,GACvDozB,EAAQ9c,KAAKuG,IAAIuW,EAAO,GACxB1G,EAAQhmB,EAAgBgmB,MAAM0G,GAC9B,MAEF,QACC1G,EAAQ,UAIV,OAAQlc,EAAQ9J,EAAgBujE,SAC/B,IAAK,SACJA,EAASvjE,EAAgBujE,OACzB,MACD,IAAK,WACJA,EAASvjE,EAAgBujE,OAAOrrE,GAChC,MACD,IAAK,UACJqrE,EAASrrE,EACT,MACD,QACCqrE,GAAS,EAIX,OAAQz5D,EAAQ9J,EAAgBwjE,cAC/B,IAAK,SACJA,EAAcxjE,EAAgBwjE,YAC9B,MACD,IAAK,WACJA,EAAcxjE,EAAgBwjE,YAAYtrE,GAC1C,MACD,IAAK,SACJ,GAAIqC,MAAMC,QAAQwF,EAAgBwjE,aAAc,CAC3CrO,EAAO,IAAMn1D,EAAgBwjE,YAAYlqE,OACzCozB,EAAQ9c,KAAKC,MAAMwzD,EAAelO,GAEtCzoC,EAAQ9c,KAAK2G,IAAImW,EAAO1sB,EAAgBwjE,YAAYlqE,OAAS,GAC7DozB,EAAQ9c,KAAKuG,IAAIuW,EAAO,GACxB82C,EAAcxjE,EAAgBwjE,YAAY92C,GAE3C,MACD,QACC82C,EAAc,OAQhB,OALAhnE,EAAQsB,MAAM+yB,SAAW,OACzBr0B,EAAQsB,MAAMC,SAAW,WAEzBvB,EAAQ64B,aAAa,aAAcguC,GAE5B,2DAA6DltD,EAAM,eAAiBI,EAAM,4DAA8D8sD,EAAe,wBAA0Br9C,EAAQ,yCAA2Cu9C,EAAS,8DAAgEE,EAAc,uBAAyBD,EAAc,MAAQD,EAAS,SAAW,KAItZv9C,MAAO,SAAejmB,EAAMC,EAAiBC,GAE5C,OADAF,EAAKI,aAAarC,MAAM8+D,gBAAkBnjE,KAAKonE,aAAa9gE,EAAKw5B,YAC1D,IAIRmqC,WAAY,SAAoB3jE,EAAMC,EAAiBC,GACtD,MAAO,skBAIR0jE,YAAa,SAAqB5jE,EAAMC,EAAiBC,GACxD,MAAO,4rBAIR2jE,OAAQ,SAAgB7jE,EAAMC,EAAiBC,GAC9C,OAAOxG,KAAKsW,MAAMka,WAAWiH,WAAWn3B,QAAQgG,EAAKqtC,SAASrf,YAAc,GAI7EwuC,OAAQ,SAAgBx8D,EAAMC,EAAiBC,GAE9C,OADAF,EAAKI,aAAaqqB,UAAUvc,IAAI,wBACzB,oLAGR41D,mBAAoB,SAA4B9jE,EAAMC,EAAiBC,GACtE,IACI2W,GAAO,EACP2T,EAAKjuB,SAASC,cAAc,OAEhC,SAASunE,EAAWC,GACnB,IAAIC,EAAWjkE,EAAKqtC,SAASjtC,aAAajD,uBAAuB,iCAAiC,IAElG0Z,EAAOmtD,IAGNx5C,EAAGC,UAAUvc,IAAI,QACb+1D,IACHA,EAASlmE,MAAMqoB,QAAU,MAG1BoE,EAAGC,UAAU3oB,OAAO,QAChBmiE,IACHA,EAASlmE,MAAMqoB,QAAU,SAqB5B,OAhBAoE,EAAGC,UAAUvc,IAAI,wCACjBsc,EAAGmP,UAAY,oIAEf35B,EAAKI,aAAaqqB,UAAUvc,IAAI,wBAzBrBxU,KA2BFsW,MAAMzO,QAAQyyC,oCACtBn9B,GAAO,GAGR2T,EAAG0M,iBAAiB,QAAS,SAAUp7B,GACtCA,EAAE2+D,2BACFsJ,GAAYltD,KAGbktD,EAAWltD,GAEJ2T,IAITjb,EAAUzW,UAAUknD,eAAe,SAAUygB,GAE7C,IAAIyD,EAAgB,SAAuBl0D,GAC1CtW,KAAKsW,MAAQA,EACbtW,KAAKyqE,YAAc,GACnBzqE,KAAK0qE,aAAe,GACpB1qE,KAAK2qE,WAAa,EAClB3qE,KAAK4qE,YAAc,EACnB5qE,KAAK6qE,aAAe,EACpB7qE,KAAK8qE,mBAAqB,OAC1B9qE,KAAKg1B,QAAS,EACdh1B,KAAK+qE,gBAAiB,GAIvBP,EAAcprE,UAAUizB,MAAQ,WAC/BryB,KAAK8qE,mBAAqB,OAC1B9qE,KAAKyqE,YAAc,GACnBzqE,KAAK0qE,aAAe,GACpB1qE,KAAK2qE,WAAa,EAClB3qE,KAAK4qE,YAAc,EACnB5qE,KAAK4qE,YAAc,EACnB5qE,KAAKg1B,QAAS,EAEdh1B,KAAKsW,MAAMqf,cAActF,eAAehsB,MAAMotB,WAAa,EAC3DzxB,KAAKsW,MAAMqf,cAAc5yB,QAAQsB,MAAMgQ,aAAe,GAIvDm2D,EAAcprE,UAAU69B,iBAAmB,SAAUnK,GACpD,IAAIguB,EAAS,CAAEvT,OAAQ,EAAGy9B,MAAM,GAE5Bl4C,EAAOH,WAAWs4C,OAEhBn4C,EAAO+F,OAAOL,QAkBlB32B,QAAQ+0B,KAAK,0DAhBR9D,EAAO0F,QAaX32B,QAAQ+0B,KAAK,yDAZbkqB,EAAOx8C,SAAWtE,KAAK8qE,mBAEQ,QAA3B9qE,KAAK8qE,mBACR9qE,KAAKyqE,YAAY5pE,KAAKiyB,GAEtB9yB,KAAK0qE,aAAal3C,QAAQV,GAG3B9yB,KAAKg1B,QAAS,EAEdlC,EAAOp1B,QAAQutE,OAASnqB,GAQ1B9gD,KAAK8qE,mBAAqB,SAK5BN,EAAcprE,UAAUiyB,iBAAmB,WAC1C,IAEItT,EAFAmtD,EAAUlrE,KAIVA,KAAKg1B,SACRnnB,aAAa7N,KAAK+qE,gBAGlB/qE,KAAK+qE,eAAiB1+D,WAAW,WAChC6+D,EAAQj0D,UACN,KAEH8G,EAAO/d,KAAKsW,MAAMka,WAAW6a,iBAE7BrrC,KAAKmrE,cAELnrE,KAAKorE,uBAELprE,KAAKqrE,iBAELttD,EAAKxY,QAAQ,SAAUssB,GACL,QAAbA,EAAInpB,MACPwiE,EAAQz5B,UAAU5f,KAIpB7xB,KAAKsW,MAAMka,WAAW6R,aAAah+B,MAAM6zD,YAAcl4D,KAAK4qE,cAK9DJ,EAAcprE,UAAU+rE,YAAc,WACrCnrE,KAAK2qE,WAAa3qE,KAAKsrE,WAAWtrE,KAAKyqE,YAAazqE,KAAKyqE,YAAY5qE,QAAU,KAC/EG,KAAKsW,MAAMqf,cAActF,eAAehsB,MAAMotB,WAAazxB,KAAK2qE,WAEhE3qE,KAAK4qE,YAAc5qE,KAAKsrE,WAAWtrE,KAAK0qE,aAAc1qE,KAAK0qE,aAAa7qE,QAAU,KAClFG,KAAKsW,MAAMqf,cAAc5yB,QAAQsB,MAAMgQ,aAAerU,KAAK4qE,YAG3D5qE,KAAK6qE,aAAe7qE,KAAKsW,MAAMka,WAAWztB,QAAQ+B,YAAc9E,KAAKsW,MAAMqf,cAAchF,YAI1F65C,EAAcprE,UAAUisE,eAAiB,WACpCrrE,KAAKsW,MAAMob,UAAU,iBACpB1xB,KAAKsW,MAAM5Y,QAAQ85B,YAAYq3B,gBAAkB7uD,KAAKsW,MAAM5Y,QAAQ85B,YAAYkU,QACnF1rC,KAAKyxC,UAAUzxC,KAAKsW,MAAM5Y,QAAQ85B,YAAYkU,QAE3C1rC,KAAKsW,MAAM5Y,QAAQ85B,YAAYs3B,gBAAkB9uD,KAAKsW,MAAM5Y,QAAQ85B,YAAYo3B,QACnF5uD,KAAKyxC,UAAUzxC,KAAKsW,MAAM5Y,QAAQ85B,YAAYo3B,UAMjD4b,EAAcprE,UAAUgsE,qBAAuB,SAAUG,GACxD,IAAIC,EAAUxrE,KAEdA,KAAKyqE,YAAYllE,QAAQ,SAAUutB,EAAQt1B,GAC1Cs1B,EAAOp1B,QAAQutE,OAAO19B,OAASi+B,EAAQF,WAAWE,EAAQf,YAAajtE,GAAKguE,EAAQl1D,MAAMqf,cAAchF,WAAa,KAEjHnzB,GAAKguE,EAAQf,YAAY5qE,OAAS,EACrCizB,EAAOp1B,QAAQutE,OAAOD,MAAO,EAE7Bl4C,EAAOp1B,QAAQutE,OAAOD,MAAO,EAG9BQ,EAAQ11B,cAAchjB,EAAOpsB,aAAcosB,GAEvCy4C,GACHz4C,EAAOoD,MAAM3wB,QAAQ,SAAUe,GAC9BklE,EAAQ11B,cAAcxvC,EAAKI,aAAcosB,OAK5C9yB,KAAK0qE,aAAanlE,QAAQ,SAAUutB,EAAQt1B,GAC3Cs1B,EAAOp1B,QAAQutE,OAAO19B,OAASi+B,EAAQX,aAAeW,EAAQF,WAAWE,EAAQd,aAAcltE,EAAI,GAAK,KAEpGA,GAAKguE,EAAQd,aAAa7qE,OAAS,EACtCizB,EAAOp1B,QAAQutE,OAAOD,MAAO,EAE7Bl4C,EAAOp1B,QAAQutE,OAAOD,MAAO,EAG9BQ,EAAQ11B,cAAchjB,EAAOpsB,aAAcosB,GAEvCy4C,GACHz4C,EAAOoD,MAAM3wB,QAAQ,SAAUe,GAC9BklE,EAAQ11B,cAAcxvC,EAAKI,aAAcosB,QAO7C03C,EAAcprE,UAAU6X,OAAS,WAChC,IAAImb,EAAOpyB,KAGPoyB,EAAK4C,SAGRh1B,KAAKmrE,cAOL/4C,EAAK9b,MAAMka,WAAWsU,iBAAiBv/B,QAAQ,SAAUssB,GACvC,QAAbA,EAAInpB,MACP0pB,EAAKqf,UAAU5f,KAKjB7xB,KAAKqrE,iBAGLrrE,KAAKorE,sBAAqB,GAM1BprE,KAAKsW,MAAMka,WAAW6R,aAAah+B,MAAM6zD,YAAcl4D,KAAK4qE,cAI9DJ,EAAcprE,UAAUqyC,UAAY,SAAU5f,GAC7C,IAAI45C,EAAUzrE,KAEF6xB,EAAInrB,aAEVrC,MAAM8zD,YAAcn4D,KAAK2qE,WAG/B3qE,KAAKyqE,YAAYllE,QAAQ,SAAUutB,GAClC,IAAIxsB,EAAOurB,EAAI6c,QAAQ5b,GAEnBxsB,GACHmlE,EAAQ31B,cAAcxvC,EAAKI,aAAcosB,KAI3C9yB,KAAK0qE,aAAanlE,QAAQ,SAAUutB,GACnC,IAAIxsB,EAAOurB,EAAI6c,QAAQ5b,GAEnBxsB,GACHmlE,EAAQ31B,cAAcxvC,EAAKI,aAAcosB,MAK5C03C,EAAcprE,UAAU02C,cAAgB,SAAU/yC,EAAS+vB,GAEtDA,EAAOp1B,QAAQutE,SAClBloE,EAAQsB,MAAMC,SAAW,WACzBvB,EAAQsB,MAAMitB,KAAOwB,EAAOp1B,QAAQutE,OAAO19B,OAE3CxqC,EAAQguB,UAAUvc,IAAI,oBAElBse,EAAOp1B,QAAQutE,OAAOD,MACzBjoE,EAAQguB,UAAUvc,IAAI,oBAAsBse,EAAOp1B,QAAQutE,OAAO3mE,YAKrEkmE,EAAcprE,UAAUksE,WAAa,SAAUx0D,EAASmc,GAGvD,IAFA,IAAIzuB,EAAQ,EAEHhH,EAAI,EAAGA,EAAIy1B,EAAOz1B,IACtBsZ,EAAQtZ,GAAGm3B,UACdnwB,GAASsS,EAAQtZ,GAAG83B,YAItB,OAAO9wB,GAGRqR,EAAUzW,UAAUknD,eAAe,gBAAiBkkB,GACpD,IAAIkB,EAAa,SAAoBp1D,GACpCtW,KAAKsW,MAAQA,EACbtW,KAAK0uD,WAAa7rD,SAASC,cAAc,OACzC9C,KAAK+d,KAAO,GACZ/d,KAAK0mC,aAAe,GAGrBglC,EAAWtsE,UAAU6xB,WAAa,WACjCjxB,KAAK+d,KAAO,GAEZ/d,KAAK0uD,WAAW39B,UAAUvc,IAAI,gCAG9BxU,KAAKsW,MAAMqf,cAAcjvB,aAAakqB,aAAa5wB,KAAK0uD,WAAY1uD,KAAKsW,MAAMqf,cAActF,eAAekD,cAG7Gm4C,EAAWtsE,UAAUyrC,gBAAkB,SAAU5X,GAChDjzB,KAAK0mC,aAAezT,GAGrBy4C,EAAWtsE,UAAUwrC,gBAAkB,WACtC,OAAO5qC,KAAK0mC,cAGbglC,EAAWtsE,UAAUurC,SAAW,WAC/B,QAAS3qC,KAAK+d,KAAKle,QAIpB6rE,EAAWtsE,UAAU4rC,QAAU,SAAUjtB,GACxC,IAEIqR,EAASrR,EAAK1a,MAAM,GAUxB,OARArD,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3B,IAAIoB,EAAQ7D,EAAO9uB,QAAQuxB,GAEvBoB,GAAS,GACZ7D,EAAOva,OAAOoe,EAAO,KAIhB7D,GAGRs8C,EAAWtsE,UAAUswC,UAAY,SAAU7d,GACrCA,EAAIn0B,QAAQutE,OAahBppE,QAAQ+0B,KAAK,yCAZb/E,EAAIn0B,QAAQutE,QAAS,EACrBjrE,KAAK0uD,WAAW9pD,YAAYitB,EAAInrB,cAChCmrB,EAAIZ,aACJY,EAAIqb,kBACJltC,KAAKsW,MAAMka,WAAW0D,kBAEtBl0B,KAAK+d,KAAKld,KAAKgxB,GAEf7xB,KAAKsW,MAAMka,WAAW0V,kBAAkB,WAExClmC,KAAK2rE,cAMPD,EAAWtsE,UAAUwwC,YAAc,SAAU/d,GAC5C,IAAIoB,EAAQjzB,KAAK+d,KAAKzd,QAAQuxB,GAE9B,GAAIA,EAAIn0B,QAAQutE,OAAQ,CAEvBp5C,EAAIn0B,QAAQutE,QAAS,EAErB,IAAIlmC,EAAQlT,EAAInrB,aAChBq+B,EAAMzR,WAAWvuB,YAAYggC,GAE7B/kC,KAAKsW,MAAMka,WAAW0D,kBAEtBl0B,KAAK+d,KAAKlJ,OAAOoe,EAAO,GAExBjzB,KAAKsW,MAAMka,WAAW0V,kBAAkB,WAEpClmC,KAAK+d,KAAKle,QACbG,KAAK2rE,iBAGN9pE,QAAQ+0B,KAAK,2CAIf80C,EAAWtsE,UAAUusE,UAAY,SAAU95C,GAC1C,IAAIO,EAAOpyB,KAEXA,KAAK+d,KAAKxY,QAAQ,SAAUssB,EAAKr0B,GAChC40B,EAAK9b,MAAMka,WAAW8X,SAASzW,EAAKr0B,MAItCqY,EAAUzW,UAAUknD,eAAe,aAAcolB,GAGjD,IAAIE,EAAiB,SAAwBt4B,GAC5CtzC,KAAK6rE,OAASv4B,EACdtzC,KAAK0I,KAAO,kBAGbkjE,EAAexsE,UAAUixD,OAAS,WACjC,OAAOrwD,KAAK6rE,OAAO9sE,KAGpB6sE,EAAexsE,UAAUsH,WAAa,WACrC,OAAO1G,KAAK6rE,OAAO9oE,SAGpB6oE,EAAexsE,UAAU4rC,QAAU,WAClC,OAAOhrC,KAAK6rE,OAAO7gC,SAAQ,IAG5B4gC,EAAexsE,UAAUqxD,aAAe,WACvC,OAAOzwD,KAAK6rE,OAAOpb,cAAa,IAGjCmb,EAAexsE,UAAU0sE,eAAiB,WACzC,QAAO9rE,KAAK6rE,OAAOhzC,QAAS74B,KAAK6rE,OAAOhzC,OAAOxD,gBAGhDu2C,EAAexsE,UAAUk5B,cAAgB,WACxC,OAAOt4B,KAAK6rE,OAAOl3C,SAGpBi3C,EAAexsE,UAAUm5B,KAAO,WAC/Bv4B,KAAK6rE,OAAOtzC,QAGbqzC,EAAexsE,UAAU2M,KAAO,WAC/B/L,KAAK6rE,OAAO9/D,QAGb6/D,EAAexsE,UAAUq5B,OAAS,WACjCz4B,KAAK6rE,OAAOE,oBAGbH,EAAexsE,UAAUk1B,SAAW,WACnC,OAAOt0B,KAAK6rE,QAGbD,EAAexsE,UAAU25B,SAAW,WACnC,OAAO/4B,KAAK6rE,OAAOG,aAAa11D,OAOjC,IAAI21D,EAAQ,SAAeD,EAAcnzC,EAAQoxB,EAAOlrD,EAAKizB,EAAOk6C,EAAWC,GAE9EnsE,KAAKgsE,aAAeA,EACpBhsE,KAAK64B,OAASA,EACd74B,KAAKjB,IAAMA,EACXiB,KAAKiqD,MAAQA,EACbjqD,KAAKgyB,MAAQA,EACbhyB,KAAKosE,aAAeniB,EAAQ+hB,EAAaK,eAAexsE,OAAS,EACjEG,KAAK+mC,OAAS/mC,KAAKosE,aAAepsE,KAAKssE,eAAiBtsE,KAAKusE,QAC7DvsE,KAAK0I,KAAO,QACZ1I,KAAKwsE,IAAML,EACXnsE,KAAK+d,KAAO,GACZ/d,KAAK8kD,OAAS,GACd9kD,KAAKysE,UAAY,GACjBzsE,KAAKksE,UAAYA,EACjBlsE,KAAK0sE,iBAAkB,EACvB1sE,KAAKyE,OAAS,EACdzE,KAAKywC,YAAc,EACnBzwC,KAAKitC,aAAc,EACnBjtC,KAAKk2C,MAAQ,GACbl2C,KAAKitC,aAAc,EACnBjtC,KAAKtC,QAAU,GACfsC,KAAK2sE,cAAe,EAEpB3sE,KAAK20B,QAAUw3C,EAAWA,EAASx3C,aAAmD,IAAlCq3C,EAAarU,UAAU1N,GAAyB+hB,EAAarU,UAAU1N,GAAS+hB,EAAarU,UAAU,GAE3J33D,KAAK4sE,iBACL5sE,KAAK6sE,cAEL7sE,KAAK8sE,qBAGNb,EAAM7sE,UAAU+mC,KAAO,WAClBnmC,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChCA,EAAMnN,UAGPnmC,KAAK+C,SAAU,EACf/C,KAAK2sE,cAAe,EACpB3sE,KAAK0sE,iBAAkB,IAIzBT,EAAM7sE,UAAUwtE,eAAiB,WAChC5sE,KAAK+C,QAAUF,SAASC,cAAc,OACtC9C,KAAK+C,QAAQguB,UAAUvc,IAAI,iBAC3BxU,KAAK+C,QAAQguB,UAAUvc,IAAI,mBAC3BxU,KAAK+C,QAAQguB,UAAUvc,IAAI,yBAA2BxU,KAAKiqD,OAC3DjqD,KAAK+C,QAAQ64B,aAAa,OAAQ,YAElC57B,KAAK2sE,aAAe9pE,SAASC,cAAc,OAC3C9C,KAAK2sE,aAAa57C,UAAUvc,IAAI,oBAGoB,IAAhDxU,KAAKgsE,aAAa11D,MAAMzO,QAAQ2zB,aAAyBx7B,KAAKgsE,aAAa11D,MAAMob,UAAU,YAC9F1xB,KAAKgsE,aAAa11D,MAAM5Y,QAAQ+9B,QAAQsxC,sBAAsB/sE,OAIhEisE,EAAM7sE,UAAU0tE,kBAAoB,WACnC,IAAIE,EAAUhtE,KAEViqD,EAAQjqD,KAAKiqD,MAAQ,EACrBjqD,KAAKgsE,aAAaiB,eAAiBjtE,KAAKgsE,aAAaiB,cAAchjB,IACtEjqD,KAAKgsE,aAAaiB,cAAchjB,GAAO1kD,QAAQ,SAAU9G,GACxDuuE,EAAQE,aAAazuE,EAAOwrD,MAK/BgiB,EAAM7sE,UAAUytE,YAAc,WAC7B,IACIpvC,EACAC,EACAC,EAHAvL,EAAOpyB,KAOPoyB,EAAK45C,aAAa11D,MAAMzO,QAAQg2C,YACnCzrB,EAAKrvB,QAAQy6B,iBAAiB,QAAS,SAAUp7B,GAChDgwB,EAAK45C,aAAa11D,MAAMzO,QAAQg2C,WAAWz7C,EAAGgwB,EAAKiD,kBAIjDjD,EAAK45C,aAAa11D,MAAMzO,QAAQi2C,eACnC1rB,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GACnDgwB,EAAK45C,aAAa11D,MAAMzO,QAAQi2C,cAAc17C,EAAGgwB,EAAKiD,kBAIpDjD,EAAK45C,aAAa11D,MAAMzO,QAAQk2C,cACnC3rB,EAAKrvB,QAAQy6B,iBAAiB,cAAe,SAAUp7B,GACtDgwB,EAAK45C,aAAa11D,MAAMzO,QAAQk2C,aAAa37C,EAAGgwB,EAAKiD,kBAInDjD,EAAK45C,aAAa11D,MAAMzO,QAAQm2C,WAEnCrgB,GAAM,EAENvL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GACrDu7B,GAAM,GACJ,CAAEK,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAC/Cu7B,GACHvL,EAAK45C,aAAa11D,MAAMzO,QAAQm2C,SAAS57C,EAAGgwB,EAAKiD,gBAGlDsI,GAAM,KAIJvL,EAAK45C,aAAa11D,MAAMzO,QAAQo2C,cAEnCxgB,EAAS,KAETrL,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GAE/Cq7B,GACH5vB,aAAa4vB,GACbA,EAAS,KAETrL,EAAK45C,aAAa11D,MAAMzO,QAAQo2C,YAAY77C,EAAGgwB,EAAKiD,iBAGpDoI,EAASpxB,WAAW,WACnBwB,aAAa4vB,GACbA,EAAS,MACP,QAKFrL,EAAK45C,aAAa11D,MAAMzO,QAAQq2C,eAEnCxgB,EAAU,KAEVtL,EAAKrvB,QAAQy6B,iBAAiB,aAAc,SAAUp7B,GACrDyL,aAAa6vB,GAEbA,EAAUrxB,WAAW,WACpBwB,aAAa6vB,GACbA,EAAU,KACVC,GAAM,EACNvL,EAAK45C,aAAa11D,MAAMzO,QAAQq2C,aAAa97C,EAAGgwB,EAAKiD,iBACnD,MACD,CAAE2I,SAAS,IAEd5L,EAAKrvB,QAAQy6B,iBAAiB,WAAY,SAAUp7B,GACnDyL,aAAa6vB,GACbA,EAAU,QAIRtL,EAAK45C,aAAa11D,MAAMzO,QAAQ21C,qBACmC,SAAtDprB,EAAK45C,aAAa11D,MAAMzO,QAAQ21C,mBAAgCprB,EAAKu6C,aAAev6C,EAAKrvB,SAE3Fy6B,iBAAiB,QAAS,SAAUp7B,GACjDA,EAAE+K,kBACF/K,EAAE2+D,2BACF3uC,EAAK25C,sBAKRE,EAAM7sE,UAAU8tE,aAAe,SAAUC,EAASljB,GACjD,IAAImjB,EAAWnjB,EAAQ,IAAMkjB,EACzB75B,EAAQ,IAAI24B,EAAMjsE,KAAKgsE,aAAchsE,KAAMiqD,EAAOkjB,EAASntE,KAAKgsE,aAAaK,eAAepiB,GAAOj4B,MAAOhyB,KAAKgsE,aAAaqB,gBAAgBpjB,IAAUjqD,KAAKgsE,aAAaqB,gBAAgB,KAAIrtE,KAAKwsE,KAAMxsE,KAAKwsE,IAAI1nB,OAAOsoB,IAE3NptE,KAAK8kD,OAAOsoB,GAAY95B,EACxBtzC,KAAKysE,UAAU5rE,KAAKyyC,IAGrB24B,EAAM7sE,UAAUktE,eAAiB,SAAUz6C,GAE1C,IAAIo4B,EAAQjqD,KAAKiqD,MAAQ,EAEzB,GAAIjqD,KAAKosE,aAAc,CACtB,IAAIe,EAAUntE,KAAKgsE,aAAaK,eAAepiB,GAAOtqC,KAAKkS,EAAIgV,WAC3DumC,EAAWnjB,EAAQ,IAAMkjB,EAEzBntE,KAAKgsE,aAAaiB,eAAiBjtE,KAAKgsE,aAAaiB,cAAchjB,GAClEjqD,KAAK8kD,OAAOsoB,IACfptE,KAAK8kD,OAAOsoB,GAAUrmC,OAAOlV,IAGzB7xB,KAAK8kD,OAAOsoB,IAChBptE,KAAKktE,aAAaC,EAASljB,GAG5BjqD,KAAK8kD,OAAOsoB,GAAUrmC,OAAOlV,MAKhCo6C,EAAM7sE,UAAUmtE,QAAU,SAAU16C,GACnC7xB,KAAK+d,KAAKld,KAAKgxB,GACfA,EAAIn0B,QAAQ41C,MAAQtzC,MAGrBisE,EAAM7sE,UAAUipC,UAAY,SAAUxW,EAAKzhB,EAAIolB,GAC9C,IAAIjiB,EAAOvT,KAAKstE,eAAe,IAE/Bz7C,EAAIod,WAAW17B,GAEf,IAAIyiB,EAAUh2B,KAAK+d,KAAKzd,QAAQ8P,GAE5B4lB,GAAW,EACVR,EACHx1B,KAAK+d,KAAKlJ,OAAOmhB,EAAU,EAAG,EAAGnE,GAEjC7xB,KAAK+d,KAAKlJ,OAAOmhB,EAAS,EAAGnE,GAG1B2D,EACHx1B,KAAK+d,KAAKld,KAAKgxB,GAEf7xB,KAAK+d,KAAKyV,QAAQ3B,GAIpBA,EAAIn0B,QAAQ41C,MAAQtzC,KAEpBA,KAAKutE,8BAEDvtE,KAAKgsE,aAAa11D,MAAMob,UAAU,gBAAiE,SAA/C1xB,KAAKgsE,aAAa11D,MAAMzO,QAAQ2vB,aACvFx3B,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYi4B,YAAYzvD,MAGzDA,KAAKgsE,aAAallC,iBAAgB,IAGnCmlC,EAAM7sE,UAAUouE,aAAe,SAAUl8C,GACxCtxB,KAAK2sE,aAAatoE,MAAMotB,WAAaH,EAErCtxB,KAAKysE,UAAUlnE,QAAQ,SAAUkzD,GAChCA,EAAM+U,aAAal8C,MAIrB26C,EAAM7sE,UAAUopC,YAAc,SAAU3W,KAGxCo6C,EAAM7sE,UAAUkuE,eAAiB,SAAU/5D,GAW1C,OAVIvT,KAAKgyB,MACRze,EAAKvT,KAAKgyB,OAAShyB,KAAKjB,IAExB8C,QAAQ+0B,KAAK,+FAGV52B,KAAK64B,SACRtlB,EAAOvT,KAAK64B,OAAOy0C,eAAe/5D,IAG5BA,GAGR04D,EAAM7sE,UAAUgpC,UAAY,SAAUvW,GACrC,IAAIoB,EAAQjzB,KAAK+d,KAAKzd,QAAQuxB,GAC1Bf,EAAKe,EAAInrB,aAETusB,GAAS,GACZjzB,KAAK+d,KAAKlJ,OAAOoe,EAAO,GAGpBjzB,KAAKgsE,aAAa11D,MAAMzO,QAAQ8zC,aAAgB37C,KAAK+d,KAAKle,QAU1DixB,EAAGwC,YACNxC,EAAGwC,WAAWvuB,YAAY+rB,GAG3B9wB,KAAKutE,8BAEDvtE,KAAKgsE,aAAa11D,MAAMob,UAAU,gBAAiE,SAA/C1xB,KAAKgsE,aAAa11D,MAAMzO,QAAQ2vB,aACvFx3B,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYi4B,YAAYzvD,QAhBrDA,KAAK64B,OACR74B,KAAK64B,OAAO40C,YAAYztE,MAExBA,KAAKgsE,aAAayB,YAAYztE,MAG/BA,KAAKgsE,aAAallC,iBAAgB,KAepCmlC,EAAM7sE,UAAUquE,YAAc,SAAUn6B,GACvC,IACIrgB,EADAm6C,EAAW95B,EAAM2W,MAAQ,IAAM3W,EAAMv0C,IAGrCiB,KAAK8kD,OAAOsoB,YACRptE,KAAK8kD,OAAOsoB,IAEnBn6C,EAAQjzB,KAAKysE,UAAUnsE,QAAQgzC,KAElB,GACZtzC,KAAKysE,UAAU53D,OAAOoe,EAAO,GAGzBjzB,KAAKysE,UAAU5sE,SACfG,KAAK64B,OACR74B,KAAK64B,OAAO40C,YAAYztE,MAExBA,KAAKgsE,aAAayB,YAAYztE,SAMlCisE,EAAM7sE,UAAUsuE,kBAAoB,SAAUC,GAC7C,IAAIv+C,EAAS,GAkEb,OAhEAA,EAAOvuB,KAAKb,MAEZA,KAAK4tE,UAED5tE,KAAK20B,QACJ30B,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChClkB,EAASA,EAAO5d,OAAO8hC,EAAMo6B,kBAAkBC,QAG3CA,GAAyD,SAA/C3tE,KAAKgsE,aAAa11D,MAAMzO,QAAQ2vB,aAA0Bx3B,KAAKgsE,aAAa11D,MAAMob,UAAU,gBAAkB1xB,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAY24B,gBACpKnwD,KAAKk2C,MAAM3xC,MACdvE,KAAKk2C,MAAM3xC,IAAIosC,gBACf3wC,KAAKk2C,MAAM3xC,IAAIitC,eAGhBxxC,KAAKk2C,MAAM3xC,IAAMvE,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYs4B,eAAe9vD,KAAK+d,MACjFqR,EAAOvuB,KAAKb,KAAKk2C,MAAM3xC,MAGxB6qB,EAASA,EAAO5d,OAAOxR,KAAK+d,OAEvB4vD,GAAyD,SAA/C3tE,KAAKgsE,aAAa11D,MAAMzO,QAAQ2vB,aAA0Bx3B,KAAKgsE,aAAa11D,MAAMob,UAAU,gBAAkB1xB,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAY44B,mBACpKpwD,KAAKk2C,MAAM0Z,SACd5vD,KAAKk2C,MAAM0Z,OAAOjf,gBAClB3wC,KAAKk2C,MAAM0Z,OAAOpe,eAGnBxxC,KAAKk2C,MAAM0Z,OAAS5vD,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYu4B,kBAAkB/vD,KAAK+d,MACvFqR,EAAOvuB,KAAKb,KAAKk2C,MAAM0Z,UAIpB5vD,KAAKysE,UAAU5sE,QAAyD,SAA/CG,KAAKgsE,aAAa11D,MAAMzO,QAAQ2vB,aAEzDx3B,KAAKgsE,aAAa11D,MAAMob,UAAU,kBAEhCi8C,GAAU3tE,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAY24B,gBACtDnwD,KAAKk2C,MAAM3xC,MACdvE,KAAKk2C,MAAM3xC,IAAIosC,gBACf3wC,KAAKk2C,MAAM3xC,IAAIitC,eAGZxxC,KAAKgsE,aAAa11D,MAAMzO,QAAQ41C,uBACnCz9C,KAAKk2C,MAAM3xC,IAAMvE,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYs4B,eAAe9vD,KAAK+d,MACjFqR,EAAOvuB,KAAKb,KAAKk2C,MAAM3xC,QAIpBopE,GAAU3tE,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAY44B,mBACtDpwD,KAAKk2C,MAAM0Z,SACd5vD,KAAKk2C,MAAM0Z,OAAOjf,gBAClB3wC,KAAKk2C,MAAM0Z,OAAOpe,eAGfxxC,KAAKgsE,aAAa11D,MAAMzO,QAAQ41C,uBACnCz9C,KAAKk2C,MAAM0Z,OAAS5vD,KAAKgsE,aAAa11D,MAAM5Y,QAAQ85B,YAAYu4B,kBAAkB/vD,KAAK+d,MACvFqR,EAAOvuB,KAAKb,KAAKk2C,MAAM0Z,WAOrBxgC,GAGR68C,EAAM7sE,UAAUynC,QAAU,SAAUlS,EAAShvB,GAC5C,IACIypB,EAAS,GAUb,OARApvB,KAAK4tE,YAEAj5C,GAAWA,GAAW30B,KAAK20B,UAC/B30B,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3BzC,EAAOvuB,KAAKgxB,EAAIgV,QAAQlhC,GAAa,WAIhCypB,GASR68C,EAAM7sE,UAAUyuE,YAAc,WAC7B,IAAI3c,EAAQ,EASZ,OAPIlxD,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChC4d,GAAS5d,EAAMu6B,gBAGhB3c,EAAQlxD,KAAK+d,KAAKle,OAEZqxD,GAGR+a,EAAM7sE,UAAU2sE,iBAAmB,WAC9B/rE,KAAK20B,QACR30B,KAAK+L,OAEL/L,KAAKu4B,QAIP0zC,EAAM7sE,UAAU2M,KAAO,WACtB/L,KAAK20B,SAAU,EAE2C,WAAtD30B,KAAKgsE,aAAa11D,MAAMka,WAAWqb,iBAAiC7rC,KAAKgsE,aAAa11D,MAAMzO,QAAQ09B,WAwBvGvlC,KAAKgsE,aAAallC,iBAAgB,IAtBlC9mC,KAAK+C,QAAQguB,UAAU3oB,OAAO,2BAE1BpI,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAErBA,EAAMo6B,oBAEZnoE,QAAQ,SAAUssB,GACtBA,EAAI8e,oBAIN3wC,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3B,IAAIkT,EAAQlT,EAAInrB,aAChBq+B,EAAMzR,WAAWvuB,YAAYggC,KAI/B/kC,KAAKgsE,aAAa11D,MAAMka,WAAWua,eAAe/qC,KAAKgsE,aAAallC,kBAAmB9mC,KAAKgsE,aAAaphC,mBAEzG5qC,KAAKgsE,aAAa11D,MAAMka,WAAW8b,oCAKpCtsC,KAAKgsE,aAAa11D,MAAMzO,QAAQ+1C,uBAAuBjgD,KAAKqC,KAAKsW,MAAOtW,KAAKq1B,gBAAgB,IAG9F42C,EAAM7sE,UAAUm5B,KAAO,WAKtB,GAJWv4B,KAEN20B,SAAU,EAE2C,WAAtD30B,KAAKgsE,aAAa11D,MAAMka,WAAWqb,iBAAiC7rC,KAAKgsE,aAAa11D,MAAMzO,QAAQ09B,WA8BvGvlC,KAAKgsE,aAAallC,iBAAgB,OA9BiF,CAEnH9mC,KAAK+C,QAAQguB,UAAUvc,IAAI,2BAE3B,IAAI6hC,EARMr2C,KAQM0G,aAEZ1G,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GACrBA,EAAMo6B,oBAEZnoE,QAAQ,SAAUssB,GACtB,IAAIkT,EAAQlT,EAAInrB,aAChB2vC,EAAK/iB,WAAW1C,aAAamU,EAAOsR,EAAK9iB,aACzC1B,EAAIZ,aACJolB,EAAOtR,MAlBA/kC,KAsBJ+d,KAAKxY,QAAQ,SAAUssB,GAC3B,IAAIkT,EAAQlT,EAAInrB,aAChB2vC,EAAK/iB,WAAW1C,aAAamU,EAAOsR,EAAK9iB,aACzC1B,EAAIZ,aACJolB,EAAOtR,IAIT/kC,KAAKgsE,aAAa11D,MAAMka,WAAWua,eAAe/qC,KAAKgsE,aAAallC,kBAAmB9mC,KAAKgsE,aAAaphC,mBAEzG5qC,KAAKgsE,aAAa11D,MAAMka,WAAW8b,mCAKpCtsC,KAAKgsE,aAAa11D,MAAMzO,QAAQ+1C,uBAAuBjgD,KAAKqC,KAAKsW,MAAOtW,KAAKq1B,gBAAgB,IAG9F42C,EAAM7sE,UAAUwuE,QAAU,WACzB,IAAIr6D,EAAO,GAEgB,mBAAhBvT,KAAK20B,UAEf30B,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3Bte,EAAK1S,KAAKgxB,EAAIgV,aAGf7mC,KAAK20B,QAAU30B,KAAK20B,QAAQ30B,KAAKjB,IAAKiB,KAAK6tE,cAAet6D,EAAMvT,KAAKq1B,kBAIvE42C,EAAM7sE,UAAUswD,YAAc,SAAU79B,GACvC,IAAIK,GAAQ,EAiBZ,OAhBIlyB,KAAKysE,UAAU5sE,OAClBG,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChC,IAAIjzB,EAASizB,EAAMoc,YAAY79B,GAE3BxR,IACH6R,EAAQ7R,KAINrgB,KAAK+d,KAAKmS,KAAK,SAAUoX,GAC5B,OAAOA,IAASzV,MAEhBK,EAAQlyB,MAIHkyB,GAGR+5C,EAAM7sE,UAAUqxD,aAAe,SAAU3b,GACxC,IAAI1lB,EAAS,GAMb,OAJApvB,KAAKysE,UAAUlnE,QAAQ,SAAUkzD,GAChCrpC,EAAOvuB,KAAKi0C,EAAY2jB,EAAMpjC,eAAiBojC,KAGzCrpC,GAGR68C,EAAM7sE,UAAU4rC,QAAU,SAAU8iC,GACnC,IAAI1+C,EAAS,GAMb,OAJApvB,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3BzC,EAAOvuB,KAAKitE,EAAYj8C,EAAIwD,eAAiBxD,KAGvCzC,GAGR68C,EAAM7sE,UAAUmuE,4BAA8B,WAC7C,IAAIh6D,EAAO,GAQX,IANAvT,KAAK+d,KAAKxY,QAAQ,SAAUssB,GAC3Bte,EAAK1S,KAAKgxB,EAAIgV,aAGf7mC,KAAK0sE,gBAAkB1sE,KAAKksE,UAAUlsE,KAAKjB,IAAKiB,KAAK6tE,cAAet6D,EAAMvT,KAAKq1B,gBAExEr1B,KAAK+C,QAAQ8tB,YACnB7wB,KAAK+C,QAAQgC,YAAY/E,KAAK+C,QAAQ8tB,YACF,iBAAzB7wB,KAAK0sE,gBAChB1sE,KAAK+C,QAAQk9B,UAAYjgC,KAAK0sE,gBAE9B1sE,KAAK+C,QAAQ6B,YAAY5E,KAAK0sE,iBAG/B1sE,KAAK+C,QAAQ6tB,aAAa5wB,KAAK2sE,aAAc3sE,KAAK+C,QAAQ8tB,aAK3Do7C,EAAM7sE,UAAUsH,WAAa,WAC5B1G,KAAK+tE,cAAe,EAEpB/tE,KAAK4tE,UAED5tE,KAAK20B,QACR30B,KAAK+C,QAAQguB,UAAUvc,IAAI,2BAE3BxU,KAAK+C,QAAQguB,UAAU3oB,OAAO,2BAG/B,IAAK,IAAI5K,EAAI,EAAGA,EAAIwC,KAAK+C,QAAQirE,WAAWnuE,SAAUrC,EACrDwC,KAAK+C,QAAQirE,WAAWxwE,GAAG81B,WAAWvuB,YAAY/E,KAAK+C,QAAQirE,WAAWxwE,IAO3E,OAJAwC,KAAKutE,8BAIEvtE,KAAK+C,SAGbkpE,EAAM7sE,UAAUuxC,cAAgB,WAC3B3wC,KAAK+C,SAAW/C,KAAK+C,QAAQuwB,YAChCtzB,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,UAK3CkpE,EAAM7sE,UAAU8tC,gBAAkB,WACjCltC,KAAK+xC,UAAU/xC,KAAK+C,QAAQo0B,eAG7B80C,EAAM7sE,UAAU6xB,WAAa,SAAU3nB,GACjCtJ,KAAKitC,cAAe3jC,IACxBtJ,KAAKktC,kBACLltC,KAAKitC,aAAc,IAIrBg/B,EAAM7sE,UAAUw4B,aAAe,WAC9B53B,KAAKitC,aAAc,EACnBjtC,KAAKyE,OAAS,EAEVoR,EAAUzW,UAAU24B,QAAQC,UAAUh4B,KAAK+C,UAC9C/C,KAAKixB,YAAW,IAIlBg7C,EAAM7sE,UAAU2yC,UAAY,SAAUttC,GACjCzE,KAAKyE,QAAUA,IAClBzE,KAAKyE,OAASA,EACdzE,KAAKywC,YAAczwC,KAAK+C,QAAQw9B,eAKlC0rC,EAAM7sE,UAAU20B,UAAY,WAC3B,OAAO/zB,KAAKywC,aAGbw7B,EAAM7sE,UAAUyoC,SAAW,WAC1B,OAAO7nC,MAGRisE,EAAM7sE,UAAU0yC,mBAAqB,aACrCm6B,EAAM7sE,UAAUsiC,WAAa,aAC7BuqC,EAAM7sE,UAAUuiC,cAAgB,aAChCsqC,EAAM7sE,UAAUqiC,gBAAkB,aAGlCwqC,EAAM7sE,UAAUi2B,aAAe,WAC9B,OAAO,IAAIu2C,EAAe5rE,OAO3B,IAAIiuE,EAAY,SAAmB33D,GAElCtW,KAAKsW,MAAQA,EAEbtW,KAAKqsE,gBAAiB,EACtBrsE,KAAK23D,UAAY,CAAC,WACjB,OAAO,IAER33D,KAAKqtE,gBAAkB,CAAC,WACvB,MAAO,KAERrtE,KAAKysE,UAAY,GACjBzsE,KAAKitE,eAAgB,EACrBjtE,KAAK8kD,OAAS,GACd9kD,KAAK0mC,aAAe,GAIrBunC,EAAU7uE,UAAU6xB,WAAa,WAChC,IAAImB,EAAOpyB,KACP8jC,EAAU1R,EAAK9b,MAAMzO,QAAQi8B,QAC7B6zB,EAAYvlC,EAAK9b,MAAMzO,QAAQ6zC,eAC/BE,EAAcxpB,EAAK9b,MAAMzO,QAAQ+zC,aAErC57C,KAAKitE,cAAgB76C,EAAK9b,MAAMzO,QAAQ8zC,YAExCvpB,EAAKi7C,gBAAkB,CAAC,WACvB,MAAO,KAERrtE,KAAK23D,UAAY,CAAC,WACjB,OAAO,IAGRvlC,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,cAAe,SAAUkvE,EAAW5xD,GACpE8V,EAAKi7C,gBAAgB,GAAK,SAAU5uE,EAAOyyD,EAAO39C,GAEjD,YAAyB,IAAV9U,EAAwB,GAAKA,GAAS,UAAYyyD,EAAQ,KAAiB,IAAVA,EAAcgd,EAAY5xD,EAAKwoC,OAAOuF,OAAS,cAIjIrqD,KAAKqsE,eAAiB,GAElBvrE,MAAMC,QAAQ+iC,IAAYA,GACzB9jC,KAAKsW,MAAMob,UAAU,gBAAoD,SAAlC1xB,KAAKsW,MAAMzO,QAAQ2vB,aAA4D,QAAlCx3B,KAAKsW,MAAMzO,QAAQ2vB,aAC1Gx3B,KAAKsW,MAAM5Y,QAAQ85B,YAAY83B,cAG5BtvD,KAAKsW,MAAMob,UAAU,gBAAoD,SAAlC1xB,KAAKsW,MAAMzO,QAAQ2vB,aAElDx3B,KAAKsW,MAAMqf,cAAcd,iBAE/BtvB,QAAQ,SAAUwsB,GAClBA,EAAIY,WAAW2K,SAClBlL,EAAK9b,MAAM5Y,QAAQ85B,YAAY23B,mBAG5Bp9B,EAAIY,WAAW4K,YAClBnL,EAAK9b,MAAM5Y,QAAQ85B,YAAY63B,wBAM9BvuD,MAAMC,QAAQ+iC,KAClBA,EAAU,CAACA,IAGZA,EAAQv+B,QAAQ,SAAU+tC,EAAO91C,GAChC,IAAI2wE,EAAYr7C,EAGfq7C,EADmB,mBAAT76B,EACGA,GAEbxgB,EAASV,EAAK9b,MAAMqf,cAAcnB,iBAAiB8e,IAGrC,SAAoB//B,GAChC,OAAOuf,EAAOkH,cAAczmB,IAGhB,SAAoBA,GAChC,OAAOA,EAAK+/B,IAKflhB,EAAKi6C,eAAexrE,KAAK,CACxBmxB,MAAwB,mBAAVshB,GAA+BA,EAC7C3zB,KAAMwuD,EACNzjD,SAAQ0H,EAAK66C,eAAgB76C,EAAK66C,cAAczvE,OAI9Cm6D,IAEE72D,MAAMC,QAAQ42D,KAClBA,EAAY,CAACA,IAGdA,EAAUpyD,QAAQ,SAAU0kD,GAC3BA,EAAwB,mBAATA,EAAsBA,EAAQ,WAC5C,OAAO,KAIT73B,EAAKulC,UAAYA,GAGd/b,IACHxpB,EAAKi7C,gBAAkBvsE,MAAMC,QAAQ66C,GAAeA,EAAc,CAACA,IAGpE57C,KAAKitC,aAAc,GAGpBghC,EAAU7uE,UAAUyrC,gBAAkB,SAAU5X,GAC/CjzB,KAAK0mC,aAAezT,GAGrBg7C,EAAU7uE,UAAUwrC,gBAAkB,WACrC,OAAO5qC,KAAK0mC,cAIbunC,EAAU7uE,UAAU4rC,QAAU,SAAUjtB,GACvC,OAAI/d,KAAKqsE,eAAexsE,QAEvBG,KAAKsW,MAAMzO,QAAQ61C,aAAa//C,KAAKqC,KAAKsW,OAE1CtW,KAAKouE,eAAerwD,GAEhB/d,KAAKsW,MAAMzO,QAAQ81C,aACtB39C,KAAKsW,MAAMzO,QAAQ81C,YAAYhgD,KAAKqC,KAAKsW,MAAOtW,KAAKilD,WAAU,IAGzDjlD,KAAK8mC,mBAEL/oB,EAAK1a,MAAM,IAIpB4qE,EAAU7uE,UAAU6lD,UAAY,SAAU6oB,GACzC,IAAIO,EAAkB,GAMtB,OAJAruE,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChC+6B,EAAgBxtE,KAAKitE,EAAYx6B,EAAMje,eAAiBie,KAGlD+6B,GAGRJ,EAAU7uE,UAAU+mC,KAAO,WAC1BnmC,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChCA,EAAMnN,UAIR8nC,EAAU7uE,UAAUkvE,kBAAoB,SAAU7B,GACjD,IAAIr6C,EAAOpyB,KACPuuE,EAAgB,GA+BpB,OA7BA9B,EAAUlnE,QAAQ,SAAU+tC,GAC3B,IAAIsI,EAAc,CAClBA,MAAoB,EACpBA,SAAuB,EACvBA,cAA4B,IACxBkd,EAAY,GAEZxlB,EAAM84B,cACTtT,EAAY1mC,EAAKk8C,kBAAkBh7B,EAAMm5B,WAEzC7wB,EAAYqO,MAAQ3W,EAAM2W,MAC1BrO,EAAY4yB,SAAW1V,EAAUj5D,OAASyzC,EAAMm5B,UAAU5sE,OAC1D+7C,EAAY6yB,cAAgBn7B,EAAM44B,UAAU54B,EAAMv0C,IAAK68C,EAAY4yB,SAAUl7B,EAAMv1B,KAAMu1B,GAEzFi7B,EAAc1tE,KAAK+6C,GACnB2yB,EAAgBA,EAAc/8D,OAAOsnD,KAErCld,EAAYqO,MAAQ3W,EAAM2W,MAC1BrO,EAAY6yB,cAAgBn7B,EAAM44B,UAAU54B,EAAMv0C,IAAKu0C,EAAMv1B,KAAKle,OAAQyzC,EAAMv1B,KAAMu1B,GACtFsI,EAAY4yB,SAAWl7B,EAAMtI,UAAUnrC,OAEvC0uE,EAAc1tE,KAAK+6C,GAEnBtI,EAAMtI,UAAUzlC,QAAQ,SAAUssB,GACjC08C,EAAc1tE,KAAKgxB,EAAIgV,QAAQ,cAK3B0nC,GAGRN,EAAU7uE,UAAU8lD,eAAiB,WAEpC,OAAOllD,KAAKsuE,kBAAkBtuE,KAAKysE,YAGpCwB,EAAU7uE,UAAUswD,YAAc,SAAU79B,GAC3C,IAAIK,GAAQ,EAUZ,OARAlyB,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChC,IAAIjzB,EAASizB,EAAMoc,YAAY79B,GAE3BxR,IACH6R,EAAQ7R,KAIH6R,GAGR+7C,EAAU7uE,UAAUguC,YAAc,WACjC,OAAOptC,KAAKysE,UAAU5sE,QAGvBouE,EAAU7uE,UAAUgvE,eAAiB,SAAUrwD,GAC9C,IAAIqU,EAAOpyB,KACP0uE,EAAYt8C,EAAK0yB,OAErB1yB,EAAK0yB,OAAS,GACd1yB,EAAKq6C,UAAY,GAEbzsE,KAAKitE,eAAiBjtE,KAAKitE,cAAc,IAC5CjtE,KAAKitE,cAAc,GAAG1nE,QAAQ,SAAU9G,GACvC2zB,EAAKu8C,YAAYlwE,EAAO,EAAGiwE,KAG5B3wD,EAAKxY,QAAQ,SAAUssB,GACtBO,EAAKw8C,yBAAyB/8C,EAAK68C,MAGpC3wD,EAAKxY,QAAQ,SAAUssB,GACtBO,EAAKwV,iBAAiB/V,EAAK68C,MAK9BT,EAAU7uE,UAAUuvE,YAAc,SAAUxB,EAASljB,EAAOykB,GAC3D,IACIp7B,EADA85B,EAAWnjB,EAAQ,IAAMkjB,EAG7BuB,EAAYA,GAAa,GAEzBp7B,EAAQ,IAAI24B,EAAMjsE,MAAM,EAAOiqD,EAAOkjB,EAASntE,KAAKqsE,eAAe,GAAGr6C,MAAOhyB,KAAKqtE,gBAAgB,GAAIqB,EAAUtB,IAEhHptE,KAAK8kD,OAAOsoB,GAAY95B,EACxBtzC,KAAKysE,UAAU5rE,KAAKyyC,IAGrB26B,EAAU7uE,UAAUwoC,iBAAmB,SAAU/V,EAAK68C,GACrD,IAAIvB,EAAUntE,KAAKqsE,eAAe,GAAG1sD,KAAKkS,EAAIgV,WAC1CumC,EAAW,KAAOD,EAEjBntE,KAAK8kD,OAAOsoB,IAChBptE,KAAK2uE,YAAYxB,EAAS,EAAGuB,GAG9B1uE,KAAK8kD,OAAOsoB,GAAUrmC,OAAOlV,IAG9Bo8C,EAAU7uE,UAAUwvE,yBAA2B,SAAU/8C,EAAK68C,GAC7D,IACItB,EAAW,KADDptE,KAAKqsE,eAAe,GAAG1sD,KAAKkS,EAAIgV,WAG1C7mC,KAAK8kD,OAAOsoB,IACfptE,KAAK8kD,OAAOsoB,GAAUrmC,OAAOlV,IAI/Bo8C,EAAU7uE,UAAUwoC,iBAAmB,SAAU/V,EAAK68C,GACrD,IAAIvB,EAAUntE,KAAKqsE,eAAe,GAAG1sD,KAAKkS,EAAIgV,WAC1CgoC,GAAkB7uE,KAAK8kD,OAAO,KAAOqoB,GAQzC,OANI0B,GACH7uE,KAAK2uE,YAAYxB,EAAS,EAAGuB,GAG9B1uE,KAAK8kD,OAAO,KAAOqoB,GAASpmC,OAAOlV,IAE3Bg9C,GAGTZ,EAAU7uE,UAAU0nC,gBAAkB,SAAUx9B,GAC/C,IACI8lB,EAAS,GAQb,GATWpvB,KAINysE,UAAUlnE,QAAQ,SAAU+tC,GAChClkB,EAASA,EAAO5d,OAAO8hC,EAAMo6B,uBAI1BpkE,EAAO,CAEV,IAAIo9B,EAXM1mC,KAWcsW,MAAMka,WAAWua,eAAe3b,EAAQpvB,KAAK4qC,oBAEhD,IAAjBlE,GACH1mC,KAAK6qC,gBAAgBnE,GAdZ1mC,KAiBLsW,MAAMka,WAAW0V,kBAAkB,SAAS,GAAM,GAGxD,OAAO9W,GAGR6+C,EAAU7uE,UAAU4kC,cAAgB,SAAU1S,GAC7CA,GAAc,KAEdtxB,KAAKysE,UAAUlnE,QAAQ,SAAU+tC,GAChCA,EAAMk6B,aAAal8C,MAIrB28C,EAAU7uE,UAAUquE,YAAc,SAAUn6B,GAC3C,IACIrgB,EADAm6C,EAAW95B,EAAM2W,MAAQ,IAAM3W,EAAMv0C,IAGrCiB,KAAK8kD,OAAOsoB,YACRptE,KAAK8kD,OAAOsoB,IAEnBn6C,EAAQjzB,KAAKysE,UAAUnsE,QAAQgzC,KAElB,GACZtzC,KAAKysE,UAAU53D,OAAOoe,EAAO,KAKhCpd,EAAUzW,UAAUknD,eAAe,YAAa2nB,GAChD,IAAIa,EAAU,SAAiBx4D,GAC9BtW,KAAKsW,MAAQA,EAEbtW,KAAK6lC,QAAU,GACf7lC,KAAKizB,OAAS,GAGf67C,EAAQ1vE,UAAUsI,MAAQ,WACzB1H,KAAK6lC,QAAU,GACf7lC,KAAKizB,OAAS,GAGf67C,EAAQ1vE,UAAUyZ,OAAS,SAAUnQ,EAAMosC,EAAWvhC,GAErDvT,KAAK6lC,QAAU7lC,KAAK6lC,QAAQxiC,MAAM,EAAGrD,KAAKizB,MAAQ,GAElDjzB,KAAK6lC,QAAQhlC,KAAK,CACjB6H,KAAMA,EACNosC,UAAWA,EACXvhC,KAAMA,IAGPvT,KAAKizB,SAGN67C,EAAQ1vE,UAAU0mD,mBAAqB,WACtC,OAAO9lD,KAAKizB,MAAQ,GAGrB67C,EAAQ1vE,UAAU2mD,mBAAqB,WACtC,OAAO/lD,KAAK6lC,QAAQhmC,QAAUG,KAAKizB,MAAQ,IAG5C67C,EAAQ1vE,UAAUwmD,KAAO,WAExB,GAAI5lD,KAAKizB,OAAS,EAAG,CACpB,IAAIpa,EAAS7Y,KAAK6lC,QAAQ7lC,KAAKizB,OAQ/B,OANAjzB,KAAK+uE,QAAQl2D,EAAOnQ,MAAM/K,KAAKqC,KAAM6Y,GAErC7Y,KAAKizB,QAELjzB,KAAKsW,MAAMzO,QAAQy2C,YAAY3gD,KAAKqC,KAAKsW,MAAOuC,EAAOnQ,KAAMmQ,EAAOi8B,UAAUzf,eAAgBxc,EAAOtF,OAE9F,EAGP,OADA1R,QAAQ+0B,KAAK,iDACN,GAITk4C,EAAQ1vE,UAAUymD,KAAO,WACxB,GAAI7lD,KAAK6lC,QAAQhmC,OAAS,EAAIG,KAAKizB,MAAO,CAEzCjzB,KAAKizB,QAEL,IAAIpa,EAAS7Y,KAAK6lC,QAAQ7lC,KAAKizB,OAM/B,OAJAjzB,KAAKgvE,QAAQn2D,EAAOnQ,MAAM/K,KAAKqC,KAAM6Y,GAErC7Y,KAAKsW,MAAMzO,QAAQ02C,YAAY5gD,KAAKqC,KAAKsW,MAAOuC,EAAOnQ,KAAMmQ,EAAOi8B,UAAUzf,eAAgBxc,EAAOtF,OAE9F,EAGP,OADA1R,QAAQ+0B,KAAK,iDACN,GAITk4C,EAAQ1vE,UAAU2vE,QAAU,CAC3BE,SAAU,SAAkBp2D,GAC3BA,EAAOi8B,UAAUvC,oBAAoB15B,EAAOtF,KAAK4gC,WAGlD+6B,OAAQ,SAAgBr2D,GACvBA,EAAOi8B,UAAU1B,gBAGlB+7B,UAAW,SAAmBt2D,GAC7B,IAAIu2D,EAASpvE,KAAKsW,MAAMka,WAAWyW,aAAapuB,EAAOtF,KAAKA,KAAMsF,EAAOtF,KAAKyzB,IAAKnuB,EAAOtF,KAAK0f,OAE/FjzB,KAAKqvE,WAAWx2D,EAAOi8B,UAAWs6B,IAGnCE,QAAS,SAAiBz2D,GACzB7Y,KAAKsW,MAAMka,WAAWwX,cAAcnvB,EAAOi8B,UAAW90C,KAAKsW,MAAMka,WAAWzS,KAAKlF,EAAOtF,KAAKyzB,MAAM,GACnGhnC,KAAKsW,MAAMka,WAAWkC,WAIxBo8C,EAAQ1vE,UAAU4vE,QAAU,CAC3BC,SAAU,SAAkBp2D,GAC3BA,EAAOi8B,UAAUvC,oBAAoB15B,EAAOtF,KAAKoiC,WAGlDu5B,OAAQ,SAAgBr2D,GACvB,IAAIu2D,EAASpvE,KAAKsW,MAAMka,WAAWyW,aAAapuB,EAAOtF,KAAKA,KAAMsF,EAAOtF,KAAKyzB,IAAKnuB,EAAOtF,KAAK0f,OAE/FjzB,KAAKqvE,WAAWx2D,EAAOi8B,UAAWs6B,IAGnCD,UAAW,SAAmBt2D,GAC7BA,EAAOi8B,UAAU1B,gBAGlBk8B,QAAS,SAAiBz2D,GACzB7Y,KAAKsW,MAAMka,WAAWwX,cAAcnvB,EAAOi8B,UAAW90C,KAAKsW,MAAMka,WAAWzS,KAAKlF,EAAOtF,KAAKyzB,MAAM,GACnGhnC,KAAKsW,MAAMka,WAAWkC,WAKxBo8C,EAAQ1vE,UAAUiwE,WAAa,SAAUE,EAAQH,GAChDpvE,KAAK6lC,QAAQtgC,QAAQ,SAAUsT,GAC9B,GAAIA,EAAOi8B,qBAAqBxQ,EAC3BzrB,EAAOi8B,YAAcy6B,IACxB12D,EAAOi8B,UAAYs6B,QAEd,GAAIv2D,EAAOi8B,qBAAqBjT,GAClChpB,EAAOi8B,UAAUjjB,MAAQ09C,EAAQ,CACpC,IAAIv9C,EAAQnZ,EAAOi8B,UAAUhiB,OAAOgF,WAEhC9F,IACHnZ,EAAOi8B,UAAYs6B,EAAO1gC,QAAQ1c,QAOvCnc,EAAUzW,UAAUknD,eAAe,UAAWwoB,GAC9C,IAAIU,EAAkB,SAAyBl5D,GAC9CtW,KAAKsW,MAAQA,EACbtW,KAAKyvE,WAAa,GAClBzvE,KAAK0vE,UAAW,GAGjBF,EAAgBpwE,UAAU0/C,WAAa,WACtC,IACI/7C,EADO/C,KACQsW,MAAMvT,QACrB8E,EAFO7H,KAEQsW,MAAMzO,QAErBwT,GADUxT,EAAQiP,QACR/T,EAAQY,qBAAqB,OACvCoa,EAAOhb,EAAQY,qBAAqB,SAAS,GAC7C4P,EAAO,GANAvT,KASN0vE,UAAW,EATL1vE,KAWNsW,MAAMzO,QAAQk1C,cAAcp/C,KAAKqC,KAAKsW,OAE3CyH,EAAOA,EAAOA,EAAKpa,qBAAqB,MAAQ,GAbrC3D,KAgBN2vE,gBAAgB5sE,EAAS8E,GAE1BwT,EAAQxb,OAlBDG,KAmBL4vE,gBAAgBv0D,EAAS0C,GAnBpB/d,KAqBL6vE,sBAAsBx0D,EAAS0C,GAIrC,IAAK,IAAIkV,EAAQ,EAAGA,EAAQlV,EAAKle,OAAQozB,IAAS,CACjD,IACIiD,EADMnY,EAAKkV,GACCtvB,qBAAqB,MACjC2jC,EAAO,GA5BDtnC,KA+BA0vE,WACTpoC,EAAKz/B,EAAQorB,OAASA,GAGvB,IAAK,IAAIz1B,EAAI,EAAGA,EAAI04B,EAAMr2B,OAAQrC,IAAK,CACtC,IAAI8I,EAAO4vB,EAAM14B,QACiB,IAAvBwC,KAAKyvE,WAAWjyE,KAC1B8pC,EAAKtnC,KAAKyvE,WAAWjyE,IAAM8I,EAAK25B,WAKlC1sB,EAAK1S,KAAKymC,GAIX,IAAIwoC,EAAajtE,SAASC,cAAc,OAGpCitE,EAAahtE,EAAQgtE,WAIzB,IAAK,IAAIvyE,KAAKuyE,EACiB,UAA1B1/D,EAAQ0/D,EAAWvyE,KACtBsyE,EAAWl0C,aAAam0C,EAAWvyE,GAAGO,KAAMgyE,EAAWvyE,GAAGiB,OAK5DsE,EAAQuwB,WAAWglC,aAAawX,EAAY/sE,GAE5C8E,EAAQ0L,KAAOA,EA/DJvT,KAiENsW,MAAMzO,QAAQm1C,aAAar/C,KAAKqC,KAAKsW,OAI1CtW,KAAKsW,MAAMvT,QAAU+sE,GAItBN,EAAgBpwE,UAAUuwE,gBAAkB,SAAU5sE,EAAS8E,EAASyvC,GACvE,IAAIy4B,EAAahtE,EAAQgtE,WACrBC,EAAa14B,EAAiBp5C,OAAOwB,OAAO,GAAI43C,GAAkBp5C,OAAOmC,KAAKwH,GAC9EooE,EAAc,GAMlB,IAAK,IAAIh9C,KAJT+8C,EAAWzqE,QAAQ,SAAU+hC,GAC5B2oC,EAAY3oC,EAAKkiB,eAAiBliB,IAGjByoC,EAAY,CAC7B,IACIhyE,EADAmyE,EAASH,EAAW98C,GAGpBi9C,GAA6E,gBAAhD,IAAXA,EAAyB,YAAc7/D,EAAQ6/D,KAAwBA,EAAOnyE,MAA8C,IAAtCmyE,EAAOnyE,KAAKuC,QAAQ,gBAC/HvC,EAAOmyE,EAAOnyE,KAAK0E,QAAQ,aAAc,SAER,IAAtBwtE,EAAYlyE,KACtB8J,EAAQooE,EAAYlyE,IAASiC,KAAKmwE,aAAaD,EAAOzxE,WAO1D+wE,EAAgBpwE,UAAU+wE,aAAe,SAAU1xE,GAClD,MAAc,SAAVA,GAIU,UAAVA,GAIGA,GAIR+wE,EAAgBpwE,UAAUgxE,SAAW,SAAU7nE,GAK9C,OAJYvI,KAAKsW,MAAMzO,QAAQiP,QAAQoZ,KAAK,SAAU4C,GACrD,OAAOA,EAAOvqB,QAAUA,MAGT,GAIjBinE,EAAgBpwE,UAAUwwE,gBAAkB,SAAUv0D,EAAS0C,GAC9D,IAAK,IAAIkV,EAAQ,EAAGA,EAAQ5X,EAAQxb,OAAQozB,IAAS,CACpD,IAGIzuB,EACAurE,EAJAla,EAASx6C,EAAQ4X,GACjBo9C,GAAS,EACTt+C,EAAM/xB,KAAKowE,SAASva,EAAOya,aA0B/B,IAAK,IAAI9yE,KAtBLu0B,EACHs+C,GAAS,EAETt+C,EAAM,CAAExpB,MAAOstD,EAAOya,YAAY9jB,QAG9Bz6B,EAAIC,QACRD,EAAIC,MAAQ6jC,EAAOya,YAAY9jB,OAAOhD,cAAc/mD,QAAQ,IAAK,OAGlE+B,EAAQqxD,EAAOmM,aAAa,YAEdjwC,EAAIvtB,QACjButB,EAAIvtB,MAAQA,GAIburE,EAAala,EAAOka,WAGpB/vE,KAAK2vE,gBAAgB9Z,EAAQ9jC,EAAKgB,EAAO3zB,UAAU08B,mBAErCi0C,EAAY,CACzB,IAAIG,EAASH,EAAWvyE,GAGpB0yE,GAA6E,gBAAhD,IAAXA,EAAyB,YAAc7/D,EAAQ6/D,KAAwBA,EAAOnyE,MAA8C,IAAtCmyE,EAAOnyE,KAAKuC,QAAQ,gBAI/HyxB,EAFOm+C,EAAOnyE,KAAK0E,QAAQ,aAAc,KAE7BzC,KAAKmwE,aAAaD,EAAOzxE,QAIvCuB,KAAKyvE,WAAWx8C,GAASlB,EAAIC,MAEzBD,EAAIC,OAAShyB,KAAKsW,MAAMzO,QAAQorB,QACnCjzB,KAAK0vE,UAAW,GAGZW,GACJrwE,KAAKsW,MAAMzO,QAAQiP,QAAQjW,KAAKkxB,KAMnCy9C,EAAgBpwE,UAAUywE,sBAAwB,SAAUx0D,EAAS0C,GACpE,IAAK,IAAIkV,EAAQ,EAAGA,EAAQ5X,EAAQxb,OAAQozB,IAAS,CACpD,IAAI4iC,EAASx6C,EAAQ4X,GACjBlB,EAAM,CAAExpB,MAAO,GAAIypB,MAAO,MAAQiB,GAEtCjzB,KAAKyvE,WAAWx8C,GAASlB,EAAIC,MAE7B,IAAIxtB,EAAQqxD,EAAOmM,aAAa,SAE5Bx9D,IACHutB,EAAIvtB,MAAQA,GAGbxE,KAAKsW,MAAMzO,QAAQiP,QAAQjW,KAAKkxB,KAIlClc,EAAUzW,UAAUknD,eAAe,kBAAmBkpB,GACtD,IAAIe,EAAkB,SAAyBj6D,GAC9CtW,KAAKsW,MAAQA,EACbtW,KAAK8gD,OAAS,GACd9gD,KAAKwwE,iBAAkB,EACvBxwE,KAAKywE,WAAa,IAGnBF,EAAgBnxE,UAAUsxE,eAAiB,SAAU5vB,EAAQz8C,EAAOswB,EAAS87C,GAC5EzwE,KAAKwwE,gBAAkBnsE,EACvBrE,KAAK8gD,OAASA,GAAU,GACxB9gD,KAAKywE,WAAaA,EAElB,IAAIp1D,EAAUrb,KAAK2wE,yBACfhsE,EAAO3E,KAAK4wE,qBAAqBj8C,GAEjCre,EAAQzT,SAASC,cAAc,SAOnC,OANAwT,EAAMya,UAAUvc,IAAI,yBACpB8B,EAAM1R,YAAYyW,GAClB/E,EAAM1R,YAAYD,GAElB3E,KAAK41D,iBAAiB51D,KAAKsW,MAAMvT,QAASuT,EAAO,CAAC,aAAc,cAAe,eAAgB,kBAExFA,GAGRi6D,EAAgBnxE,UAAUq0D,2BAA6B,WACtD,IAAIod,EAAU7wE,KAEVovB,EAAS,GAYb,QAV2C,IAA7BpvB,KAAK8gD,OAAO6Y,aAAyB35D,KAAKsW,MAAMqf,cAAc7e,QAAU9W,KAAKsW,MAAMqf,cAAclF,gBAEvGlrB,QAAQ,SAAUutB,GACzB,IAAI6gC,EAAUkd,EAAQjd,mBAAmB9gC,GAErC6gC,GACHvkC,EAAOvuB,KAAK8yD,KAIPvkC,GAGRmhD,EAAgBnxE,UAAUw0D,mBAAqB,SAAU9gC,GACxD,IAAIg+C,EAAU9wE,KAEVwwD,EAAY19B,EAAOhc,QACnBijD,EAAW,EAEXjG,EAAY,CACfvrD,MAAOuqB,EAAOH,WAAWpqB,MACzBuqB,OAAQA,EACRmnC,MAAO,GAGR,GAAIzJ,EAAU3wD,QAmBb,GAlBAi0D,EAAUtD,UAAY,GACtBsD,EAAUtvD,MAAQ,EAElBgsD,EAAUjrD,QAAQ,SAAUwuD,GAC3B,IAAIC,EAAe8c,EAAQld,mBAAmBG,GAE1CC,IACHF,EAAUtvD,OAASwvD,EAAaxvD,MAChCsvD,EAAUtD,UAAU3vD,KAAKmzD,GAErBA,EAAaiG,MAAQF,IACxBA,EAAW/F,EAAaiG,UAK3BnG,EAAUmG,OAASF,GAEdjG,EAAUtvD,MACd,OAAO,MAEF,CACN,IAAIsuB,EAAOd,QAAShyB,KAAK+wE,eAAej+C,GAGvC,OAAO,EAFPghC,EAAUtvD,MAAQ,EAMpB,OAAOsvD,GAGRyc,EAAgBnxE,UAAU60D,mBAAqB,SAAUn9C,GAExD,IAAIuE,EAAU,GACV8/C,EAAc,EAgClB,OAVArkD,EAAQvR,QAAQ,SAAUutB,GACrBA,EAAOmnC,MAAQkB,IAClBA,EAAcroC,EAAOmnC,SAIvBnjD,EAAQvR,QAAQ,SAAUutB,IA1B1B,SAASohC,EAAiBphC,EAAQm3B,GAEjC,IAAIgQ,EAAQkB,EAAclR,OAEI,IAAnB5uC,EAAQ4uC,KAClB5uC,EAAQ4uC,GAAS,IAGlBn3B,EAAOruB,OAASquB,EAAO09B,UAAY,EAAIyJ,EAAQnnC,EAAOmnC,MAAQ,EAE9D5+C,EAAQ4uC,GAAOppD,KAAKiyB,GAEhBA,EAAO09B,WACV19B,EAAO09B,UAAUjrD,QAAQ,SAAUwuD,GAClCG,EAAiBH,EAAU9J,EAAQ,KAarCiK,CAAiBphC,EAAQ,KAGnBzX,GAGRk1D,EAAgBnxE,UAAUuxE,uBAAyB,WAClD,IAAIK,EAAUhxE,KAEVu1D,EAAW1yD,SAASC,cAAc,SA0CtC,OAxCW9C,KAAKi0D,mBAAmBj0D,KAAKyzD,8BAEnCluD,QAAQ,SAAUssB,GACtB,IAAIkT,EAAQliC,SAASC,cAAc,MAEnCkuE,EAAQpb,iBAAiBob,EAAQ16D,MAAMqf,cAAcvE,oBAAqBmkC,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAE9M1jC,EAAItsB,QAAQ,SAAUutB,GACrB,IAAIrsB,EAAS5D,SAASC,cAAc,MAEpC2D,EAAOoT,QAAUiZ,EAAOtuB,MACxBiC,EAAOuX,QAAU8U,EAAOruB,OAExBgC,EAAOw5B,UAAYnN,EAAOA,OAAOH,WAAWpqB,MAExCyoE,EAAQR,kBACX/pE,EAAOpC,MAAM66D,UAAY,cAG1B8R,EAAQpb,iBAAiB9iC,EAAOA,OAAOpsB,aAAcD,EAAQ,CAAC,aAAc,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cACrMuqE,EAAQpb,iBAAiB9iC,EAAOA,OAAO4G,eAAgBjzB,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,mBAE5GqsB,EAAOA,OAAO6B,QACjBq8C,EAAQpb,iBAAiB9iC,EAAOA,OAAOpsB,aAAcD,EAAQ,CAAC,UAE1DqsB,EAAOA,OAAOH,WAAWnuB,QAC5BiC,EAAOpC,MAAMG,MAAQsuB,EAAOA,OAAOH,WAAWnuB,MAAQ,MAIpDsuB,EAAOA,OAAO+F,QACjBm4C,EAAQpb,iBAAiB9iC,EAAOA,OAAO+F,OAAOc,aAAclzB,EAAQ,CAAC,eAGtEs+B,EAAMngC,YAAY6B,KAGnB8uD,EAAS3wD,YAAYmgC,KAGfwwB,GAGRgb,EAAgBnxE,UAAUwxE,qBAAuB,SAAUj8C,GAC1D,IAEIqgC,EAAQC,EAASC,EAASC,EAAUC,EAAWC,EAAsBC,EAAYhtB,EAFjF2oC,EAAUjxE,KAKVA,KAAKwwE,iBAAmB5tE,OAAOqzD,mBAClCjB,EAASh1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,kEAC1CmuD,EAAUj1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,mEAC3CouD,EAAUl1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,kCAC3CquD,EAAWn1D,KAAKsW,MAAMvT,QAAQ+D,cAAc,8DAC5CuuD,EAAar1D,KAAKsW,MAAMvT,QAAQU,uBAAuB,mBAAmB,GAEtE0xD,IACHG,EAAaH,EAAS1xD,uBAAuB,kBAC7C2xD,EAAYE,EAAW,GACZA,EAAWA,EAAWz1D,OAAS,KAI5C,IAAIqxE,EAASruE,SAASC,cAAc,SAEhCib,EAAO4W,EAAU30B,KAAKsW,MAAMka,WAAW6a,gBAAe,GAAQrrC,KAAKsW,MAAMka,WAAWsU,iBACpFhuB,EAAU,GAsHd,OApHA9W,KAAKsW,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,GACrDm+C,EAAQF,eAAej+C,IAC1Bhc,EAAQjW,KAAKiyB,MAIf/U,EAAOA,EAAK/O,OAAO,SAAU6iB,GAC5B,OAAQA,EAAInpB,MACX,IAAK,QACJ,OAAoC,IAA7BuoE,EAAQnwB,OAAOuR,UAGvB,IAAK,OACJ,OAAsC,IAA/B4e,EAAQnwB,OAAOtpB,YAIxB,OAAO,KAGC33B,OAAS,KACjBgC,QAAQ+0B,KAAK,4EAGd7Y,EAAKxY,QAAQ,SAAUssB,EAAKr0B,GAC3B,IAAImyD,EAAU99B,EAAIgV,UAEd9B,EAAQliC,SAASC,cAAc,MAGnC,OAFAiiC,EAAMhU,UAAUvc,IAAI,6BAEZqd,EAAInpB,MACX,IAAK,QACJ,IAAIjC,EAAS5D,SAASC,cAAc,MACpC2D,EAAOoT,QAAU/C,EAAQjX,OACzB4G,EAAOw5B,UAAYpO,EAAI9yB,IAEvBgmC,EAAMhU,UAAUvc,IAAI,+BAEpBy8D,EAAQrb,iBAAiBP,EAAYtwB,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAC/JksC,EAAQrb,iBAAiBP,EAAY5uD,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,mBAC9Fs+B,EAAMngC,YAAY6B,GAClB,MAED,IAAK,OACJs+B,EAAMhU,UAAUvc,IAAI,+BAErB,IAAK,MACJsC,EAAQvR,QAAQ,SAAUutB,GACzB,IAAIrsB,EAAS5D,SAASC,cAAc,MAEhCrE,EAAQq0B,EAAOkH,cAAc21B,GAE7BiV,EAAc,CACjB9kC,SAAU,WACT,OAAOrhC,GAERq5B,SAAU,WACT,OAAOhF,EAAOH,WAAWX,OAE1BtrB,WAAY,WACX,OAAOD,GAERmtC,UAAW,WACV,OAAO9gB,EAAOuC,gBAEfse,OAAQ,WACP,MAAO,CACNzG,gBAAiB,eAGnB7X,aAAc,WACb,OAAOuvC,GAER9xC,OAAQA,GAGT,GAAIm+C,EAAQ36D,MAAMob,UAAU,UAC3BjzB,EAAQwyE,EAAQ36D,MAAM5Y,QAAQuE,OAAOyzC,YAAYkvB,QAEjD,YAAyB,IAAVnmE,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACJA,EAAQuH,KAAKE,UAAUzH,GACvB,MAED,IAAK,YACL,IAAK,OACJA,EAAQ,GACR,MAED,QACCA,EAAQA,EAIPA,aAAiBuhC,KACpBv5B,EAAO7B,YAAYnG,GAEnBgI,EAAOw5B,UAAYxhC,EAGhB22D,GACH6b,EAAQrb,iBAAiBR,EAAW3uD,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,iBAAkB,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,eAGlOs+B,EAAMngC,YAAY6B,KAGnB6hC,EAAuB,QAAZzW,EAAInpB,KAAiBwsD,EAAU13D,EAAI,GAAKy3D,EAAUA,EAAUD,EAEvEic,EAAQrb,iBAAiBttB,EAAUvD,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAI/JmsC,EAAOtsE,YAAYmgC,KAGbmsC,GAGRX,EAAgBnxE,UAAU2xE,eAAiB,SAAUj+C,GACpD,OAA8C,IAAvCA,EAAOH,WAAW3yB,KAAKywE,cAA0B39C,EAAO6B,UAAY7B,EAAO6B,SAAW7B,EAAOH,WAAW3yB,KAAKywE,cAGrHF,EAAgBnxE,UAAUmiD,QAAU,SAAU5sB,EAAStwB,EAAOy8C,GAC7D,IAAIpU,EAAS7pC,SAASC,cAAc,OAIpC,OAFA4pC,EAAO9nC,YAAY5E,KAAK0wE,eAAe5vB,GAAU9gD,KAAKsW,MAAMzO,QAAQg0C,iBAAkBx3C,EAAOswB,EAAS,eAE/F+X,EAAOzM,WAGfswC,EAAgBnxE,UAAUw2D,iBAAmB,SAAU1lD,EAAME,EAAIlL,GAChE,GAAIlF,KAAKwwE,iBAAmBtgE,GAAQE,EAAI,CAEvC,IAAIimD,EAAS,CACZC,mBAAoB,kBACpB/pC,MAAS,YACT/nB,MAAS,QACT+xD,cAAe,aACfC,cAAe,aACfC,YAAa,WACb0a,aAAc,YACdza,aAAc,YACdC,cAAe,aACfC,eAAgB,cAChBC,gBAAiB,eACjBua,cAAe,aACfC,eAAgB,cAChBC,gBAAiB,eACjBC,iBAAkB,iBAGnB,GAAI3uE,OAAOqzD,iBAAkB,CAC5B,IAAIa,EAAYl0D,OAAOqzD,iBAAiB/lD,GAExChL,EAAMK,QAAQ,SAAUgT,GACvBnI,EAAG/L,MAAMgyD,EAAO99C,IAASu+C,EAAUzxD,iBAAiBkT,QAMxD1C,EAAUzW,UAAUknD,eAAe,kBAAmBiqB,GACtD,IAAIiB,EAAc,SAAqBl7D,GACtCtW,KAAKsW,MAAQA,EACbtW,KAAKyxE,UAAY,KACjBzxE,KAAK0xE,YAAc,KACnB1xE,KAAK2xE,cAAe,EACpB3xE,KAAK4xE,gBAAiB,GAGvBJ,EAAYpyE,UAAU6xB,WAAa,WAClC,IAAIk4B,EAAWnpD,KAAKsW,MAAMzO,QAAQgwC,YAC9Bg6B,EAAiB,GAKrB,GAHA7xE,KAAKyxE,UAAY,GACjBzxE,KAAK0xE,YAAc,IAEF,IAAbvoB,EAAoB,CAEvB,IAAK,IAAIpqD,KAAOiB,KAAKmpD,SACpB0oB,EAAe9yE,GAAOiB,KAAKmpD,SAASpqD,GAGrC,GAAIb,OAAOmC,KAAK8oD,GAAUtpD,OAEzB,IAAK,IAAI0R,KAAQ43C,EAChB0oB,EAAetgE,GAAQ43C,EAAS53C,GAIlCvR,KAAK8xE,YAAYD,GACjB7xE,KAAK+xE,eAIPP,EAAYpyE,UAAU0yE,YAAc,SAAU3oB,GAC7C,IAAI6oB,EAAUhyE,KAEVoyB,EAAOpyB,KAEPiyE,EAAS,SAAgBlzE,GAExBizE,EAAQE,QAAQnzE,GAEfoqD,EAASpqD,KAEmB,WAA3BsR,EAAQ84C,EAASpqD,MACpBoqD,EAASpqD,GAAO,CAACoqD,EAASpqD,KAG3BoqD,EAASpqD,GAAKwG,QAAQ,SAAU6kD,GAC/Bh4B,EAAK+/C,WAAWpzE,EAAKqrD,MAIvBvoD,QAAQ+0B,KAAK,sCAAuC73B,IAItD,IAAK,IAAIA,KAAOoqD,EACf8oB,EAAOlzE,IAITyyE,EAAYpyE,UAAU+yE,WAAa,SAAUt5D,EAAQu5D,GACpD,IAAIhgD,EAAOpyB,KAEPoqD,EAAU,CACbvxC,OAAQ7Y,KAAKkyE,QAAQr5D,GACrBxY,KAAM,GACNgyE,MAAM,EACNlb,OAAO,GAGMib,EAAYryD,WAAWypC,cAAcz5C,MAAM,KAAK9O,KAAK,IAAI8O,MAAM,KAErExK,QAAQ,SAAU8iE,GACzB,OAAQA,GACP,IAAK,OACJje,EAAQioB,MAAO,EACf,MAED,IAAK,QACJjoB,EAAQ+M,OAAQ,EAChB,MAED,QACCkR,EAAS/zD,SAAS+zD,GAClBje,EAAQ/pD,KAAKQ,KAAKwnE,GAEbj2C,EAAKq/C,UAAUpJ,KACnBj2C,EAAKq/C,UAAUpJ,GAAU,IAG1Bj2C,EAAKq/C,UAAUpJ,GAAQxnE,KAAKupD,OAKhConB,EAAYpyE,UAAU2yE,WAAa,WAClC,IAAI3/C,EAAOpyB,KAEXA,KAAK2xE,aAAe,SAAUvvE,GAC7B,IAAIkwE,EAAOlwE,EAAE+8D,QACThW,EAAW/2B,EAAKq/C,UAAUa,GAE1BnpB,IAEH/2B,EAAKs/C,YAAY7wE,KAAKyxE,GAEtBnpB,EAAS5jD,QAAQ,SAAU6kD,GAC1Bh4B,EAAKmgD,aAAanwE,EAAGgoD,OAKxBpqD,KAAK4xE,eAAiB,SAAUxvE,GAC/B,IAAIkwE,EAAOlwE,EAAE+8D,QAGb,GAFe/sC,EAAKq/C,UAAUa,GAEhB,CAEb,IAAIr/C,EAAQb,EAAKs/C,YAAYpxE,QAAQgyE,GAEjCr/C,GAAS,GACZb,EAAKs/C,YAAY78D,OAAOoe,EAAO,KAKlCjzB,KAAKsW,MAAMvT,QAAQy6B,iBAAiB,UAAWx9B,KAAK2xE,cAEpD3xE,KAAKsW,MAAMvT,QAAQy6B,iBAAiB,QAASx9B,KAAK4xE,iBAGnDJ,EAAYpyE,UAAU0gD,cAAgB,WACjC9/C,KAAK2xE,cACR3xE,KAAKsW,MAAMvT,QAAQ28D,oBAAoB,UAAW1/D,KAAK2xE,cAGpD3xE,KAAK4xE,gBACR5xE,KAAKsW,MAAMvT,QAAQ28D,oBAAoB,QAAS1/D,KAAK4xE,iBAIvDJ,EAAYpyE,UAAUmzE,aAAe,SAAUnwE,EAAGgoD,GACjD,IAAIh4B,EAAOpyB,KACPkyB,GAAQ,EAEZ,OAAI9vB,EAAEowE,SAAWpoB,EAAQioB,MAAQjwE,EAAEqwE,UAAYroB,EAAQ+M,QACtD/M,EAAQ/pD,KAAKkF,QAAQ,SAAUxG,IAGhB,GAFFqzB,EAAKs/C,YAAYpxE,QAAQvB,KAGpCmzB,GAAQ,KAINA,GACHk4B,EAAQvxC,OAAOlb,KAAKy0B,EAAMhwB,IAGpB,IAOTovE,EAAYpyE,UAAU+pD,SAAW,CAChCupB,QAAS,YACTC,QAAS,EACTC,MAAO,GACPC,QAAS,GACTC,aAAc,GACdC,eAAgB,GAChBC,cAAe,GACfC,YAAa,GACbrtB,KAAM,YACNC,KAAM,YACNlD,gBAAiB,aAIlB6uB,EAAYpyE,UAAU8yE,QAAU,CAC/BgB,SAAU,SAAkB9wE,GAC3BA,EAAE+K,kBACF/K,EAAE2yC,kBAEH+9B,aAAc,SAAsB1wE,GACnC,IAAIouB,EAAaxwB,KAAKsW,MAAMka,WACxB2iD,EAAS3iD,EAAWoS,UAAYpS,EAAW/rB,OAC/B+rB,EAAWztB,QAAQm0B,aAEnC90B,EAAE2yC,iBAEEvkB,EAAWmS,mBACVwwC,GAAU,EACb3iD,EAAWztB,QAAQ6/B,UAAYuwC,EAE/B3iD,EAAWkU,YAAYlU,EAAWsU,iBAAiB,KAIrD9kC,KAAKsW,MAAMvT,QAAQq8B,SAEpB2zC,eAAgB,SAAwB3wE,GACvC,IAAIouB,EAAaxwB,KAAKsW,MAAMka,WACxB2iD,EAAS3iD,EAAWoS,UAAYpS,EAAW/rB,OAC3C2uE,EAAY5iD,EAAWztB,QAAQm0B,aAEnC90B,EAAE2yC,iBAEEvkB,EAAWmS,mBACVwwC,GAAUC,EACb5iD,EAAWztB,QAAQ6/B,UAAYuwC,EAE/B3iD,EAAWkU,YAAYlU,EAAWsU,iBAAiBtU,EAAWmS,iBAAmB,KAInF3iC,KAAKsW,MAAMvT,QAAQq8B,SAEpB4zC,cAAe,SAAuB5wE,GACrC,IAAIouB,EAAaxwB,KAAKsW,MAAMka,WAE5BpuB,EAAE2yC,iBAEEvkB,EAAWmS,kBACdnS,EAAWkU,YAAYlU,EAAWsU,iBAAiB,IAGpD9kC,KAAKsW,MAAMvT,QAAQq8B,SAEpB6zC,YAAa,SAAqB7wE,GACjC,IAAIouB,EAAaxwB,KAAKsW,MAAMka,WAE5BpuB,EAAE2yC,iBAEEvkB,EAAWmS,kBACdnS,EAAWkU,YAAYlU,EAAWsU,iBAAiBtU,EAAWmS,iBAAmB,IAGlF3iC,KAAKsW,MAAMvT,QAAQq8B,SAEpBszC,QAAS,SAAiBtwE,GACzB,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAMoC,SAKds8B,QAAS,SAAiBvwE,GACzB,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAMkC,SAKdk9B,QAAS,SAAiBjxE,GACzB,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAM3iB,SAKdgiD,SAAU,SAAkBlxE,GAC3B,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAMmC,UAKdw8B,MAAO,SAAexwE,GACrB,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAMqC,OAKdu8B,QAAS,SAAiBzwE,GACzB,IAAIkE,GAAO,EAEPtG,KAAKsW,MAAMob,UAAU,UACxBprB,EAAOtG,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,eAG9BljD,EAAE2yC,iBACFzuC,EAAK2tC,MAAMsC,SAKdqP,KAAM,SAAcxjD,GAEfpC,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAAc1xB,KAAKsW,MAAMob,UAAU,UAElF1xB,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,cAG9BljD,EAAE2yC,iBACF/0C,KAAKsW,MAAM5Y,QAAQmoC,QAAQ+f,UAK9BC,KAAM,SAAczjD,GAEfpC,KAAKsW,MAAMzO,QAAQg+B,SAAW7lC,KAAKsW,MAAMob,UAAU,YAAc1xB,KAAKsW,MAAMob,UAAU,UAElF1xB,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,cAG9BljD,EAAE2yC,iBACF/0C,KAAKsW,MAAM5Y,QAAQmoC,QAAQggB,UAK9BlD,gBAAiB,SAAyBvgD,GACpCpC,KAAKsW,MAAM5Y,QAAQ8gC,KAAK8mB,aACxBtlD,KAAKsW,MAAMob,UAAU,aAAa,IACrC1xB,KAAKsW,MAAM5Y,QAAQo6C,UAAU+K,KAAM7iD,KAAKsW,MAAMzO,QAAQyiC,YAA+C,aAAjCtqC,KAAKsW,MAAMzO,QAAQyiC,WAAuC,WAAX,SAAuB,KAAM,KAAM,MAAM,KAMhKz0B,EAAUzW,UAAUknD,eAAe,cAAekrB,GAClD,IAAI+B,EAAc,SAAqBj9D,GACtCtW,KAAKsW,MAAQA,EACbtW,KAAKwzE,mBAAqBxzE,KAAKyzE,2BAC/BzzE,KAAK0zE,cAAe,EACpB1zE,KAAK2zE,cAAe,EACpB3zE,KAAK4zE,YAAc,IACnB5zE,KAAK6zE,QAAS,EACd7zE,KAAK8zE,OAAQ,EACb9zE,KAAK+zE,YAAa,EAClB/zE,KAAKg0E,OAAS,EACdh0E,KAAKi0E,iBAAmB,GACxBj0E,KAAKk0E,eAAiB,EACtBl0E,KAAKm0E,mBAAoB,EACzBn0E,KAAKo0E,WAAY,EAEjBp0E,KAAKq0E,UAAYr0E,KAAKq0E,UAAUr1E,KAAKgB,MACrCA,KAAKs0E,QAAUt0E,KAAKs0E,QAAQt1E,KAAKgB,OAGlCuzE,EAAYn0E,UAAUq0E,yBAA2B,WAChD,IAAI3iD,EAAKjuB,SAASC,cAAc,OAKhC,OAHAguB,EAAGC,UAAUvc,IAAI,iBACjBsc,EAAGC,UAAUvc,IAAI,6BAEVsc,GAGRyiD,EAAYn0E,UAAU69B,iBAAmB,SAAUnK,GAClD,IAEIE,EAFAZ,EAAOpyB,KACP8gD,EAAS,GAGRhuB,EAAOp1B,QAAQutE,SAEnBj4C,EAAQF,EAAOpsB,aAEfo6C,EAAOyzB,UAAY,SAAUnyE,GACxB0wB,EAAO+F,SAAWzG,EAAKyhD,OAAOh7C,UAC5BzG,EAAKgiD,UAAYhyE,EAAEoyE,QAAQ,GAAGC,MAAQryE,EAAEqyE,OAAS5+D,EAAUzW,UAAU24B,QAAQmN,SAASlS,GAAO1B,KAAOc,EAAK9b,MAAMqf,cAAc5yB,QAAQ4tB,WAAamC,EAAOwC,WAAa,EACtKlD,EAAK0hD,QAAUhhD,GAAWV,EAAK2hD,aAClC/gD,EAAMM,WAAW1C,aAAawB,EAAKohD,mBAAoBxgD,EAAMO,aAC7DnB,EAAKmD,WAAWzC,GAAQ,KAGrBV,EAAK0hD,QAAUhhD,GAAUV,EAAK2hD,cACjC/gD,EAAMM,WAAW1C,aAAawB,EAAKohD,mBAAoBxgD,GACvDZ,EAAKmD,WAAWzC,GAAQ,MAI1B9zB,KAAKozB,GAEPY,EAAMwK,iBAAiB,YAAa,SAAUp7B,GAC7CgwB,EAAKgiD,WAAY,EACD,IAAZhyE,EAAEsyE,QACLtiD,EAAKuhD,aAAetnE,WAAW,WAC9B+lB,EAAKuiD,UAAUvyE,EAAG0wB,IAChBV,EAAKwhD,gBAIV5gD,EAAMwK,iBAAiB,UAAW,SAAUp7B,GAC3B,IAAZA,EAAEsyE,OACDtiD,EAAKuhD,cACR9lE,aAAaukB,EAAKuhD,gBAKrBvhD,EAAKwiD,gBAAgB9hD,IAGtBA,EAAOp1B,QAAQ63B,WAAaurB,GAG7ByyB,EAAYn0E,UAAUw1E,gBAAkB,SAAU9hD,GACjD,IAMIuG,EACAG,EACAkvB,EACAmsB,EACAC,EACAC,EAXA3iD,EAAOpyB,KACPgzB,EAAQF,EAAOpsB,aACfsuE,GAAa,EAWjBhiD,EAAMwK,iBAAiB,aAAc,SAAUp7B,GAC9CgwB,EAAKuhD,aAAetnE,WAAW,WAC9B+lB,EAAKgiD,WAAY,EACJthD,EACbuG,EAAUvG,EAAOwG,aACjBovB,EAAervB,EAAUA,EAAQ/D,WAAa,EAAI,EAClDkE,EAAU1G,EAAO2G,aACjBo7C,EAAer7C,EAAUA,EAAQlE,WAAa,EAAI,EAClDw/C,EAAmB,EACnBC,EAAmB,EACnBC,GAAa,EAEb5iD,EAAKuiD,UAAUvyE,EAAG0wB,IAChBV,EAAKwhD,cACN,CAAE51C,SAAS,IAEdhL,EAAMwK,iBAAiB,YAAa,SAAUp7B,GAC7C,IAAa2pC,EAAMkpC,EAEf7iD,EAAKyhD,SACRzhD,EAAKiiD,UAAUjyE,GAEV4yE,IACJA,EAAa5yE,EAAEoyE,QAAQ,GAAGC,QAG3B1oC,EAAO3pC,EAAEoyE,QAAQ,GAAGC,MAAQO,GAEjB,EACN37C,GAAW0S,EAAO+oC,EAAmBpsB,IACxCusB,EAAY57C,KAEMvG,IACjBkiD,EAAa5yE,EAAEoyE,QAAQ,GAAGC,MAC1BQ,EAAUvuE,aAAa4sB,WAAW1C,aAAawB,EAAKohD,mBAAoByB,EAAUvuE,aAAa6sB,aAC/FnB,EAAKmD,WAAW0/C,GAAW,IAIzBz7C,IAAYuS,EAAOgpC,EAAmBF,IACzCI,EAAYz7C,KAEM1G,IACjBkiD,EAAa5yE,EAAEoyE,QAAQ,GAAGC,MAC1BQ,EAAUvuE,aAAa4sB,WAAW1C,aAAawB,EAAKohD,mBAAoByB,EAAUvuE,cAClF0rB,EAAKmD,WAAW0/C,GAAW,IAK1BA,IACUA,EACb57C,EAAU47C,EAAU37C,aACpBw7C,EAAmBpsB,EACnBA,EAAervB,EAAUA,EAAQ/D,WAAa,EAAI,EAClDkE,EAAUy7C,EAAUx7C,aACpBs7C,EAAmBF,EACnBA,EAAer7C,EAAUA,EAAQlE,WAAa,EAAI,KAGlD,CAAE0I,SAAS,IAEdhL,EAAMwK,iBAAiB,WAAY,SAAUp7B,GACxCgwB,EAAKuhD,cACR9lE,aAAaukB,EAAKuhD,cAEfvhD,EAAKyhD,QACRzhD,EAAKkiD,QAAQlyE,MAKhBmxE,EAAYn0E,UAAUu1E,UAAY,SAAUvyE,EAAG0wB,GAC9C,IAAI/vB,EAAU+vB,EAAOpsB,aAErB1G,KAAK6zE,OAAS/gD,EACd9yB,KAAKg0E,QAAUh0E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGC,MAAQryE,EAAEqyE,OAAS5+D,EAAUzW,UAAU24B,QAAQmN,SAASniC,GAASuuB,KAE9GtxB,KAAKsW,MAAMvT,QAAQguB,UAAUvc,IAAI,0BAGjCxU,KAAKwzE,mBAAmBnvE,MAAMG,MAAQsuB,EAAOwC,WAAa,KAC1Dt1B,KAAKwzE,mBAAmBnvE,MAAMI,OAASquB,EAAOiB,YAAc,KAE5DhxB,EAAQuwB,WAAW1C,aAAa5wB,KAAKwzE,mBAAoBzwE,GACzDA,EAAQuwB,WAAWvuB,YAAYhC,GAG/B/C,KAAK0zE,aAAe3wE,EAAQk1D,WAAU,GACtCj4D,KAAK0zE,aAAa3iD,UAAUvc,IAAI,oBAEhCxU,KAAKsW,MAAMqf,cAAcjvB,aAAa9B,YAAY5E,KAAK0zE,cAEvD1zE,KAAK0zE,aAAarvE,MAAMitB,KAAO,IAC/BtxB,KAAK0zE,aAAarvE,MAAMurD,OAAS,IAE5B5vD,KAAKo0E,YACTp0E,KAAKk1E,iBAELryE,SAAS8B,KAAK64B,iBAAiB,YAAax9B,KAAKq0E,WACjDxxE,SAAS8B,KAAK64B,iBAAiB,UAAWx9B,KAAKs0E,UAGhDt0E,KAAKq0E,UAAUjyE,IAGhBmxE,EAAYn0E,UAAU81E,eAAiB,WACtCl1E,KAAKsW,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,GACrDA,EAAOp1B,QAAQ63B,WAAWg/C,WAC7BzhD,EAAOpsB,aAAa82B,iBAAiB,YAAa1K,EAAOp1B,QAAQ63B,WAAWg/C,cAK/EhB,EAAYn0E,UAAU+1E,iBAAmB,WACxCn1E,KAAKsW,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,GACrDA,EAAOp1B,QAAQ63B,WAAWg/C,WAC7BzhD,EAAOpsB,aAAag5D,oBAAoB,YAAa5sC,EAAOp1B,QAAQ63B,WAAWg/C,cAKlFhB,EAAYn0E,UAAUm2B,WAAa,SAAUzC,EAAQ0C,GACpD,IAAI4/C,EAAcp1E,KAAK6zE,OAAOx7C,WAE9Br4B,KAAK8zE,MAAQhhD,EACb9yB,KAAK+zE,WAAav+C,EAEdA,EACH1C,EAAOuF,WAAW9yB,QAAQ,SAAUe,EAAM9I,GACzC,IAAIiJ,EAASH,EAAKI,aAClBD,EAAO6sB,WAAW1C,aAAawkD,EAAY53E,GAAGkJ,aAAcD,EAAO8sB,eAGpET,EAAOuF,WAAW9yB,QAAQ,SAAUe,EAAM9I,GACzC,IAAIiJ,EAASH,EAAKI,aAClBD,EAAO6sB,WAAW1C,aAAawkD,EAAY53E,GAAGkJ,aAAcD,MAK/D8sE,EAAYn0E,UAAUk1E,QAAU,SAAUlyE,IACzB,IAAZA,EAAEsyE,OAAe10E,KAAKo0E,aACzBp0E,KAAKm1E,mBAELn1E,KAAKwzE,mBAAmBlgD,WAAW1C,aAAa5wB,KAAK6zE,OAAOntE,aAAc1G,KAAKwzE,mBAAmBjgD,aAClGvzB,KAAKwzE,mBAAmBlgD,WAAWvuB,YAAY/E,KAAKwzE,oBACpDxzE,KAAK0zE,aAAapgD,WAAWvuB,YAAY/E,KAAK0zE,cAE9C1zE,KAAKsW,MAAMvT,QAAQguB,UAAU3oB,OAAO,0BAEhCpI,KAAK8zE,OACR9zE,KAAKsW,MAAMqf,cAAcJ,WAAWv1B,KAAK6zE,OAAQ7zE,KAAK8zE,MAAO9zE,KAAK+zE,YAGnE/zE,KAAK6zE,QAAS,EACd7zE,KAAK8zE,OAAQ,EACb9zE,KAAK+zE,YAAa,EAEb/zE,KAAKo0E,YACTvxE,SAAS8B,KAAK+6D,oBAAoB,YAAa1/D,KAAKq0E,WACpDxxE,SAAS8B,KAAK+6D,oBAAoB,UAAW1/D,KAAKs0E,YAKrDf,EAAYn0E,UAAUi1E,UAAY,SAAUjyE,GAC3C,IAIIizE,EAJAjjD,EAAOpyB,KACPs1E,EAAeljD,EAAK9b,MAAMqf,cAAcjvB,aACxCiqB,EAAa2kD,EAAa3kD,WAC1B4kD,GAAQnjD,EAAKgiD,UAAYhyE,EAAEoyE,QAAQ,GAAGC,MAAQryE,EAAEqyE,OAAS5+D,EAAUzW,UAAU24B,QAAQmN,SAASowC,GAAchkD,KAAOX,EAGvHyB,EAAKshD,aAAarvE,MAAMitB,KAAOikD,EAAOnjD,EAAK4hD,OAAS,KAEhDuB,EAAO5kD,EAAayB,EAAK6hD,mBACvB7hD,EAAK+hD,oBACT/hD,EAAK+hD,kBAAoB9nE,WAAW,WACnCgpE,EAAYl/D,KAAKuG,IAAI,EAAGiU,EAAa,GACrCyB,EAAK9b,MAAMka,WAAW9pB,aAAaiqB,WAAa0kD,EAChDjjD,EAAK+hD,mBAAoB,GACvB,KAIDxjD,EAAa2kD,EAAaxwE,YAAcywE,EAAOnjD,EAAK6hD,mBAClD7hD,EAAK+hD,oBACT/hD,EAAK+hD,kBAAoB9nE,WAAW,WACnCgpE,EAAYl/D,KAAK2G,IAAIw4D,EAAaxwE,YAAa6rB,EAAa,GAC5DyB,EAAK9b,MAAMka,WAAW9pB,aAAaiqB,WAAa0kD,EAChDjjD,EAAK+hD,mBAAoB,GACvB,MAKNt+D,EAAUzW,UAAUknD,eAAe,aAAcitB,GACjD,IAAIiC,EAAW,SAAkBl/D,GAEhCtW,KAAKsW,MAAQA,EACbtW,KAAKwzE,mBAAqBxzE,KAAKyzE,2BAC/BzzE,KAAK0zE,cAAe,EACpB1zE,KAAK2zE,cAAe,EACpB3zE,KAAK4zE,YAAc,IACnB5zE,KAAK6zE,QAAS,EACd7zE,KAAKkzC,OAAQ,EACblzC,KAAKy1E,YAAa,EAClBz1E,KAAK01E,WAAY,EACjB11E,KAAK21E,OAAS,EACd31E,KAAKg0E,OAAS,EAEdh0E,KAAKq0E,UAAYr0E,KAAKq0E,UAAUr1E,KAAKgB,MACrCA,KAAKs0E,QAAUt0E,KAAKs0E,QAAQt1E,KAAKgB,MACjCA,KAAK41E,mBAAoB,EAEzB51E,KAAKo0E,WAAY,EAEjBp0E,KAAKorD,YAAa,EAClBprD,KAAKirD,YAAc,GAEnBjrD,KAAK61E,gBAAiB,EACtB71E,KAAK81E,cAAe,GAGrBN,EAASp2E,UAAUq0E,yBAA2B,WAC7C,IAAI3iD,EAAKjuB,SAASC,cAAc,OAKhC,OAHAguB,EAAGC,UAAUvc,IAAI,iBACjBsc,EAAGC,UAAUvc,IAAI,6BAEVsc,GAGR0kD,EAASp2E,UAAU6xB,WAAa,SAAU6xC,GACzC9iE,KAAKorD,WAAaprD,KAAKsW,MAAMzO,QAAQi0C,4BAGtC05B,EAASp2E,UAAUs8B,UAAY,SAAUonC,GACxC9iE,KAAK01E,UAAY5S,GAGlB0S,EAASp2E,UAAU2tE,sBAAwB,SAAUz5B,GACpD,IAAIlhB,EAAOpyB,KACP8gD,EAAS,GAIbA,EAAOi1B,QAAU,SAAU3zE,GAC1BgwB,EAAK4jD,aAAa5zE,EAAGyvB,MACpB7yB,KAAKozB,GAGP0uB,EAAOyzB,UAAY,SAAUnyE,GAG1B,IAMI2iC,EARF3iC,EAAE6zE,MAAQpgE,EAAUzW,UAAU24B,QAAQmN,SAASoO,EAAMvwC,SAASwB,IAAM6tB,EAAK9b,MAAMka,WAAWztB,QAAQ6/B,UAAY0Q,EAAMvf,YAAc,EACjI3B,EAAK8gB,QAAUI,GAAUlhB,EAAKqjD,cAC7B1wC,EAAQuO,EAAM5sC,cACZ4sB,WAAW1C,aAAawB,EAAKohD,mBAAoBzuC,EAAMxR,aAC7DnB,EAAKqJ,QAAQ6X,GAAO,KAGjBlhB,EAAK8gB,QAAUI,GAASlhB,EAAKqjD,cAC5B1wC,EAAQuO,EAAM5sC,cACRwvE,kBACTnxC,EAAMzR,WAAW1C,aAAawB,EAAKohD,mBAAoBzuC,GACvD3S,EAAKqJ,QAAQ6X,GAAO,KAItBt0C,KAAKozB,GAEPkhB,EAAM51C,QAAQ+9B,QAAUqlB,GAGzB00B,EAASp2E,UAAUwxC,cAAgB,SAAU/e,GAC5C,IAEIkT,EAFA3S,EAAOpyB,KACP8gD,EAAS,GAIbA,EAAOi1B,QAAU,SAAU3zE,GAC1BgwB,EAAK4jD,aAAa5zE,EAAGyvB,IACpB7yB,KAAKozB,GAGP0uB,EAAOyzB,UAAY,SAAUnyE,GAG1B,IAMI2iC,EARF3iC,EAAE6zE,MAAQpgE,EAAUzW,UAAU24B,QAAQmN,SAASrT,EAAI9uB,SAASwB,IAAM6tB,EAAK9b,MAAMka,WAAWztB,QAAQ6/B,UAAY/Q,EAAIkC,YAAc,EAC7H3B,EAAK8gB,QAAUrhB,GAAQO,EAAKqjD,cAC3B1wC,EAAQlT,EAAInrB,cACV4sB,WAAW1C,aAAawB,EAAKohD,mBAAoBzuC,EAAMxR,aAC7DnB,EAAKqJ,QAAQ5J,GAAK,KAGfO,EAAK8gB,QAAUrhB,GAAOO,EAAKqjD,eAC1B1wC,EAAQlT,EAAInrB,cACV4sB,WAAW1C,aAAawB,EAAKohD,mBAAoBzuC,GACvD3S,EAAKqJ,QAAQ5J,GAAK,KAGnB7yB,KAAKozB,GAEFpyB,KAAK01E,aAET3wC,EAAQlT,EAAInrB,cAEN82B,iBAAiB,YAAa,SAAUp7B,GAC7B,IAAZA,EAAEsyE,QACLtiD,EAAKuhD,aAAetnE,WAAW,WAC9B+lB,EAAKuiD,UAAUvyE,EAAGyvB,IAChBO,EAAKwhD,gBAIV7uC,EAAMvH,iBAAiB,UAAW,SAAUp7B,GAC3B,IAAZA,EAAEsyE,OACDtiD,EAAKuhD,cACR9lE,aAAaukB,EAAKuhD,gBAKrB3zE,KAAK40E,gBAAgB/iD,EAAKA,EAAInrB,eAG/BmrB,EAAIn0B,QAAQ+9B,QAAUqlB,GAGvB00B,EAASp2E,UAAUy1C,eAAiB,SAAUvuC,GAC7C,IAAI8rB,EAAOpyB,KACPyG,EAASH,EAAKI,aAElBD,EAAO+2B,iBAAiB,YAAa,SAAUp7B,GAC9B,IAAZA,EAAEsyE,QACLtiD,EAAKuhD,aAAetnE,WAAW,WAC9B+lB,EAAKuiD,UAAUvyE,EAAGkE,EAAKurB,MACrBO,EAAKwhD,gBAIVntE,EAAO+2B,iBAAiB,UAAW,SAAUp7B,GAC5B,IAAZA,EAAEsyE,OACDtiD,EAAKuhD,cACR9lE,aAAaukB,EAAKuhD,gBAKrB3zE,KAAK40E,gBAAgBtuE,EAAKurB,IAAKvrB,EAAKI,eAGrC8uE,EAASp2E,UAAUw1E,gBAAkB,SAAU/iD,EAAK9uB,GACnD,IAKI8lC,EACAE,EACAotC,EACAC,EACAC,EACAC,EAVAlkD,EAAOpyB,KACPu2E,GAAa,EAWjBxzE,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAChDgwB,EAAKuhD,aAAetnE,WAAW,WAC9B+lB,EAAKgiD,WAAY,EACJviD,EACbgX,EAAUhX,EAAIgX,UACdstC,EAAgBttC,EAAUA,EAAQ9U,YAAc,EAAI,EACpDgV,EAAUlX,EAAIkX,UACdqtC,EAAgBrtC,EAAUA,EAAQhV,YAAc,EAAI,EACpDsiD,EAAoB,EACpBC,EAAoB,EACpBC,GAAa,EAEbnkD,EAAKuiD,UAAUvyE,EAAGyvB,IAChBO,EAAKwhD,cACN,CAAE51C,SAAS,IACdh+B,KAAK6zE,OAAQ7zE,KAAKkzC,MAAOlzC,KAAKy1E,WAC9B1yE,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAE/C,IAAa2pC,EAAMiD,EAEf5c,EAAKyhD,SACRzxE,EAAE2yC,iBAEF3iB,EAAKiiD,UAAUjyE,GAEVm0E,IACJA,EAAan0E,EAAEoyE,QAAQ,GAAGyB,QAG3BlqC,EAAO3pC,EAAEoyE,QAAQ,GAAGyB,MAAQM,GAEjB,EACN1tC,GAAWkD,EAAOsqC,EAAoBF,IACzCnnC,EAAYnG,KAEMhX,IACjB0kD,EAAan0E,EAAEoyE,QAAQ,GAAGyB,MAC1BjnC,EAAUtoC,aAAa4sB,WAAW1C,aAAawB,EAAKohD,mBAAoBxkC,EAAUtoC,aAAa6sB,aAC/FnB,EAAKqJ,QAAQuT,GAAW,IAItBjG,IAAYgD,EAAOuqC,EAAoBF,IAC1CpnC,EAAYjG,KAEMlX,IACjB0kD,EAAan0E,EAAEoyE,QAAQ,GAAGyB,MAC1BjnC,EAAUtoC,aAAa4sB,WAAW1C,aAAawB,EAAKohD,mBAAoBxkC,EAAUtoC,cAClF0rB,EAAKqJ,QAAQuT,GAAW,IAKvBA,IACUA,EACbnG,EAAUmG,EAAUnG,UACpBwtC,EAAoBF,EACpBA,EAAgBttC,EAAUA,EAAQ9U,YAAc,EAAI,EACpDgV,EAAUiG,EAAUjG,UACpButC,EAAoBF,EACpBA,EAAgBrtC,EAAUA,EAAQhV,YAAc,EAAI,MAKvDhxB,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAC1CgwB,EAAKuhD,cACR9lE,aAAaukB,EAAKuhD,cAEfvhD,EAAKyhD,SACRzhD,EAAKkiD,QAAQlyE,GACbgwB,EAAKgiD,WAAY,MAKpBoB,EAASp2E,UAAU81E,eAAiB,WACxBl1E,KAENsW,MAAMka,WAAWsU,iBAAiBv/B,QAAQ,SAAUssB,GACtC,QAAbA,EAAInpB,MAA+B,UAAbmpB,EAAInpB,OAAqBmpB,EAAIn0B,QAAQ+9B,QAAQ84C,WACvE1iD,EAAInrB,aAAa82B,iBAAiB,YAAa3L,EAAIn0B,QAAQ+9B,QAAQ84C,cAKtEiB,EAASp2E,UAAU+1E,iBAAmB,WAC1Bn1E,KAENsW,MAAMka,WAAWsU,iBAAiBv/B,QAAQ,SAAUssB,GACtC,QAAbA,EAAInpB,MAA+B,UAAbmpB,EAAInpB,OAAqBmpB,EAAIn0B,QAAQ+9B,QAAQ84C,WACvE1iD,EAAInrB,aAAag5D,oBAAoB,YAAa7tC,EAAIn0B,QAAQ+9B,QAAQ84C,cAKzEiB,EAASp2E,UAAUu1E,UAAY,SAAUvyE,EAAGyvB,GAC3C,IAAI9uB,EAAU8uB,EAAInrB,aAElB1G,KAAKw2E,iBAAiBp0E,EAAGyvB,GAEzB7xB,KAAK6zE,OAAShiD,EAEd7xB,KAAKsW,MAAMvT,QAAQguB,UAAUvc,IAAI,0BAGjCxU,KAAKwzE,mBAAmBnvE,MAAMG,MAAQqtB,EAAIyD,WAAa,KACvDt1B,KAAKwzE,mBAAmBnvE,MAAMI,OAASotB,EAAIkC,YAAc,KAEpD/zB,KAAKorD,YAITprD,KAAKsW,MAAMvT,QAAQguB,UAAUvc,IAAI,+BACjCxU,KAAKy2E,gBAAgB5kD,KAJrB9uB,EAAQuwB,WAAW1C,aAAa5wB,KAAKwzE,mBAAoBzwE,GACzDA,EAAQuwB,WAAWvuB,YAAYhC,IAOhC/C,KAAK0zE,aAAe3wE,EAAQk1D,WAAU,GACtCj4D,KAAK0zE,aAAa3iD,UAAUvc,IAAI,oBAE5BxU,KAAKorD,YACRvoD,SAAS8B,KAAKC,YAAY5E,KAAK0zE,cAC/B1zE,KAAK0zE,aAAarvE,MAAMitB,KAAO,IAC/BtxB,KAAK0zE,aAAarvE,MAAME,IAAM,IAC9BvE,KAAK0zE,aAAarvE,MAAMG,MAAQxE,KAAKsW,MAAMvT,QAAQ+B,YAAc,KACjE9E,KAAK0zE,aAAarvE,MAAMg7D,WAAa,SACrCr/D,KAAK0zE,aAAarvE,MAAMK,SAAW,SACnC1E,KAAK0zE,aAAarvE,MAAM0pB,cAAgB,SAExC/tB,KAAKsW,MAAMka,WAAWkT,kBAAkB9+B,YAAY5E,KAAK0zE,cAEzD1zE,KAAK0zE,aAAarvE,MAAMitB,KAAO,IAC/BtxB,KAAK0zE,aAAarvE,MAAME,IAAM,IAE9BvE,KAAKk1E,kBAGNryE,SAAS8B,KAAK64B,iBAAiB,YAAax9B,KAAKq0E,WACjDxxE,SAAS8B,KAAK64B,iBAAiB,UAAWx9B,KAAKs0E,SAE/Ct0E,KAAKq0E,UAAUjyE,IAGhBozE,EAASp2E,UAAUo3E,iBAAmB,SAAUp0E,EAAGyvB,GAClD,IAEI9uB,EACAuB,EAHAmwE,EAAQz0E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGC,MAAQryE,EAAEqyE,MAChDwB,EAAQj2E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGyB,MAAQ7zE,EAAE6zE,MAIpDlzE,EAAU8uB,EAAInrB,aACV1G,KAAKorD,YACR9mD,EAAWvB,EAAQ0jD,wBAEnBzmD,KAAKg0E,OAAS1vE,EAASgtB,KAAOmjD,EAAQ7xE,OAAOikD,YAC7C7mD,KAAK21E,OAASrxE,EAASC,IAAM0xE,EAAQrzE,OAAO8jD,aAE5C1mD,KAAK21E,OAASM,EAAQlzE,EAAQ0jD,wBAAwBliD,KAIxDixE,EAASp2E,UAAUk1E,QAAU,SAAUlyE,GACjCA,GAAiB,IAAZA,EAAEsyE,QAAe10E,KAAKo0E,YAC/Bp0E,KAAKm1E,mBAEAn1E,KAAKorD,aACTprD,KAAKwzE,mBAAmBlgD,WAAW1C,aAAa5wB,KAAK6zE,OAAOntE,aAAc1G,KAAKwzE,mBAAmBjgD,aAClGvzB,KAAKwzE,mBAAmBlgD,WAAWvuB,YAAY/E,KAAKwzE,qBAGrDxzE,KAAK0zE,aAAapgD,WAAWvuB,YAAY/E,KAAK0zE,cAE9C1zE,KAAKsW,MAAMvT,QAAQguB,UAAU3oB,OAAO,0BAEhCpI,KAAKkzC,OACRlzC,KAAKsW,MAAMka,WAAWiL,QAAQz7B,KAAK6zE,OAAQ7zE,KAAKkzC,MAAOlzC,KAAKy1E,YAG7Dz1E,KAAK6zE,QAAS,EACd7zE,KAAKkzC,OAAQ,EACblzC,KAAKy1E,YAAa,EAElB5yE,SAAS8B,KAAK+6D,oBAAoB,YAAa1/D,KAAKq0E,WACpDxxE,SAAS8B,KAAK+6D,oBAAoB,UAAW1/D,KAAKs0E,SAE9Ct0E,KAAKorD,aACRprD,KAAKsW,MAAMvT,QAAQguB,UAAU3oB,OAAO,+BACpCpI,KAAK02E,0BAKRlB,EAASp2E,UAAUq8B,QAAU,SAAU5J,EAAK2D,GAC3Cx1B,KAAKkzC,MAAQrhB,EACb7xB,KAAKy1E,WAAajgD,GAGnBggD,EAASp2E,UAAUi1E,UAAY,SAAUjyE,GACpCpC,KAAKorD,WACRprD,KAAK22E,qBAAqBh5E,KAAKqC,KAAMoC,GAErCpC,KAAK42E,eAAej5E,KAAKqC,KAAMoC,IAIjCozE,EAASp2E,UAAUw3E,eAAiB,SAAUx0E,GAC7C,IAAIy0E,EAAY72E,KAAKsW,MAAMka,WAAW9pB,aAClCk8B,EAAYi0C,EAAUj0C,UACtBk0C,GAAQ92E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGyB,MAAQ7zE,EAAE6zE,OAASY,EAAUpwB,wBAAwBliD,IAAMq+B,EAGrG5iC,KAAK0zE,aAAarvE,MAAME,IAAMuyE,EAAO92E,KAAK21E,OAAS,MAGpDH,EAASp2E,UAAUu3E,qBAAuB,SAAUv0E,GACnDpC,KAAK0zE,aAAarvE,MAAMitB,KAAOtxB,KAAKg0E,QAAUh0E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGC,MAAQryE,EAAEqyE,OAAS,KAC/Fz0E,KAAK0zE,aAAarvE,MAAME,IAAMvE,KAAK21E,QAAU31E,KAAKo0E,UAAYhyE,EAAEoyE,QAAQ,GAAGyB,MAAQ7zE,EAAE6zE,OAAS,MAI/FT,EAASp2E,UAAUq3E,gBAAkB,SAAU5kD,GAC9C,IACIo5B,EAAcjrD,KAAKsW,MAAM5Y,QAAQ05C,MAAM2T,eAAe/qD,KAAKorD,YAE/DprD,KAAKsW,MAAMzO,QAAQo0C,wBAAwBt+C,KAAKqC,KAAKsW,MAAO20C,GAE5DjrD,KAAKsW,MAAM5Y,QAAQ05C,MAAM+T,KAAKnrD,KAAKorD,WAAY,UAAW,UAAW,CACpEv5B,IAAKA,KAKP2jD,EAASp2E,UAAUs3E,qBAAuB,WACzC,IACIzrB,EAAcjrD,KAAKsW,MAAM5Y,QAAQ05C,MAAM2T,eAAe/qD,KAAKorD,YAE/DprD,KAAKsW,MAAMzO,QAAQu0C,uBAAuBz+C,KAAKqC,KAAKsW,MAAO20C,GAE3DjrD,KAAKsW,MAAM5Y,QAAQ05C,MAAM+T,KAAKnrD,KAAKorD,WAAY,UAAW,eAI3DoqB,EAASp2E,UAAU23E,QAAU,SAAUzgE,EAAOub,GAE7C,OAAK7xB,KAAK61E,gBAoBTh0E,QAAQ+0B,KAAK,+EAAgF52B,KAAK61E,iBAC3F,IApBP71E,KAAK61E,eAAiBv/D,EACtBtW,KAAK81E,aAAejkD,EAEpB7xB,KAAKsW,MAAMvT,QAAQguB,UAAUvc,IAAI,iCALvBxU,KAOLsW,MAAMka,WAAWsU,iBAAiBv/B,QAAQ,SAAUssB,GACvC,QAAbA,EAAInpB,MAAkBmpB,EAAIn0B,QAAQ+9B,SAAW5J,EAAIn0B,QAAQ+9B,QAAQs6C,SACpElkD,EAAInrB,aAAa82B,iBAAiB,UAAW3L,EAAIn0B,QAAQ+9B,QAAQs6C,WATzD/1E,KAaL41E,kBAbK51E,KAaoBg2E,aAAah3E,KAbjCgB,WAeLsW,MAAMvT,QAAQy6B,iBAAiB,UAf1Bx9B,KAe0C41E,mBAEpD51E,KAAKsW,MAAMzO,QAAQw0C,0BAA0B1+C,KAAKqC,KAAKsW,MAAOub,EAAKvb,IAE5D,IAQTk/D,EAASp2E,UAAU43E,WAAa,SAAU1gE,GAErCA,IAAUtW,KAAK61E,gBAClB71E,KAAK61E,gBAAiB,EACtB71E,KAAK81E,cAAe,EAEpB91E,KAAKsW,MAAMvT,QAAQguB,UAAU3oB,OAAO,iCAL1BpI,KAOLsW,MAAMka,WAAWsU,iBAAiBv/B,QAAQ,SAAUssB,GACvC,QAAbA,EAAInpB,MAAkBmpB,EAAIn0B,QAAQ+9B,SAAW5J,EAAIn0B,QAAQ+9B,QAAQs6C,SACpElkD,EAAInrB,aAAag5D,oBAAoB,UAAW7tC,EAAIn0B,QAAQ+9B,QAAQs6C,WAT5D/1E,KAaLsW,MAAMvT,QAAQ28D,oBAAoB,UAb7B1/D,KAa6C41E,mBAEvD51E,KAAKsW,MAAMzO,QAAQ20C,yBAAyB7+C,KAAKqC,KAAKsW,MAAOA,IAE7DzU,QAAQ+0B,KAAK,mEAIf4+C,EAASp2E,UAAU63E,aAAe,SAAU3gE,EAAOub,EAAKrqB,GACvD,IAAI0vE,GAAS,EAEb,GAAI1vE,EAAS,CAEZ,OAAQ6I,EAAQrQ,KAAKsW,MAAMzO,QAAQk0C,oBAClC,IAAK,SACJm7B,EAASl3E,KAAKm3E,QAAQn3E,KAAKsW,MAAMzO,QAAQk0C,mBACzC,MAED,IAAK,WACJm7B,EAASl3E,KAAKsW,MAAMzO,QAAQk0C,kBAI1Bm7B,EACHA,EAAOv5E,KAAKqC,KAAMA,KAAK6zE,OAAOx+C,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWmV,GAEhFtW,KAAKsW,MAAMzO,QAAQk0C,mBACtBl6C,QAAQ+0B,KAAK,8CAA+C52B,KAAKsW,MAAMzO,QAAQk0C,mBAIjF/7C,KAAKsW,MAAMzO,QAAQq0C,gBAAgBv+C,KAAKqC,KAAKsW,MAAOtW,KAAK6zE,OAAOx+C,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWmV,QAEtHtW,KAAKsW,MAAMzO,QAAQs0C,sBAAsBx+C,KAAKqC,KAAKsW,MAAOtW,KAAK6zE,OAAOx+C,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWmV,GAG7HtW,KAAKs0E,WAGNkB,EAASp2E,UAAU42E,aAAe,SAAU5zE,EAAGyvB,GAC9C,IAAIulD,GAAW,EACX5vE,GAAU,EAId,OAFApF,EAAE2+D,2BAEM1wD,EAAQrQ,KAAKsW,MAAMzO,QAAQm0C,sBAClC,IAAK,SACJo7B,EAAWp3E,KAAKq3E,UAAUr3E,KAAKsW,MAAMzO,QAAQm0C,qBAC7C,MAED,IAAK,WACJo7B,EAAWp3E,KAAKsW,MAAMzO,QAAQm0C,oBAI5Bo7B,EACH5vE,EAAU4vE,EAASz5E,KAAKqC,KAAMA,KAAK81E,aAAazgD,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWnB,KAAK61E,gBAE3Gh0E,QAAQ+0B,KAAK,gDAAiD52B,KAAKsW,MAAMzO,QAAQm0C,qBAG9Ex0C,EACHxH,KAAKsW,MAAMzO,QAAQy0C,oBAAoB3+C,KAAKqC,KAAKsW,MAAOtW,KAAK81E,aAAazgD,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWnB,KAAK61E,gBAErI71E,KAAKsW,MAAMzO,QAAQ00C,0BAA0B5+C,KAAKqC,KAAKsW,MAAOtW,KAAK81E,aAAazgD,eAAgBxD,EAAMA,EAAIwD,oBAAiBl0B,EAAWnB,KAAK61E,gBAG5I71E,KAAKsW,MAAM5Y,QAAQ05C,MAAM+T,KAAKnrD,KAAK61E,eAAgB,UAAW,eAAgB,CAC7EhkD,IAAKA,EACLrqB,QAASA,KAIXguE,EAASp2E,UAAUi4E,UAAY,CAC9BjgB,OAAQ,SAAgB1U,EAASxP,EAAOokC,GAEvC,OADAt3E,KAAKsW,MAAMywB,OAAO2b,EAAQ7b,eAAW1lC,EAAW+xC,IACzC,GAGR1+B,IAAK,SAAakuC,EAASxP,EAAOokC,GAEjC,OADAt3E,KAAKsW,MAAMywB,OAAO2b,EAAQ7b,YACnB,GAGR3O,OAAQ,SAAgBwqB,EAASxP,EAAOokC,GACvC,QAAIpkC,IACHA,EAAMhb,OAAOwqB,EAAQ7b,YACd,IAMTpkC,QAAS,SAAiBigD,EAASxP,EAAOokC,GACzC,QAAIpkC,IACHlzC,KAAKsW,MAAMywB,OAAO2b,EAAQ7b,eAAW1lC,EAAW+xC,GAChDA,EAAMxa,UACC,KAOV88C,EAASp2E,UAAU+3E,QAAU,CAC5Bz+C,OAAQ,SAAiBgqB,EAASxP,EAAOqkC,GACxC70B,EAAQhqB,WAIV88C,EAASp2E,UAAUisD,cAAgB,SAAU/0C,EAAOuC,EAAQtF,GAC3D,OAAQsF,GACP,IAAK,UACJ,OAAO7Y,KAAK+2E,QAAQzgE,EAAO/C,EAAKse,KAGjC,IAAK,aACJ,OAAO7xB,KAAKg3E,WAAW1gE,GAGxB,IAAK,eACJ,OAAOtW,KAAKi3E,aAAa3gE,EAAO/C,EAAKse,IAAKte,EAAK/L,WAKlDqO,EAAUzW,UAAUknD,eAAe,UAAWkvB,GAC9C,IAAIgC,EAAU,SAAiBlhE,GAC9BtW,KAAKsW,MAAQA,EACbtW,KAAKurD,aAAe,CAAC,GAAI,OAAQ,OAAQ,aACzCvrD,KAAKy3E,SAAU,GAIhBD,EAAQp4E,UAAU69B,iBAAmB,SAAUnK,GAC9C,IAAIV,EAAOpyB,KACPkyB,GAAQ,EACR4uB,EAAS,GAEb9gD,KAAKurD,aAAahmD,QAAQ,SAAUmD,GACnC,IACIg2B,EADA3/B,EAAM,WAAa2J,EAAK8iD,OAAO,GAAG94C,cAAgBhK,EAAKrF,MAAM,IAG7DyvB,EAAOH,WAAW5zB,KACrB2/B,EAAUtM,EAAKslD,cAAc5kD,EAAOH,WAAW5zB,OAG9CmzB,GAAQ,EAER4uB,EAAO/hD,GAAO,CACb2/B,QAASA,EACTgB,OAAQ5M,EAAOH,WAAW5zB,EAAM,WAAa,OAM7CmzB,IACHY,EAAOp1B,QAAQo2C,OAASgN,IAI1B02B,EAAQp4E,UAAUs4E,cAAgB,SAAUj5E,GAC3C,IAAIigC,GAAU,EAGd,YAAyB,IAAVjgC,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SACAuB,KAAK23E,SAASl5E,GACjBigC,EAAU1+B,KAAK23E,SAASl5E,GAExBoD,QAAQ+0B,KAAK,oDAAqDn4B,GAEnE,MAED,IAAK,WACJigC,EAAUjgC,EAIZ,OAAOigC,GAIR84C,EAAQp4E,UAAU6yC,aAAe,SAAU1+B,EAAM7K,EAAMwvB,GACtD,IAEIz5B,EADAM,EAAM,WAAa2J,EAAK8iD,OAAO,GAAG94C,cAAgBhK,EAAKrF,MAAM,IAwBjE,OArBIrD,KAAKy3E,SAJEz3E,KAMLsW,MAAMqf,cAAcb,SAAS,SAAUhC,GAC3C,IAAI4L,EAASgB,EAAQoV,EAEjBhiB,EAAOp1B,QAAQo2C,SAClBpV,EAAU5L,EAAOp1B,QAAQo2C,OAAO/0C,IAAQ+zB,EAAOp1B,QAAQo2C,OAAOpV,UAAW,KAGxEjgC,EAAQq0B,EAAOkH,cAAczmB,KAExB2kB,GAAUA,QAA2B,IAAVz5B,KAC/Bq2C,EAAYhiB,EAAOuC,eACnBqK,EAAmC,mBAAnBhB,EAAQgB,OAAwBhB,EAAQgB,OAAOjhC,EAAO8U,EAAM7K,EAAMosC,GAAapW,EAAQgB,OACvG5M,EAAOmH,cAAc1mB,EAAMmrB,EAAQA,QAAQjgC,EAAO8U,EAAM7K,EAAMg3B,EAAQoV,QAOpEvhC,GAIRikE,EAAQp4E,UAAUy2C,cAAgB,SAAUvvC,EAAM7H,GACjD,IAAIigC,EAAUp4B,EAAKwsB,OAAOp1B,QAAQo2C,OAAO8jC,aAAetxE,EAAKwsB,OAAOp1B,QAAQo2C,OAAOpV,UAAW,EAE9F,OAAIA,EACIA,EAAQA,QAAQjgC,EAAO6H,EAAKurB,IAAIgV,UAAW,OAAQnI,EAAQgB,OAAQp5B,EAAK+uB,gBAExE52B,GAIT+4E,EAAQp4E,UAAU6wD,OAAS,WAC1BjwD,KAAKy3E,SAAU,GAGhBD,EAAQp4E,UAAU4wD,QAAU,WAC3BhwD,KAAKy3E,SAAU,GAIhBD,EAAQp4E,UAAUu4E,SAAW,GAE7B9hE,EAAUzW,UAAUknD,eAAe,UAAWkxB,GAC9C,IAAIK,EAAO,SAAcvhE,GAExBtW,KAAKsW,MAAQA,EAEbtW,KAAKrB,KAAO,QACZqB,KAAKkqC,iBAAkB,EAEvBlqC,KAAKkE,KAAO,EACZlE,KAAK0nC,KAAO,EACZ1nC,KAAKkxD,MAAQ,EACblxD,KAAK0c,IAAM,EAEX1c,KAAK0mC,aAAe,EAEpB1mC,KAAK83E,UAAY,GAEjB93E,KAAK4sE,kBAGNiL,EAAKz4E,UAAUwtE,eAAiB,WAE/B,IAAImL,EAEJ/3E,KAAK+C,QAAUF,SAASC,cAAc,QACtC9C,KAAK+C,QAAQguB,UAAUvc,IAAI,uBAE3BxU,KAAKg4E,aAAen1E,SAASC,cAAc,QAC3C9C,KAAKg4E,aAAajnD,UAAUvc,IAAI,oBAEhCujE,EAASl1E,SAASC,cAAc,WACzBiuB,UAAUvc,IAAI,kBACrBujE,EAAOn8C,aAAa,OAAQ,UAC5Bm8C,EAAOn8C,aAAa,OAAQ,UAC5Bm8C,EAAOn8C,aAAa,aAAc,IAClCm8C,EAAOn8C,aAAa,QAAS,IAE7B57B,KAAKi4E,SAAWF,EAAO9f,WAAU,GACjCj4D,KAAKi4E,SAASr8C,aAAa,YAAa,SAExC57B,KAAKk4E,QAAUH,EAAO9f,WAAU,GAChCj4D,KAAKk4E,QAAQt8C,aAAa,YAAa,QAEvC57B,KAAKm4E,QAAUJ,EAAO9f,WAAU,GAChCj4D,KAAKm4E,QAAQv8C,aAAa,YAAa,QAEvC57B,KAAKo4E,QAAUL,EAAO9f,WAAU,GAChCj4D,KAAKo4E,QAAQx8C,aAAa,YAAa,QAEnC57B,KAAKsW,MAAMzO,QAAQ8yC,yBACtB36C,KAAKq4E,eAAiBx1E,SAASC,cAAc,UAC7C9C,KAAKq4E,eAAetnD,UAAUvc,IAAI,yBAIpCqjE,EAAKz4E,UAAUk5E,2BAA6B,WAC3C,IAAIC,EAAUv4E,KAEV83E,EAAY,GAEhB,GAAI93E,KAAKq4E,eAAgB,CAExB,GAAIv3E,MAAMC,QAAQf,KAAKsW,MAAMzO,QAAQ8yC,wBACpCm9B,EAAY93E,KAAKsW,MAAMzO,QAAQ8yC,uBAC/B36C,KAAK83E,UAAYA,GAEyB,GAAtC93E,KAAK83E,UAAUx3E,QAAQN,KAAKkE,OAC/B4zE,EAAUtkD,QAAQxzB,KAAKkE,WAIxB,IAA0C,GAAtClE,KAAK83E,UAAUx3E,QAAQN,KAAKkE,MAAa,CAC5C4zE,EAAY,GAEZ,IAAK,IAAIt6E,EAAI,EAAGA,EAAI,EAAGA,IACtBs6E,EAAUj3E,KAAKb,KAAKkE,KAAO1G,GAG5BwC,KAAK83E,UAAYA,OAEjBA,EAAY93E,KAAK83E,UAInB,KAAO93E,KAAKq4E,eAAexnD,YAC1B7wB,KAAKq4E,eAAetzE,YAAY/E,KAAKq4E,eAAexnD,YACpDinD,EAAUvyE,QAAQ,SAAU+hC,GAC5B,IAAIkxC,EAAS31E,SAASC,cAAc,UACpC01E,EAAO/5E,MAAQ6oC,EACfkxC,EAAOv4C,UAAYqH,EAEnBixC,EAAQF,eAAezzE,YAAY4zE,KAGpCx4E,KAAKq4E,eAAe55E,MAAQuB,KAAKkE,OAKnC2zE,EAAKz4E,UAAU6xB,WAAa,SAAU3V,GACrC,IACIm9D,EADArmD,EAAOpyB,KAIX,IAAK,IAAIjB,KAAOqzB,EAAK9b,MAAMzO,QAAQgzC,mBAClCzoB,EAAKiX,wBAAwBtqC,GAAOqzB,EAAK9b,MAAMzO,QAAQgzC,mBAAmB97C,GAG3E,IAAK,IAAI25E,KAAStmD,EAAK9b,MAAMzO,QAAQizC,uBACpC1oB,EAAKumD,4BAA4BD,GAAStmD,EAAK9b,MAAMzO,QAAQizC,uBAAuB49B,GAMrFtmD,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,mBAAoB,SAAUP,GAC9D2zB,EAAK6lD,SAASh4C,UAAYxhC,IAG3B2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,yBAA0B,SAAUP,GACpE2zB,EAAK6lD,SAASr8C,aAAa,aAAcn9B,GACzC2zB,EAAK6lD,SAASr8C,aAAa,QAASn9B,KAGrC2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,kBAAmB,SAAUP,GAC7D2zB,EAAK8lD,QAAQj4C,UAAYxhC,IAG1B2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,wBAAyB,SAAUP,GACnE2zB,EAAK8lD,QAAQt8C,aAAa,aAAcn9B,GACxC2zB,EAAK8lD,QAAQt8C,aAAa,QAASn9B,KAGpC2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,kBAAmB,SAAUP,GAC7D2zB,EAAK+lD,QAAQl4C,UAAYxhC,IAG1B2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,wBAAyB,SAAUP,GACnE2zB,EAAK+lD,QAAQv8C,aAAa,aAAcn9B,GACxC2zB,EAAK+lD,QAAQv8C,aAAa,QAASn9B,KAGpC2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,kBAAmB,SAAUP,GAC7D2zB,EAAKgmD,QAAQn4C,UAAYxhC,IAG1B2zB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,wBAAyB,SAAUP,GACnE2zB,EAAKgmD,QAAQx8C,aAAa,aAAcn9B,GACxC2zB,EAAKgmD,QAAQx8C,aAAa,QAASn9B,KAIpC2zB,EAAK6lD,SAASz6C,iBAAiB,QAAS,WACvCpL,EAAK0X,QAAQ,KAGd1X,EAAK8lD,QAAQ16C,iBAAiB,QAAS,WACtCpL,EAAKsyB,iBAGNtyB,EAAK+lD,QAAQ36C,iBAAiB,QAAS,WACtCpL,EAAKgS,WAAWuF,KAAK,cAAgBC,MAAM,gBAG5CxX,EAAKgmD,QAAQ56C,iBAAiB,QAAS,WACtCpL,EAAK0X,QAAQ1X,EAAK1V,OAGf0V,EAAK9b,MAAMzO,QAAQ+yC,oBACtBxoB,EAAKrvB,QAAUqvB,EAAK9b,MAAMzO,QAAQ+yC,mBAG/B56C,KAAKq4E,iBACRI,EAAkB51E,SAASC,cAAc,SAEzCsvB,EAAK9b,MAAM5Y,QAAQ++B,SAASz9B,KAAK,uBAAwB,SAAUP,GAClE2zB,EAAKimD,eAAez8C,aAAa,aAAcn9B,GAC/C2zB,EAAKimD,eAAez8C,aAAa,QAASn9B,GAC1Cg6E,EAAgBx4C,UAAYxhC,IAG7B2zB,EAAKrvB,QAAQ6B,YAAY6zE,GACzBrmD,EAAKrvB,QAAQ6B,YAAYwtB,EAAKimD,gBAE9BjmD,EAAKimD,eAAe76C,iBAAiB,SAAU,SAAUp7B,GACxDgwB,EAAKqyB,YAAYryB,EAAKimD,eAAe55E,OACrC2zB,EAAK0X,QAAQ,GAAGH,KAAK,cAAgBC,MAAM,iBAK7CxX,EAAKrvB,QAAQ6B,YAAYwtB,EAAK6lD,UAC9B7lD,EAAKrvB,QAAQ6B,YAAYwtB,EAAK8lD,SAC9B9lD,EAAKrvB,QAAQ6B,YAAYwtB,EAAK4lD,cAC9B5lD,EAAKrvB,QAAQ6B,YAAYwtB,EAAK+lD,SAC9B/lD,EAAKrvB,QAAQ6B,YAAYwtB,EAAKgmD,SAEzBhmD,EAAK9b,MAAMzO,QAAQ+yC,mBAAsBt/B,GAC7C8W,EAAK9b,MAAM6hB,cAAcjtB,OAAOknB,EAAKrvB,QAASqvB,GAI/CA,EAAKzzB,KAAOyzB,EAAK9b,MAAMzO,QAAQ09B,WAC/BnT,EAAKluB,KAAOkuB,EAAK9b,MAAMzO,QAAQ4yC,gBAAkBtkC,KAAKC,MAAMgc,EAAK9b,MAAMka,WAAW9pB,aAAaywB,aAAe,IAC9G/E,EAAK8+B,MAAQ9+B,EAAK9b,MAAMzO,QAAQ6yC,sBAEhCtoB,EAAKkmD,8BAGNT,EAAKz4E,UAAUutD,sBAAwB,SAAUhuD,GAChDqB,KAAKixB,YAAW,GAChBjxB,KAAKrB,KAAO,eAAiBA,EAC7BqB,KAAKkqC,iBAAkB,GAGxB2tC,EAAKz4E,UAAUyrC,gBAAkB,SAAU5X,GAC1CjzB,KAAK0mC,aAAezT,GAGrB4kD,EAAKz4E,UAAUwrC,gBAAkB,WAChC,OAAO5qC,KAAK0mC,cAIbmxC,EAAKz4E,UAAU8rC,WAAa,SAAUsjC,GAIpCxuE,KAAK0c,IAHD8xD,EAGOr4D,KAAK42B,KAAKyhC,EAAWxuE,KAAKkE,MAF1B,EAKRlE,KAAK0nC,KAAO1nC,KAAK0c,MACpB1c,KAAK0nC,KAAO1nC,KAAK0c,MAKnBm7D,EAAKz4E,UAAUizB,MAAQ,SAAU/oB,GAIhC,OAHiB,SAAbtJ,KAAKrB,MAAmB2K,KAC3BtJ,KAAK0nC,KAAO,IAEN,GAIRmwC,EAAKz4E,UAAUmlD,WAAa,SAAU7nC,GAErCA,EAAMpI,SAASoI,GAEf1c,KAAK0c,IAAMA,GAAO,EAEd1c,KAAK0nC,KAAO1nC,KAAK0c,MACpB1c,KAAK0nC,KAAO1nC,KAAK0c,IACjB1c,KAAK44E,YAKPf,EAAKz4E,UAAU0qC,QAAU,SAAUpC,GAClC,IAAImxC,EAAU74E,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,IAErCkR,EAAOpzB,SAASozB,IAEL,GAAKA,GAAQmxC,EAAQn8D,KAC/Bm8D,EAAQnxC,KAAOA,EACfmxC,EAAQD,UAAUjvC,KAAK,WACtBpT,MACEqT,MAAM,WACRpT,QAGD30B,QAAQ+0B,KAAK,4DAA8DiiD,EAAQn8D,IAAM,IAAKgrB,GAC9FlR,QAKHqhD,EAAKz4E,UAAU0vC,aAAe,SAAUjd,GACvC,IAAIinD,EAAU94E,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,IACIvD,EADO6lD,EAAQxiE,MAAMka,WAAWsU,eAAeg0C,EAAQpyC,aAAe,GACzDpmC,QAAQuxB,GAEzB,GAAIoB,GAAS,EAAG,CACf,IAAIyU,EAAOvxB,KAAK42B,MAAM9Z,EAAQ,GAAK6lD,EAAQ50E,MAE3C40E,EAAQhvC,QAAQpC,GAAMiC,KAAK,WAC1BpT,MACEqT,MAAM,WACRpT,WAGD30B,QAAQ+0B,KAAK,mDACbJ,OAKHqhD,EAAKz4E,UAAUqlD,YAAc,SAAUvgD,IACtCA,EAAOoQ,SAASpQ,IAEL,IACVlE,KAAKkE,KAAOA,GAGTlE,KAAKq4E,gBAERr4E,KAAKs4E,8BAKPT,EAAKz4E,UAAU25E,gBAAkB,WAQhC,IAPA,IAEIC,EAAW7iE,KAAKC,OAAOpW,KAAKkxD,MAAQ,GAAK,GACzC+nB,EAAY9iE,KAAK42B,MAAM/sC,KAAKkxD,MAAQ,GAAK,GACzCp0C,EAAM9c,KAAK0c,IAAM1c,KAAK0nC,KAAOsxC,EAAW,EAAIh5E,KAAKkxD,MAAQlxD,KAAK0c,IAAM1c,KAAKkxD,MAAQ,EAAI/6C,KAAKuG,IAAI1c,KAAK0nC,KAAOsxC,EAAU,GACpHt8D,EAAM1c,KAAK0nC,MAAQuxC,EAAY9iE,KAAK2G,IAAI9c,KAAKkxD,MAAOlxD,KAAK0c,KAAOvG,KAAK2G,IAAI9c,KAAK0nC,KAAOuxC,EAAWj5E,KAAK0c,KAL9F1c,KAOCg4E,aAAannD,YAPd7wB,KAQLg4E,aAAajzE,YARR/E,KAQyBg4E,aAAannD,YAC/B,GATP7wB,KASD0nC,MATC1nC,KAULi4E,SAASz9D,UAAW,EAVfxa,KAWLk4E,QAAQ19D,UAAW,IAXdxa,KAaLi4E,SAASz9D,UAAW,EAbfxa,KAcLk4E,QAAQ19D,UAAW,GAddxa,KAiBF0nC,MAjBE1nC,KAiBW0c,KAjBX1c,KAkBLo4E,QAAQ59D,UAAW,EAlBdxa,KAmBLm4E,QAAQ39D,UAAW,IAnBdxa,KAqBLo4E,QAAQ59D,UAAW,EArBdxa,KAsBLm4E,QAAQ39D,UAAW,GAGzB,IAAK,IAAIhd,EAAIsf,EAAKtf,GAAKkf,EAAKlf,IACvBA,EAAI,GAAKA,GA1BHwC,KA0Ba0c,KA1Bb1c,KA2BJg4E,aAAapzE,YA3BT5E,KA2B0Bk5E,oBAAoB17E,IAIzDwC,KAAK+2C,gBAGN8gC,EAAKz4E,UAAU85E,oBAAsB,SAAUxxC,GAC9C,IAAItV,EAAOpyB,KACP+3E,EAASl1E,SAASC,cAAc,UAkBpC,OAhBAi1E,EAAOhnD,UAAUvc,IAAI,kBACjBkzB,GAAQtV,EAAKsV,MAChBqwC,EAAOhnD,UAAUvc,IAAI,UAGtBujE,EAAOn8C,aAAa,OAAQ,UAC5Bm8C,EAAOn8C,aAAa,OAAQ,UAC5Bm8C,EAAOn8C,aAAa,aAAc,aAAe8L,GACjDqwC,EAAOn8C,aAAa,QAAS,aAAe8L,GAC5CqwC,EAAOn8C,aAAa,YAAa8L,GACjCqwC,EAAOzH,YAAc5oC,EAErBqwC,EAAOv6C,iBAAiB,QAAS,SAAUp7B,GAC1CgwB,EAAK0X,QAAQpC,KAGPqwC,GAIRF,EAAKz4E,UAAUslD,aAAe,WAC7B,IAAIy0B,EAAUn5E,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GACjC2iD,EAAQzxC,KAAO,GAClByxC,EAAQzxC,OACRyxC,EAAQP,UAAUjvC,KAAK,WACtBpT,MACEqT,MAAM,WACRpT,QAGD30B,QAAQ+0B,KAAK,8DAA+D,GAC5EJ,QAMHqhD,EAAKz4E,UAAUglC,SAAW,WACzB,IAAIg1C,EAAUp5E,KAEd,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GACjC4iD,EAAQ1xC,KAAO0xC,EAAQ18D,KAC1B08D,EAAQ1xC,OACR0xC,EAAQR,UAAUjvC,KAAK,WACtBpT,MACEqT,MAAM,WACRpT,QAGI4iD,EAAQlvC,iBACZroC,QAAQ+0B,KAAK,sEAAwEwiD,EAAQ18D,IAAM,IAAK08D,EAAQ18D,IAAM,GAEvH8Z,QAMHqhD,EAAKz4E,UAAUulD,QAAU,WACxB,OAAO3kD,KAAK0nC,MAIbmwC,EAAKz4E,UAAUwlD,WAAa,WAC3B,OAAO5kD,KAAK0c,KAGbm7D,EAAKz4E,UAAUuoC,YAAc,SAAUzjC,GACtC,OAAOlE,KAAKkE,MAGb2zE,EAAKz4E,UAAUs4B,QAAU,WACxB,OAAO13B,KAAKrB,MAIbk5E,EAAKz4E,UAAU4rC,QAAU,SAAUz3B,GAClC,IAAI6b,EAAQrQ,EAAO0D,EAEnB,GAAiB,SAAbziB,KAAKrB,KAAiB,CACzBywB,EAAS,GAET3M,GADA1D,EAAQ/e,KAAKkE,MAAQlE,KAAK0nC,KAAO,IACnBpzB,SAAStU,KAAKkE,MAE5BlE,KAAK+4E,kBAEL,IAAK,IAAIv7E,EAAIuhB,EAAOvhB,EAAIilB,EAAKjlB,IACxB+V,EAAK/V,IACR4xB,EAAOvuB,KAAK0S,EAAK/V,IAInB,OAAO4xB,EAKP,OAFApvB,KAAK+4E,kBAEExlE,EAAKlQ,MAAM,IAIpBw0E,EAAKz4E,UAAUw5E,QAAU,WACxB,IAEItnD,EAFA+nD,EAAUr5E,KAId,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAErC,OAAQ6iD,EAAQ16E,MACf,IAAK,QACJ2yB,EAAO+nD,EAAQ/iE,MAAMka,WAAWG,WAEhC0oD,EAAQ/iE,MAAMka,WAAW0V,kBAAkB,QAC3CmzC,EAAQ/iE,MAAMka,WAAWa,iBAAiBC,GAE1C+nD,EAAQ/iE,MAAMzO,QAAQs2C,WAAWxgD,KAAK07E,EAAQ/iE,MAAO+iE,EAAQ10B,WAC7DpuB,IACA,MAED,IAAK,SACL,IAAK,mBACL,IAAK,qBACJ8iD,EAAQ/iE,MAAM5Y,QAAQymC,KAAK4c,qBAC3Bs4B,EAAQC,iBAAiB3vC,KAAK,WAC7BpT,MACEqT,MAAM,WACRpT,MAED,MAED,QACC30B,QAAQ+0B,KAAK,8CAA+CyiD,EAAQ16E,MACpE63B,QAKJqhD,EAAKz4E,UAAUk6E,eAAiB,WAC/B,IAGIC,EACAC,EAJAC,EAAUz5E,KAEVoyB,EAAOpyB,KAIX,OAAO,IAAIs2B,QAAQ,SAAUC,EAASC,GAmBrC,GAjBKpE,EAAK9b,MAAMob,UAAU,QAAQ,IACjC8E,IAID+iD,EAAY1jE,EAAUzW,UAAU24B,QAAQgvB,UAAU30B,EAAK9b,MAAM5Y,QAAQymC,KAAKyoB,aAAe,KACzF4sB,EAAapnD,EAAK9b,MAAM5Y,QAAQymC,KAAKyoB,aAG1B6sB,EAAQpwC,wBAAwB3B,MAAQtV,EAAKsV,KAGpD+xC,EAAQv1E,OACXs1E,EAAWC,EAAQpwC,wBAAwBnlC,MAAQu1E,EAAQv1E,MAIxDu1E,EAAQnjE,MAAMzO,QAAQqhC,aAAeuwC,EAAQnjE,MAAMob,UAAU,QAAS,CACzE,IAAIyX,EAAU/W,EAAK9b,MAAM5Y,QAAQ4gC,KAAK8K,UAEtCD,EAAQ5jC,QAAQ,SAAU+hC,UAClBA,EAAKxU,SAGb0mD,EAAWC,EAAQpwC,wBAAwBF,SAAWA,EAIvD,GAAIswC,EAAQnjE,MAAMzO,QAAQyhC,eAAiBmwC,EAAQnjE,MAAMob,UAAU,UAAW,CAC7E,IAAI6X,EAAUnX,EAAK9b,MAAM5Y,QAAQsR,OAAOw6B,YAAW,GAAM,GACzDgwC,EAAWC,EAAQpwC,wBAAwBE,SAAWA,EAGvDnX,EAAK9b,MAAM5Y,QAAQymC,KAAKsF,UAAU+vC,GAElCpnD,EAAK9b,MAAM5Y,QAAQymC,KAAKuF,YAAY+vC,EAAQvvC,iBAAiBP,KAAK,SAAUp2B,GAC3E6e,EAAKsnD,iBAAiBnmE,GACtBgjB,MACEqT,MAAM,SAAUxnC,GAClBo0B,MAGDpE,EAAK9b,MAAM5Y,QAAQymC,KAAKsF,UAAU8vC,MAIpC1B,EAAKz4E,UAAUs6E,iBAAmB,SAAUnmE,GAC3C,IACI+d,EAEAic,EAHAnb,EAAOpyB,KASX,QAJgE,IAArDuT,EAAKvT,KAAK24E,4BAA4BgB,YAChD93E,QAAQ+0B,KAAK,sDAAwD52B,KAAK24E,4BAA4BgB,UAAY,cAG/GpmE,EAAKvT,KAAK24E,4BAA4BplE,MAGzC,GAFAvT,KAAK0c,IAAMpI,SAASf,EAAKvT,KAAK24E,4BAA4BgB,aAAe,EAErE35E,KAAKkqC,gBACR,OAAQlqC,KAAKrB,MACZ,IAAK,mBACJqB,KAAKsW,MAAMka,WAAW0W,QAAQ3zB,EAAKvT,KAAK24E,4BAA4BplE,OAChEvT,KAAK0nC,KAAO1nC,KAAK0c,KACpBrQ,WAAW,WACV+lB,EAAKgS,WAAWuF,KAAK,cAAgBC,MAAM,eACzCxX,EAAK9b,MAAMzO,QAAQ2zC,0BAEvB,MAED,IAAK,qBACJjoC,EAAOvT,KAAKsW,MAAMka,WAAWqW,UAAUr1B,OAAO+B,EAAKvT,KAAK24E,4BAA4BplE,OAEpFvT,KAAKsW,MAAMka,WAAW9Y,QAAQnE,GAAM,GAEpCg6B,EAASvtC,KAAKsW,MAAMzO,QAAQ4zC,iCAAgF,EAA7Cz7C,KAAKsW,MAAMka,WAAWztB,QAAQo0B,aAEzF/E,EAAK9b,MAAMka,WAAWztB,QAAQm0B,cAAgB9E,EAAK9b,MAAMka,WAAWztB,QAAQo0B,aAAeoW,GAC9Fnb,EAAKgS,WAAWuF,KAAK,cAAgBC,MAAM,mBAK9CtY,EAAOtxB,KAAKsW,MAAMka,WAAWG,WAE7B3wB,KAAKsW,MAAMka,WAAW9Y,QAAQnE,EAAKvT,KAAK24E,4BAA4BplE,OAEpEvT,KAAKsW,MAAMka,WAAWa,iBAAiBC,GAEvCtxB,KAAKsW,MAAMqf,cAActE,iBAAiBC,GAE1CtxB,KAAKsW,MAAMzO,QAAQs2C,WAAWxgD,KAAKqC,KAAKsW,MAAOtW,KAAK2kD,gBAGrD9iD,QAAQ+0B,KAAK,sDAAwD52B,KAAK24E,4BAA4BplE,KAAO,eAK/GskE,EAAKz4E,UAAU23C,aAAe,WAC7B,IAAI6iC,EAAS55E,KAAKsW,MAAM6hB,cAAcp1B,QAElCoT,KAAK42B,KAAK6sC,EAAO90E,aAAe80E,EAAOpoD,YAAc,EACxDxxB,KAAKg4E,aAAa3zE,MAAMqoB,QAAU,QAElC1sB,KAAKg4E,aAAa3zE,MAAMqoB,QAAU,GAE9BvW,KAAK42B,KAAK6sC,EAAO90E,aAAe80E,EAAOpoD,YAAc,IACxDxxB,KAAKg4E,aAAa3zE,MAAMqoB,QAAU,UAMrCmrD,EAAKz4E,UAAUiqC,wBAA0B,CACxC3B,KAAQ,OACRxjC,KAAQ,OACRilC,QAAW,UAEXI,QAAW,WAMZsuC,EAAKz4E,UAAUu5E,4BAA8B,CAC5CkB,aAAgB,eAChBF,UAAa,YACbpmE,KAAQ,QAGTsC,EAAUzW,UAAUknD,eAAe,OAAQuxB,GAE3C,IAAIiC,EAAc,SAAqBxjE,GACtCtW,KAAKsW,MAAQA,EACbtW,KAAKrB,KAAO,GACZqB,KAAK6X,GAAK,GACV7X,KAAK+5E,aAAe,CAAC,QAAS,QAAS,YAIxCD,EAAY16E,UAAU6xB,WAAa,SAAUtyB,EAAMkZ,GAElD7X,KAAKrB,MAAgB,IAATA,EAAgBA,OAAsC,IAAxBiE,OAAOo3E,aAA+B,QAAU,SAG1Fh6E,KAAK6X,GAAK,cAAgBA,GAAM7X,KAAKsW,MAAMvT,QAAQi/D,aAAa,OAAS,KAI1E8X,EAAY16E,UAAUmgD,KAAO,SAAU72C,EAAM+4D,GAE5C,IAAIluD,EAAOvT,KAAKi6E,aAAavxE,GAM7B,OAJI+4D,IACHluD,EAAOA,EAAOvT,KAAKkjD,gBAAgBue,EAASluD,GAAQkuD,GAG9CluD,GAIRumE,EAAY16E,UAAU66E,aAAe,SAAUvxE,GAC9C,IAAI6K,EAAO,GACPsE,EAAK7X,KAAK6X,IAAe,YAATnP,EAAqB,GAAK,IAAMA,GAEpD,OAAQ1I,KAAKrB,MACZ,IAAK,QACJ4U,EAAOymE,aAAaE,QAAQriE,GAC5B,MAED,IAAK,SAGJ,IAAIsiE,EAASt3E,SAASs3E,OAClBC,EAAYD,EAAO75E,QAAQuX,EAAK,KAChC4K,OAAM,EAGN23D,GAAa,KAGhB33D,GAFA03D,EAASA,EAAOE,OAAOD,IAEV95E,QAAQ,OAEV,IACV65E,EAASA,EAAOE,OAAO,EAAG53D,IAG3BlP,EAAO4mE,EAAO13E,QAAQoV,EAAK,IAAK,KAEjC,MAED,QACChW,QAAQ+0B,KAAK,iDAAkD52B,KAAKrB,MAGtE,QAAO4U,GAAOvN,KAAKC,MAAMsN,IAI1BumE,EAAY16E,UAAU8jD,gBAAkB,SAAUo3B,EAASC,GAC1D,IAAInoD,EAAOpyB,KACPovB,EAAS,GAgCb,OA7BAmrD,EAAUA,GAAW,IAEbh1E,QAAQ,SAAUutB,EAAQ1iB,GAEjC,IAAIF,EAAOkiB,EAAKooD,YAAYF,EAASxnD,GAEjC5iB,IAEHA,EAAK1L,MAAQsuB,EAAOtuB,MACpB0L,EAAKykB,QAAU7B,EAAO6B,QAElBzkB,EAAK4G,UACR5G,EAAK4G,QAAUsb,EAAK8wB,gBAAgBhzC,EAAK4G,QAASgc,EAAOhc,UAG1DsY,EAAOvuB,KAAKqP,MAGdoqE,EAAQ/0E,QAAQ,SAAUutB,EAAQt1B,GACtB40B,EAAKooD,YAAYD,EAASznD,KAEhC1D,EAAOvvB,OAASrC,EACnB4xB,EAAOva,OAAOrX,EAAG,EAAGs1B,GAEpB1D,EAAOvuB,KAAKiyB,MAKR1D,GAIR0qD,EAAY16E,UAAUo7E,YAAc,SAAU1jE,EAASsd,GACtD,IAAI1rB,EAAO0rB,EAAQtd,QAAU,QAAUsd,EAAQpC,MAAQ,QAAU,SAEjE,OAAOlb,EAAQoZ,KAAK,SAAU6B,GAC7B,OAAQrpB,GACP,IAAK,QACJ,OAAOqpB,EAAIxpB,QAAU6rB,EAAQ7rB,OAASwpB,EAAIjb,QAAQjX,SAAWu0B,EAAQtd,QAAQjX,OAG9E,IAAK,QACJ,OAAOkyB,EAAIC,QAAUoC,EAAQpC,MAG9B,IAAK,SACJ,OAAOD,IAAQqC,MAOnB0lD,EAAY16E,UAAU02B,KAAO,SAAUptB,GACtC,IAAI6K,EAAO,GAEX,OAAQ7K,GACP,IAAK,UACJ6K,EAAOvT,KAAKgjD,aAAahjD,KAAKsW,MAAMqf,cAAcf,cAClD,MAED,IAAK,SACJrhB,EAAOvT,KAAKsW,MAAM5Y,QAAQsR,OAAOw6B,aACjC,MAED,IAAK,OACJj2B,EAAOvT,KAAKy6E,gBAAgBz6E,KAAKsW,MAAM5Y,QAAQ4gC,KAAK8K,WAItD,IAAIvxB,EAAK7X,KAAK6X,IAAe,YAATnP,EAAqB,GAAK,IAAMA,GAEpD1I,KAAK06E,SAAS7iE,EAAItE,IAInBumE,EAAY16E,UAAUq7E,gBAAkB,SAAUlnE,GAMjD,OALAA,EAAKhO,QAAQ,SAAU+hC,GACtBA,EAAKxU,OAASwU,EAAKtV,aACZsV,EAAKtV,QAGNze,GAIRumE,EAAY16E,UAAUs7E,SAAW,SAAU7iE,EAAItE,GAI9C,OAFAA,EAAOvN,KAAKE,UAAUqN,GAEdvT,KAAKrB,MACZ,IAAK,QACJq7E,aAAaW,QAAQ9iE,EAAItE,GACzB,MAED,IAAK,SACJ,IAAIqnE,EAAa,IAAI9vE,KACrB8vE,EAAWC,QAAQD,EAAWE,UAAY,KAG1Cj4E,SAASs3E,OAAStiE,EAAK,IAAMtE,EAAO,aAAeqnE,EAAWG,cAC9D,MAED,QACCl5E,QAAQ+0B,KAAK,iDAAkD52B,KAAKrB,QAKvEm7E,EAAY16E,UAAU4jD,aAAe,SAAUlsC,GAC9C,IAAIsb,EAAOpyB,KACPg7E,EAAc,GAkBlB,OAhBAlkE,EAAQvR,QAAQ,SAAUutB,GACzB,IAAIR,EAAM,GAENQ,EAAO0F,SACVlG,EAAI/pB,MAAQuqB,EAAOmC,gBAAgB1sB,MACnC+pB,EAAIxb,QAAUsb,EAAK4wB,aAAalwB,EAAO8B,gBAEvCtC,EAAI/pB,MAAQuqB,EAAOmC,gBAAgB1sB,MACnC+pB,EAAIN,MAAQc,EAAOgF,WACnBxF,EAAI9tB,MAAQsuB,EAAOwC,WACnBhD,EAAIqC,QAAU7B,EAAO6B,SAGtBqmD,EAAYn6E,KAAKyxB,KAGX0oD,GAGRnlE,EAAUzW,UAAUknD,eAAe,cAAewzB,GAElD,IAAImB,EAAQ,SAAe3kE,GAC1BtW,KAAKsW,MAAQA,EACbtW,KAAK+C,SAAU,EACf/C,KAAKk7E,aAAc,GAGpBD,EAAM77E,UAAU6xB,WAAa,WAC5BruB,OAAO46B,iBAAiB,cAAex9B,KAAKm7E,aAAan8E,KAAKgB,OAC9D4C,OAAO46B,iBAAiB,aAAcx9B,KAAKo7E,QAAQp8E,KAAKgB,QAGzDi7E,EAAM77E,UAAU+7E,aAAe,WACzBn7E,KAAKk7E,cACTl7E,KAAK+C,QAAUF,SAASC,cAAc,OACtC9C,KAAK+C,QAAQguB,UAAUvc,IAAI,yBAE3BxU,KAAK+C,QAAQ6B,YAAY5E,KAAKsW,MAAM5Y,QAAQ8jD,gBAAgBkvB,eAAe1wE,KAAKsW,MAAMzO,QAAQ+xC,YAAa55C,KAAKsW,MAAMzO,QAAQ6xC,eAAgB15C,KAAKsW,MAAMzO,QAAQ8xC,iBAAkB,UAEnL35C,KAAKsW,MAAMvT,QAAQsB,MAAMqoB,QAAU,OAEnC1sB,KAAKsW,MAAMvT,QAAQuwB,WAAW1C,aAAa5wB,KAAK+C,QAAS/C,KAAKsW,MAAMvT,WAItEk4E,EAAM77E,UAAUg8E,QAAU,WACzBv4E,SAAS8B,KAAKosB,UAAU3oB,OAAO,mCAE3BpI,KAAK+C,SAAW/C,KAAK+C,QAAQuwB,aAChCtzB,KAAK+C,QAAQuwB,WAAWvuB,YAAY/E,KAAK+C,SACzC/C,KAAKsW,MAAMvT,QAAQsB,MAAMqoB,QAAU,KAIrCuuD,EAAM77E,UAAUqiD,gBAAkB,SAAU9sB,EAAStwB,EAAOy8C,GAC3D,IAKI2tB,EACA4M,EANAC,EAAU14E,OAAO04E,QACjBC,EAAU34E,OAAO24E,QACjBhmB,EAAW1yD,SAASC,cAAc,OAClC04E,EAAW34E,SAASC,cAAc,OAClC24E,EAAUz7E,KAAKsW,MAAM5Y,QAAQ8jD,gBAAgBkvB,oBAAgC,IAAV5vB,EAAwBA,EAAS9gD,KAAKsW,MAAMzO,QAAQ+xC,iBAA6B,IAATv1C,EAAuBA,EAAQrE,KAAKsW,MAAMzO,QAAQ6xC,eAAgB/kB,EAAS,SAI1N30B,KAAKk7E,aAAc,EAEnBl7E,KAAK+C,QAAUF,SAASC,cAAc,OACtC9C,KAAK+C,QAAQguB,UAAUvc,IAAI,8BAEvBxU,KAAKsW,MAAMzO,QAAQ2xC,cACtB+b,EAASxkC,UAAUvc,IAAI,0BAIK,iBAF5Bi6D,EAAyD,mBAAlCzuE,KAAKsW,MAAMzO,QAAQ2xC,YAA4Bx5C,KAAKsW,MAAMzO,QAAQ2xC,YAAY77C,KAAKqC,KAAKsW,OAAStW,KAAKsW,MAAMzO,QAAQ2xC,aAG1I+b,EAASt1B,UAAYwuC,EAErBlZ,EAAS3wD,YAAY6pE,GAGtBzuE,KAAK+C,QAAQ6B,YAAY2wD,IAG1Bv1D,KAAK+C,QAAQ6B,YAAY62E,GAErBz7E,KAAKsW,MAAMzO,QAAQ4xC,cACtB+hC,EAASzqD,UAAUvc,IAAI,0BAIK,iBAF5B6mE,EAAyD,mBAAlCr7E,KAAKsW,MAAMzO,QAAQ4xC,YAA4Bz5C,KAAKsW,MAAMzO,QAAQ4xC,YAAY97C,KAAKqC,KAAKsW,OAAStW,KAAKsW,MAAMzO,QAAQ4xC,aAG1I+hC,EAASv7C,UAAYo7C,EAErBG,EAAS52E,YAAYy2E,GAGtBr7E,KAAK+C,QAAQ6B,YAAY42E,IAG1B34E,SAAS8B,KAAKosB,UAAUvc,IAAI,mCAC5B3R,SAAS8B,KAAKC,YAAY5E,KAAK+C,SAE3B/C,KAAKsW,MAAMzO,QAAQ0xC,gBACtBv5C,KAAKsW,MAAMzO,QAAQ0xC,eAAev5C,KAAK+C,QAAS04E,GAGjD74E,OAAO+8C,QAEP3/C,KAAKo7E,UAELx4E,OAAOk2B,SAASwiD,EAASC,GAEzBv7E,KAAKk7E,aAAc,GAGpBrlE,EAAUzW,UAAUknD,eAAe,QAAS20B,GAC5C,IAAIS,EAAe,SAAsBplE,GACxCtW,KAAKsW,MAAQA,EACbtW,KAAKuT,MAAO,EACZvT,KAAK2xD,SAAU,EACf3xD,KAAK27E,UAAY,GACjB37E,KAAK47E,eAAiB,GAGvBF,EAAat8E,UAAU6mC,UAAY,SAAU1yB,GAC5C,IAEIxK,EAFAqpB,EAAOpyB,KAIXA,KAAK47E,iBAEL7yE,EAAU/I,KAAK47E,eAEfxpD,EAAKytB,cAELztB,EAAK7e,KAAOA,EAGZ6e,EAAKupD,UAAU96E,KAAO0S,EAAK1S,KAE3B3C,OAAOC,eAAei0B,EAAK7e,KAAM,OAAQ,CACxCnV,YAAY,EACZy9E,cAAc,EACdp9E,MAAO,WACN,IAAI8D,EAAOzB,MAAMoP,KAAKtQ,WAQtB,OANKwyB,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,gBACrCr5E,EAAKgD,QAAQ,SAAU5E,GACtByxB,EAAK9b,MAAMka,WAAWyW,aAAatmC,GAAK,KAInCyxB,EAAKupD,UAAU96E,KAAKd,MAAMwT,EAAM3T,cAKzCwyB,EAAKupD,UAAUnoD,QAAUjgB,EAAKigB,QAE9Bt1B,OAAOC,eAAei0B,EAAK7e,KAAM,UAAW,CAC3CnV,YAAY,EACZy9E,cAAc,EACdp9E,MAAO,WACN,IAAI8D,EAAOzB,MAAMoP,KAAKtQ,WAQtB,OANKwyB,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,gBACrCr5E,EAAKgD,QAAQ,SAAU5E,GACtByxB,EAAK9b,MAAMka,WAAWyW,aAAatmC,GAAK,KAInCyxB,EAAKupD,UAAUnoD,QAAQzzB,MAAMwT,EAAM3T,cAK5CwyB,EAAKupD,UAAUxkB,MAAQ5jD,EAAK4jD,MAE5Bj5D,OAAOC,eAAei0B,EAAK7e,KAAM,QAAS,CACzCnV,YAAY,EACZy9E,cAAc,EACdp9E,MAAO,WACN,IAAIozB,EAYJ,OAVKO,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,gBACjCxpD,EAAK7e,KAAK1T,SACbgyB,EAAMO,EAAK9b,MAAMka,WAAWgU,qBAAqBpS,EAAK7e,KAAK,MAG1Dse,EAAIuhB,eAKAhhB,EAAKupD,UAAUxkB,MAAMx5D,KAAK4V,MAKnC6e,EAAKupD,UAAUG,IAAMvoE,EAAKuoE,IAE1B59E,OAAOC,eAAei0B,EAAK7e,KAAM,MAAO,CACvCnV,YAAY,EACZy9E,cAAc,EACdp9E,MAAO,WACN,IAAIozB,EAUJ,OATKO,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,gBACjCxpD,EAAK7e,KAAK1T,SACbgyB,EAAMO,EAAK9b,MAAMka,WAAWgU,qBAAqBpS,EAAK7e,KAAK6e,EAAK7e,KAAK1T,OAAS,MAG7EgyB,EAAIuhB,eAIAhhB,EAAKupD,UAAUG,IAAIn+E,KAAK4V,MAKjC6e,EAAKupD,UAAU9mE,OAAStB,EAAKsB,OAE7B3W,OAAOC,eAAei0B,EAAK7e,KAAM,SAAU,CAC1CnV,YAAY,EACZy9E,cAAc,EACdp9E,MAAO,WACN,IAIIs9E,EAJAx5E,EAAOzB,MAAMoP,KAAKtQ,WAClBmf,EAAQxc,EAAK,GAAK,EAAIgR,EAAK1T,OAAS0C,EAAK,GAAKA,EAAK,GACnDkgB,EAAMlgB,EAAK,GACX2/C,IAAU3/C,EAAK,IAAKA,EAAKc,MAAM,GAGnC,IAAK+uB,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,eAAgB,CAoBrD,GAjBI15B,KACH65B,IAAWxoE,EAAKwL,IAASqT,EAAK9b,MAAMka,WAAWgU,qBAAqBjxB,EAAKwL,KAGxEmjC,EAAQ38C,QAAQ,SAAUoqD,GACzBv9B,EAAK9b,MAAMka,WAAWyW,aAAa0oB,GAAS,EAAMosB,GAAU,MAG7D75B,EAAUA,EAAQ7+C,QAAQgkC,WAElB9hC,QAAQ,SAAUoqD,GACzBv9B,EAAK9b,MAAMka,WAAWyW,aAAa0oB,GAAS,GAAM,GAAO,MAMhD,IAARltC,EAAW,CACd,IAAIu5D,EAAUzoE,EAAKlQ,MAAM0b,OAA0B,IAAZxc,EAAK,GAAqBA,EAAK,GAAKwc,EAAQ0D,GAEnFu5D,EAAQz2E,QAAQ,SAAUoqD,EAASnyD,GAClC,IAAIq0B,EAAMO,EAAK9b,MAAMka,WAAWgU,qBAAqBmrB,GAEjD99B,GACHA,EAAIuhB,aAAa51C,IAAMw+E,EAAQn8E,OAAS,MAKvCqiD,GAAmB,IAARz/B,IACd2P,EAAK9b,MAAMka,WAAWiV,qBAIxB,OAAOrT,EAAKupD,UAAU9mE,OAAO9U,MAAMwT,EAAM3T,eAK5C87E,EAAat8E,UAAUygD,YAAc,WACpC,IAAkB,IAAd7/C,KAAKuT,KACR,IAAK,IAAIxU,KAAOiB,KAAK27E,UACpBz9E,OAAOC,eAAe6B,KAAKuT,KAAMxU,EAAK,CACrCX,YAAY,EACZy9E,cAAc,EACdI,UAAU,EACVx9E,MAAOuB,KAAK27E,UAAU58E,OAM1B28E,EAAat8E,UAAU8yC,SAAW,SAAUrgB,GAC3C,IACIte,EAAOse,EAAIgV,UAIf,IAAK,IAAI9nC,KAFTiB,KAAK2xD,SAAU,EAECp+C,EACfvT,KAAKk8E,SAASrqD,EAAKte,EAAMxU,GAG1BiB,KAAK2xD,SAAU,GAGhB+pB,EAAat8E,UAAU88E,SAAW,SAAUrqD,EAAKte,EAAMxU,GACtD,IAAIqzB,EAAOpyB,KACPkF,EAAQhH,OAAOi+E,yBAAyB5oE,EAAMxU,GAC9CN,EAAQ8U,EAAKxU,GACbgK,EAAU/I,KAAK47E,eAEnB19E,OAAOC,eAAeoV,EAAMxU,EAAK,CAChCq9E,IAAK,SAAazmC,GAEjB,GADAl3C,EAAQk3C,GACHvjB,EAAKu/B,SAAW5oD,IAAYqpB,EAAKwpD,eAAgB,CACrD,IAAI1jD,EAAS,GACbA,EAAOn5B,GAAO42C,EACd9jB,EAAIod,WAAW/W,GAGZhzB,EAAMk3E,KACTl3E,EAAMk3E,IAAIzmC,IAGZt3C,IAAK,WAMJ,OAJI6G,EAAM7G,KACT6G,EAAM7G,MAGAI,MAKVi9E,EAAat8E,UAAUi9E,WAAa,SAAUxqD,GAC7C,IAAIte,EAAOse,EAAIgV,UAEf,IAAK,IAAI9nC,KAAOwU,EACfrV,OAAOC,eAAeoV,EAAMxU,EAAK,CAChCN,MAAO8U,EAAKxU,MAKf28E,EAAat8E,UAAUizC,MAAQ,WAC9BryC,KAAK2xD,SAAU,GAGhB+pB,EAAat8E,UAAUkzC,QAAU,WAChCtyC,KAAK2xD,SAAU,GAGhB97C,EAAUzW,UAAUknD,eAAe,eAAgBo1B,GAEnD,IAAIY,EAAgB,SAAuBhmE,GAC1CtW,KAAKsW,MAAQA,EACbtW,KAAKu8E,aAAc,EACnBv8E,KAAKg0E,QAAS,EACdh0E,KAAKw8E,YAAa,EAClBx8E,KAAK8iE,OAAS,KACd9iE,KAAKy8E,WAAa,MAGnBH,EAAcl9E,UAAU69B,iBAAmB,SAAUv0B,EAAMoqB,EAAQ/vB,GAClE,IAAIqvB,EAAOpyB,KACP08E,GAAiB,EACjB/9E,EAAOqB,KAAKsW,MAAMzO,QAAQk1B,iBAQ9B,GALa,WAATr0B,IACHg0E,EAAgD,YAA/B5pD,EAAOH,WAAW6M,WAA2B1M,EAAOH,WAAW+pD,eAChF5pD,EAAOp1B,QAAQ4hE,OAAS,CAAEod,eAAgBA,KAG9B,IAAT/9E,GAAiBA,GAAQ+J,EAAM,CAElC,IAAIo6D,EAASjgE,SAASC,cAAc,OACpCggE,EAAOruD,UAAY,8BAEnB,IAAIgoE,EAAa55E,SAASC,cAAc,OACxC25E,EAAWhoE,UAAY,mCAEvBquD,EAAOtlC,iBAAiB,QAAS,SAAUp7B,GAC1CA,EAAE+K,oBAGH,IAAIwvE,EAAa,SAAoBv6E,GACpC,IAAIw6E,EAAgB9pD,EAAO4N,gBAEvBk8C,GAAiBxqD,EAAKyqD,mBAAmBD,KAC5CxqD,EAAKmqD,YAAczpD,EACnBV,EAAK0qD,WAAW16E,EAAGw6E,EAAe9Z,KAIpCA,EAAOtlC,iBAAiB,YAAam/C,GACrC7Z,EAAOtlC,iBAAiB,aAAcm/C,EAAY,CAAE3+C,SAAS,IAG7D8kC,EAAOtlC,iBAAiB,WAAY,SAAUp7B,GAC7C,IAAI2vB,EAAMe,EAAO4N,gBAEb3O,GAAOK,EAAKyqD,mBAAmB9qD,IAClCA,EAAI4F,mBAAkB,KAIxB8kD,EAAWj/C,iBAAiB,QAAS,SAAUp7B,GAC9CA,EAAE+K,oBAGH,IAAI4vE,EAAiB,SAAwB36E,GAC5C,IAAIw6E,EAAeI,EAAUvjD,GAE7BmjD,EAAgB9pD,EAAO2N,oBAItBhH,GADAujD,EAAW5qD,EAAK9b,MAAMqf,cAAczC,gBAAgB0pD,IAC5B,GAAIxqD,EAAK9b,MAAMqf,cAAclB,iBAAiBuoD,EAAW,KAE/D5qD,EAAKyqD,mBAAmBpjD,KACzCrH,EAAKmqD,YAAczpD,EACnBV,EAAK0qD,WAAW16E,EAAGq3B,EAAYgjD,KAKlCA,EAAWj/C,iBAAiB,YAAau/C,GACzCN,EAAWj/C,iBAAiB,aAAcu/C,EAAgB,CAAE/+C,SAAS,IAGrEy+C,EAAWj/C,iBAAiB,WAAY,SAAUp7B,GACjD,IAAIw6E,EAAeI,EAAUvjD,GAE7BmjD,EAAgB9pD,EAAO2N,oBAItBhH,GADAujD,EAAW5qD,EAAK9b,MAAMqf,cAAczC,gBAAgB0pD,IAC5B,GAAIxqD,EAAK9b,MAAMqf,cAAclB,iBAAiBuoD,EAAW,KAE/D5qD,EAAKyqD,mBAAmBpjD,IACzCA,EAAW9B,mBAAkB,KAKhC50B,EAAQ6B,YAAYk+D,GACpB//D,EAAQ6B,YAAY63E,KAItBH,EAAcl9E,UAAUy9E,mBAAqB,SAAU/pD,GACtD,YAA6C,IAA/BA,EAAOH,WAAWsqD,UAA2BnqD,EAAOH,WAAWsqD,UAAYj9E,KAAKsW,MAAMzO,QAAQk1B,kBAG7Gu/C,EAAcl9E,UAAU09E,WAAa,SAAU16E,EAAG0wB,EAAQgwC,GACzD,IAAI1wC,EAAOpyB,KAIX,SAASk9E,EAAU96E,GAGlB0wB,EAAOsO,SAAShP,EAAKoqD,kBAAoC,IAAdp6E,EAAEghE,QAA0BhhE,EAAEoyE,QAAQ,GAAGpR,QAAUhhE,EAAEghE,SAAWhxC,EAAK4hD,UAE3G5hD,EAAK9b,MAAM0gC,aAAelkB,EAAOp1B,QAAQ4hE,QAAUxsC,EAAOp1B,QAAQ4hE,OAAOod,gBAC7E5pD,EAAOwO,mBAIT,SAAS67C,EAAQ/6E,GAGZgwB,EAAKmqD,YAAY7+E,QAAQ8gC,OAC5BpM,EAAKmqD,YAAY7+E,QAAQ8gC,KAAKmzB,SAAU,GAGrCv/B,EAAK9b,MAAM0gC,aAAelkB,EAAOp1B,QAAQ4hE,QAAUxsC,EAAOp1B,QAAQ4hE,OAAOod,gBAC5E5pD,EAAOwO,mBAGRz+B,SAAS8B,KAAK+6D,oBAAoB,UAAWyd,GAC7Ct6E,SAAS8B,KAAK+6D,oBAAoB,YAAawd,GAE/Cpa,EAAOpD,oBAAoB,YAAawd,GACxCpa,EAAOpD,oBAAoB,WAAYyd,GAEvC/qD,EAAK9b,MAAMvT,QAAQguB,UAAU3oB,OAAO,0BAEhCgqB,EAAK9b,MAAMzO,QAAQ+tB,kBAAoBxD,EAAK9b,MAAMob,UAAU,eAAe,IAC9EU,EAAK9b,MAAM5Y,QAAQm4B,YAAYC,KAAK,WAGrC1D,EAAK9b,MAAMzO,QAAQi1C,cAAcn/C,KAAKy0B,EAAK9b,MAAOwc,EAAOuC,gBAnC1DjD,EAAK9b,MAAMvT,QAAQguB,UAAUvc,IAAI,0BAsCjCpS,EAAE+K,kBAGEilB,EAAKmqD,YAAY7+E,QAAQ8gC,OAC5BpM,EAAKmqD,YAAY7+E,QAAQ8gC,KAAKmzB,SAAU,GAGzCv/B,EAAK4hD,YAA8B,IAAd5xE,EAAEghE,QAA0BhhE,EAAEoyE,QAAQ,GAAGpR,QAAUhhE,EAAEghE,QAC1EhxC,EAAKoqD,WAAa1pD,EAAOwC,WAEzBzyB,SAAS8B,KAAK64B,iBAAiB,YAAa0/C,GAC5Cr6E,SAAS8B,KAAK64B,iBAAiB,UAAW2/C,GAC1Cra,EAAOtlC,iBAAiB,YAAa0/C,EAAW,CAAEl/C,SAAS,IAC3D8kC,EAAOtlC,iBAAiB,WAAY2/C,IAGrCtnE,EAAUzW,UAAUknD,eAAe,gBAAiBg2B,GACpD,IAAIc,EAAa,SAAoB9mE,GACpCtW,KAAKsW,MAAQA,EACbtW,KAAKu8E,aAAc,EACnBv8E,KAAK21E,QAAS,EACd31E,KAAKq9E,aAAc,EACnBr9E,KAAK8iE,OAAS,KACd9iE,KAAKy8E,WAAa,MAGnBW,EAAWh+E,UAAUwxC,cAAgB,SAAU/e,GAC9C,IAAIO,EAAOpyB,KACP+kC,EAAQlT,EAAInrB,aAEZo8D,EAASjgE,SAASC,cAAc,OACpCggE,EAAOruD,UAAY,8BAEnB,IAAIgoE,EAAa55E,SAASC,cAAc,OACxC25E,EAAWhoE,UAAY,mCAEvBquD,EAAOtlC,iBAAiB,QAAS,SAAUp7B,GAC1CA,EAAE+K,oBAGH,IAAIwvE,EAAa,SAAoBv6E,GACpCgwB,EAAK2pD,SAAWlqD,EAChBO,EAAK0qD,WAAW16E,EAAGyvB,EAAKixC,IAGzBA,EAAOtlC,iBAAiB,YAAam/C,EAAY,CAAE3+C,SAAS,IAC5D8kC,EAAOtlC,iBAAiB,aAAcm/C,GAEtCF,EAAWj/C,iBAAiB,QAAS,SAAUp7B,GAC9CA,EAAE+K,oBAGH,IAAI4vE,EAAiB,SAAwB36E,GAC5C,IAAI2mC,EAAU3W,EAAK9b,MAAMka,WAAWsY,eAAejX,GAE/CkX,IACH3W,EAAK2pD,SAAWhzC,EAChB3W,EAAK0qD,WAAW16E,EAAG2mC,EAAS0zC,KAI9BA,EAAWj/C,iBAAiB,YAAau/C,GACzCN,EAAWj/C,iBAAiB,aAAcu/C,EAAgB,CAAE/+C,SAAS,IAErE+G,EAAMngC,YAAYk+D,GAClB/9B,EAAMngC,YAAY63E,IAGnBW,EAAWh+E,UAAU09E,WAAa,SAAU16E,EAAGyvB,EAAKixC,GACnD,IAAI1wC,EAAOpyB,KAIX,SAASk9E,EAAU96E,GAClByvB,EAAIkgB,UAAU3f,EAAKirD,mBAAqC,IAAdj7E,EAAEk7E,QAA0Bl7E,EAAEoyE,QAAQ,GAAG8I,QAAUl7E,EAAEk7E,SAAWlrD,EAAKujD,SAGhH,SAASwH,EAAQ/6E,GAOhBS,SAAS8B,KAAK+6D,oBAAoB,UAAWwd,GAC7Cr6E,SAAS8B,KAAK+6D,oBAAoB,YAAawd,GAE/Cpa,EAAOpD,oBAAoB,YAAawd,GACxCpa,EAAOpD,oBAAoB,WAAYyd,GAEvC/qD,EAAK9b,MAAMvT,QAAQguB,UAAU3oB,OAAO,0BAEpCgqB,EAAK9b,MAAMzO,QAAQg1C,WAAWl/C,KAAKqC,KAAKsW,MAAOub,EAAIwD,gBArBpDjD,EAAK9b,MAAMvT,QAAQguB,UAAUvc,IAAI,0BAwBjCpS,EAAE+K,kBAOFilB,EAAKujD,YAA8B,IAAdvzE,EAAEk7E,QAA0Bl7E,EAAEoyE,QAAQ,GAAG8I,QAAUl7E,EAAEk7E,QAC1ElrD,EAAKirD,YAAcxrD,EAAIkC,YAEvBlxB,SAAS8B,KAAK64B,iBAAiB,YAAa0/C,GAC5Cr6E,SAAS8B,KAAK64B,iBAAiB,UAAW2/C,GAE1Cra,EAAOtlC,iBAAiB,YAAa0/C,EAAW,CAAEl/C,SAAS,IAC3D8kC,EAAOtlC,iBAAiB,WAAY2/C,IAGrCtnE,EAAUzW,UAAUknD,eAAe,aAAc82B,GACjD,IAAIG,EAAc,SAAqBjnE,GACtCtW,KAAKsW,MAAQA,EACbtW,KAAKoqD,SAAU,EACfpqD,KAAKw9E,UAAW,GAGjBD,EAAYn+E,UAAU6xB,WAAa,SAAUY,GAC5C,IAAIvb,EAAQtW,KAAKsW,MAGa,oBAAnBmnE,gBAAuE,YAArCnnE,EAAMka,WAAWqb,iBAC7D7rC,KAAKw9E,SAAW,IAAIC,eAAe,SAAUC,GAC5CpnE,EAAMoc,WAGP1yB,KAAKw9E,SAASG,QAAQrnE,EAAMvT,WAE5B/C,KAAKoqD,QAAU,WACd9zC,EAAMoc,UAGP9vB,OAAO46B,iBAAiB,SAAUx9B,KAAKoqD,WAIzCmzB,EAAYn+E,UAAU0gD,cAAgB,SAAUjuB,GAC3C7xB,KAAKoqD,SACRxnD,OAAO88D,oBAAoB,SAAU1/D,KAAKoqD,SAGvCpqD,KAAKw9E,UACRx9E,KAAKw9E,SAASI,UAAU59E,KAAKsW,MAAMvT,UAIrC8S,EAAUzW,UAAUknD,eAAe,cAAei3B,GAClD,IAAIM,EAAmB,SAA0BvnE,GAChDtW,KAAKsW,MAAQA,EACbtW,KAAK8W,QAAU,GACf9W,KAAK89E,cAAgB,GACrB99E,KAAKrB,KAAO,GACZqB,KAAKizB,MAAQ,EACbjzB,KAAK+9E,kBAAoB,GACzB/9E,KAAKg+E,mBAAoB,GAI1BH,EAAiBz+E,UAAU6xB,WAAa,WACvC,IAAImB,EAAOpyB,KACP8W,EAAU,GAEd9W,KAAKrB,KAAOqB,KAAKsW,MAAMzO,QAAQ4qB,iBAC/BzyB,KAAK+9E,kBAAoB/9E,KAAKsW,MAAMzO,QAAQ2yC,mCAAqCx6C,KAAKi+E,oBACtFj+E,KAAKg+E,kBAAoBh+E,KAAKsW,MAAMzO,QAAQyyC,kCAC5Ct6C,KAAK89E,cAAgB,GAGrB99E,KAAKsW,MAAMqf,cAAclF,eAAelrB,QAAQ,SAAUutB,EAAQt1B,GAC7Ds1B,EAAOp1B,QAAQwgF,YACdprD,EAAOp1B,QAAQwgF,WAAWt3D,OAASkM,EAAOp1B,QAAQwgF,WAAWvpD,UAChE7B,EAAOp1B,QAAQwgF,WAAWjrD,MAAQz1B,EAClCsZ,EAAQjW,KAAKiyB,GAERA,EAAO6B,SAAyB,aAAdvC,EAAKzzB,MAC3ByzB,EAAK0rD,cAAcj9E,KAAKiyB,MAQ5Bhc,GADAA,EAAUA,EAAQuwB,WACA/I,KAAK,SAAUp8B,EAAGC,GAEnC,OADWA,EAAEzE,QAAQwgF,WAAWt3D,MAAQ1kB,EAAExE,QAAQwgF,WAAWt3D,OAC9CzkB,EAAEzE,QAAQwgF,WAAWjrD,MAAQ/wB,EAAExE,QAAQwgF,WAAWjrD,QAGlEjzB,KAAK8W,QAAUA,EAEG,aAAd9W,KAAKrB,MACRqB,KAAKm+E,4BAKPN,EAAiBz+E,UAAU69B,iBAAmB,SAAUnK,GACvD,IAAIR,EAAMQ,EAAOmC,gBAEjBnC,EAAOp1B,QAAQwgF,WAAa,CAAEt3D,WAAiC,IAAnB0L,EAAI4rD,WAA6B,EAAI5rD,EAAI4rD,WAAYvpD,SAAyB,IAAhBrC,EAAIqC,UAG/GkpD,EAAiBz+E,UAAUqyC,UAAY,SAAU5f,GAChD,IAAIkT,EAAQlT,EAAInrB,aACZoqB,EAAKjuB,SAASC,cAAc,OAEhCguB,EAAGC,UAAUvc,IAAI,iCAEZuwB,EAAMhU,UAAUytC,SAAS,qBAC7B3sC,EAAIn0B,QAAQ+0B,iBAAmB,CAC9B1vB,QAAS+tB,GAGL9wB,KAAKg+E,oBACTltD,EAAGzsB,MAAMqoB,QAAU,QAGpBqY,EAAMngC,YAAYksB,GAElB9wB,KAAKo+E,4BAA4BvsD,KAKnCgsD,EAAiBz+E,UAAU4hC,uBAAyB,SAAUlO,EAAQ6B,GAEjE7B,EAAOp1B,QAAQwgF,aAClBprD,EAAOp1B,QAAQwgF,WAAWvpD,QAAUA,EACpC30B,KAAKixB,eAIP4sD,EAAiBz+E,UAAUgkD,WAAa,SAAUtwB,GACjDA,EAAO/mB,MAAK,GAAO,GAED,aAAd/L,KAAKrB,OACRqB,KAAK89E,cAActqD,QAAQV,GAC3B9yB,KAAKm+E,6BAIPN,EAAiBz+E,UAAU+jD,WAAa,SAAUrwB,GACjD,IAAIG,EAEJH,EAAOyF,MAAK,GAAO,GAEnBzF,EAAOsO,SAAStO,EAAOwC,YAEL,aAAdt1B,KAAKrB,QACRs0B,EAAQjzB,KAAK89E,cAAcx9E,QAAQwyB,KAEtB,GACZ9yB,KAAK89E,cAAcjpE,OAAOoe,EAAO,GAGlCjzB,KAAKm+E,6BAKPN,EAAiBz+E,UAAU84B,OAAS,WAInC,IAHA,IACImmD,GAAU,EAEPA,GAAS,CAEf,IAAI75E,EAA+C,cALzCxE,KAKOsW,MAAM5Y,QAAQuZ,OAAOygB,UAL5B13B,KAK6DsW,MAAMqf,cAAcoB,mBALjF/2B,KAK2GsW,MAAMqf,cAAcL,WAErIyW,EAPM/rC,KAOMsW,MAAMqf,cAAc5yB,QAAQ+B,YAAcN,EAE1D,GAAIunC,EAAO,EAAG,CAEb,IAAIjZ,EAXK9yB,KAWS8W,QAXT9W,KAWsBizB,OAE3BH,GAbK9yB,KAcHojD,WAAWtwB,GAdR9yB,KAeHizB,SAELorD,GAAU,MAEL,CAGN,IAAIjmD,EAtBKp4B,KAsBU8W,QAtBV9W,KAsBuBizB,MAAQ,GAEpCmF,GACC2T,EAAO,GACNA,GAAQ3T,EAAQ9C,YA1Bbt1B,KA2BDmjD,WAAW/qB,GA3BVp4B,KA4BDizB,SAQPorD,GAAU,EApCFr+E,KAwCAsW,MAAMka,WAAWiS,iBAxCjBziC,KAyCJsW,MAAMka,WAAW2b,sBAKzB0xC,EAAiBz+E,UAAU++E,yBAA2B,WACrD,IAAI/rD,EAAOpyB,KACAA,KAAKsW,MAAMka,WAAWsU,iBAE5Bv/B,QAAQ,SAAUssB,GACtBO,EAAKgsD,4BAA4BvsD,MAInCgsD,EAAiBz+E,UAAUg/E,4BAA8B,SAAUvsD,GAClE,IAAIf,EAAI2O,EAER,GAAI5N,EAAIn0B,QAAQ+0B,iBAAkB,CAGjC,IAFA3B,EAAKe,EAAIn0B,QAAQ+0B,iBAAiB1vB,QAE3B+tB,EAAGD,YACTC,EAAG/rB,YAAY+rB,EAAGD,aAClB4O,EAAWz/B,KAAK+9E,kBAAkB/9E,KAAKs+E,yBAAyBzsD,MAEhEf,EAAGlsB,YAAY66B,KAKlBo+C,EAAiBz+E,UAAUk/E,yBAA2B,SAAUzsD,GAC/D,IAGI0sD,EAHAnsD,EAAOpyB,KACPuT,EAAOse,EAAIgV,UACXzX,EAAS,GA0Cb,OAvCApvB,KAAK89E,cAAcv4E,QAAQ,SAAUutB,GACpC,IAAIr0B,EAAQq0B,EAAOkH,cAAczmB,GAE7Buf,EAAOH,WAAWpqB,OAASuqB,EAAOd,QACjCc,EAAOp1B,QAAQuE,QAAUmwB,EAAK9b,MAAMzO,QAAQ0yC,uCAE/CgkC,EAAoB,CACnB9/E,OAAO,EACP8U,KAAM,GACNusB,SAAU,WACT,OAAOrhC,GAERooC,QAAS,WACR,OAAOtzB,GAER7M,WAAY,WACX,OAAO7D,SAASC,cAAc,QAE/B6wC,OAAQ,WACP,OAAO9hB,EAAIwD,gBAEZue,UAAW,WACV,OAAO9gB,EAAOuC,iBAIhBjG,EAAOvuB,KAAK,CACX0H,MAAOuqB,EAAOH,WAAWpqB,MACzB9J,MAAOq0B,EAAOp1B,QAAQuE,OAAOu9B,UAAU7hC,KAAKy0B,EAAK9b,MAAM5Y,QAAQuE,OAAQs8E,EAAmBzrD,EAAOp1B,QAAQuE,OAAOy9B,WAGjHtQ,EAAOvuB,KAAK,CACX0H,MAAOuqB,EAAOH,WAAWpqB,MACzB9J,MAAOA,OAMJ2wB,GAGRyuD,EAAiBz+E,UAAU6+E,oBAAsB,SAAU1qE,GAC1D,IAAIgJ,EAAO1Z,SAASC,cAAc,SAC9B07E,EAAe,GAenB,OAbAjrE,EAAKhO,QAAQ,SAAU+hC,GACtB,IAAIm3C,EAAM57E,SAASC,cAAc,OAE7BwkC,EAAK7oC,iBAAiBuhC,OACzBy+C,EAAI75E,YAAY0iC,EAAK7oC,OACrB6oC,EAAK7oC,MAAQggF,EAAIx+C,WAGlBu+C,GAAgB,mBAAqBl3C,EAAK/+B,MAAQ,qBAAuB++B,EAAK7oC,MAAQ,eAGvF8d,EAAK0jB,UAAYu+C,EAEVtgF,OAAOmC,KAAKkT,GAAM1T,OAAS0c,EAAO,IAG1C1G,EAAUzW,UAAUknD,eAAe,mBAAoBu3B,GAEvD,IAAIa,EAAY,SAAmBpoE,GAClCtW,KAAKsW,MAAQA,EACbtW,KAAK2+E,WAAY,EACjB3+E,KAAK4+E,gBAAiB,EACtB5+E,KAAK6+E,WAAa,GAClB7+E,KAAK8+E,aAAe,IAGrBJ,EAAUt/E,UAAU2mC,mBAAqB,SAAUjF,GAClD9gC,KAAK2+E,WAAY,EACjB3+E,KAAK4+E,gBAAiB,EACtB5+E,KAAK6+E,WAAa,GAClB7+E,KAAK8+E,aAAe,GAEfh+C,GACJ9gC,KAAK++E,wBAIPL,EAAUt/E,UAAUwxC,cAAgB,SAAU/e,GAC7C,IAAIO,EAAOpyB,KACP+C,EAAU8uB,EAAInrB,aAGds4E,EAAY,SAASA,IAExB3yE,WAAW,WACV+lB,EAAKusD,WAAY,GACf,IAEH97E,SAAS8B,KAAK+6D,oBAAoB,UAAWsf,IAG9CntD,EAAIn0B,QAAQwxC,OAAS,CAAE5wB,UAAU,GAG7B8T,EAAK9b,MAAMzO,QAAQkyC,gBAAgBp8C,KAAKqC,KAAKsW,MAAOub,EAAIwD,iBAC3DtyB,EAAQguB,UAAUvc,IAAI,wBACtBzR,EAAQguB,UAAU3oB,OAAO,0BAErBgqB,EAAK9b,MAAMzO,QAAQyiC,YAA+C,aAAjClY,EAAK9b,MAAMzO,QAAQyiC,aACR,UAA3ClY,EAAK9b,MAAMzO,QAAQgyC,oBACtB92C,EAAQy6B,iBAAiB,QAAS,SAAUp7B,GAI3C,GAFAgwB,EAAK9b,MAAMkoC,kBAEPp8C,EAAEqwE,SAAU,CACfrgD,EAAKwsD,eAAiBxsD,EAAKwsD,gBAAkB/sD,EAE7C,IAAIotD,EAAoB7sD,EAAK9b,MAAMka,WAAWkY,mBAAmBtW,EAAKwsD,gBAClEM,EAAS9sD,EAAK9b,MAAMka,WAAWkY,mBAAmB7W,GAElDstD,EAAaF,GAAqBC,EAASD,EAAoBC,EAC/DE,EAAWH,GAAqBC,EAASD,EAAoBC,EAG7DG,EADOjtD,EAAK9b,MAAMka,WAAWsU,iBAAiBzhC,MAAM,GACjCwR,OAAOsqE,EAAYC,EAAWD,EAAa,GAE9D/8E,EAAEowE,SAAWpwE,EAAEk9E,SAClBD,EAAY95E,QAAQ,SAAUg6E,GACzBA,IAAentD,EAAKwsD,kBAEe,IAAlCxsD,EAAK9b,MAAMzO,QAAQyiC,YAAwBlY,EAAKod,cAAc3d,GAKjEO,EAAKkd,UAAUiwC,GAJXntD,EAAK0sD,aAAaj/E,OAASuyB,EAAK9b,MAAMzO,QAAQyiC,YACjDlY,EAAKkd,UAAUiwC,MAOnBntD,EAAKwsD,eAAiB/sD,IAEtBO,EAAKoY,gBAEiC,IAAlCpY,EAAK9b,MAAMzO,QAAQyiC,YAClB+0C,EAAYx/E,OAASuyB,EAAK9b,MAAMzO,QAAQyiC,aAC3C+0C,EAAcA,EAAYh8E,MAAM,EAAG+uB,EAAK9b,MAAMzO,QAAQyiC,aAIxDlY,EAAK+c,WAAWkwC,SAEPj9E,EAAEowE,SAAWpwE,EAAEk9E,SACzBltD,EAAKkd,UAAUzd,GACfO,EAAKwsD,eAAiB/sD,IAEtBO,EAAKoY,eACLpY,EAAK+c,WAAWtd,GAChBO,EAAKwsD,eAAiB/sD,GAGvBO,EAAK9b,MAAMkoC,qBAGZz7C,EAAQy6B,iBAAiB,QAAS,SAAUp7B,GAC3CgwB,EAAK9b,MAAMkoC,kBAENpsB,EAAKusD,WACTvsD,EAAKkd,UAAUzd,KAIjB9uB,EAAQy6B,iBAAiB,YAAa,SAAUp7B,GAC/C,GAAIA,EAAEqwE,SAYL,OAXArgD,EAAK9b,MAAMkoC,kBAEXpsB,EAAKusD,WAAY,EAEjBvsD,EAAKysD,WAAa,GAElBh8E,SAAS8B,KAAK64B,iBAAiB,UAAWwhD,GAC1Cn8E,SAAS8B,KAAK64B,iBAAiB,QAASwhD,GAExC5sD,EAAKkd,UAAUzd,IAER,IAIT9uB,EAAQy6B,iBAAiB,aAAc,SAAUp7B,GAC5CgwB,EAAKusD,YACRvsD,EAAK9b,MAAMkoC,kBACXpsB,EAAKkd,UAAUzd,GAEXO,EAAKysD,WAAW,IAAMhtD,GACzBO,EAAKkd,UAAUld,EAAKysD,WAAW,OAKlC97E,EAAQy6B,iBAAiB,WAAY,SAAUp7B,GAC1CgwB,EAAKusD,YACRvsD,EAAK9b,MAAMkoC,kBACXpsB,EAAKysD,WAAWrrD,QAAQ3B,UAM5B9uB,EAAQguB,UAAUvc,IAAI,0BACtBzR,EAAQguB,UAAU3oB,OAAO,0BAK3Bs2E,EAAUt/E,UAAUkwC,UAAY,SAAUzd,GACrC7xB,KAAKsW,MAAMzO,QAAQkyC,gBAAgBp8C,KAAKqC,KAAKsW,MAAOub,EAAIwD,kBACvDxD,EAAIn0B,QAAQwxC,QAAUrd,EAAIn0B,QAAQwxC,OAAO5wB,SAC5Cte,KAAKqzC,aAAaxhB,GAElB7xB,KAAKw/E,WAAW3tD,KAMnB6sD,EAAUt/E,UAAU+vC,WAAa,SAAUpxB,GAC1C,IAAIqU,EAAOpyB,KAEX,YAAwB,IAAT+d,EAAuB,YAAc1N,EAAQ0N,IAC3D,IAAK,YACJqU,EAAK9b,MAAMka,WAAWzS,KAAKxY,QAAQ,SAAUssB,GAC5CO,EAAKotD,WAAW3tD,GAAK,GAAM,KAG5BO,EAAK2sD,uBACL,MAED,IAAK,WACS,IAAThhE,IACHqU,EAAK9b,MAAMka,WAAWiH,WAAWlyB,QAAQ,SAAUssB,GAClDO,EAAKotD,WAAW3tD,GAAK,GAAM,KAG5BO,EAAK2sD,wBAEN,MAED,QACKj+E,MAAMC,QAAQgd,IACjBA,EAAKxY,QAAQ,SAAUssB,GACtBO,EAAKotD,WAAW3tD,GAAK,GAAM,KAG5BO,EAAK2sD,wBAEL3sD,EAAKotD,WAAWzhE,GAAM,GAAO,KAOjC2gE,EAAUt/E,UAAUogF,WAAa,SAAUC,EAAS3+C,EAAQx3B,GAI3D,IAAK2oB,MAAMjyB,KAAKsW,MAAMzO,QAAQyiC,cAAiD,IAAlCtqC,KAAKsW,MAAMzO,QAAQyiC,aAAwBhhC,GACnFtJ,KAAK8+E,aAAaj/E,QAAUG,KAAKsW,MAAMzO,QAAQyiC,WAAY,CAC9D,IAAItqC,KAAKsW,MAAMzO,QAAQiyC,2BAGtB,OAAO,EAFP95C,KAAKqzC,aAAarzC,KAAK8+E,aAAa,IAOvC,IAAIjtD,EAAM7xB,KAAKsW,MAAMka,WAAW6T,QAAQo7C,GAEpC5tD,GACoC,GAAnC7xB,KAAK8+E,aAAax+E,QAAQuxB,KACxBA,EAAIn0B,QAAQwxC,SAChBrd,EAAIn0B,QAAQwxC,OAAS,IAGtBrd,EAAIn0B,QAAQwxC,OAAO5wB,UAAW,EAC9BuT,EAAInrB,aAAaqqB,UAAUvc,IAAI,sBAE/BxU,KAAK8+E,aAAaj+E,KAAKgxB,GAElBiP,IACJ9gC,KAAKsW,MAAMzO,QAAQ80C,YAAYh/C,KAAKqC,KAAKsW,MAAOub,EAAIwD,gBACpDr1B,KAAK++E,yBAIFj+C,GACJj/B,QAAQ+0B,KAAK,2DAA6D6oD,IAK7Ef,EAAUt/E,UAAUowC,cAAgB,SAAU3d,GAC7C,OAA2C,IAApC7xB,KAAK8+E,aAAax+E,QAAQuxB,IAIlC6sD,EAAUt/E,UAAUorC,aAAe,SAAUzsB,GAC5C,IACIywD,EADAp8C,EAAOpyB,KAGX,QAAmB,IAAR+d,EAAqB,CAE/BywD,EAAWp8C,EAAK0sD,aAAaj/E,OAE7B,IAAK,IAAIrC,EAAI,EAAGA,EAAIgxE,EAAUhxE,IAC7B40B,EAAKihB,aAAajhB,EAAK0sD,aAAa,IAAI,GAGzC1sD,EAAK2sD,4BAEDj+E,MAAMC,QAAQgd,IACjBA,EAAKxY,QAAQ,SAAUssB,GACtBO,EAAKihB,aAAaxhB,GAAK,KAGxBO,EAAK2sD,wBAEL3sD,EAAKihB,aAAat1B,IAMrB2gE,EAAUt/E,UAAUi0C,aAAe,SAAUosC,EAAS3+C,GACrD,IAEI7N,EADApB,EADO7xB,KACIsW,MAAMka,WAAW6T,QAAQo7C,GAGpC5tD,GACHoB,EALUjzB,KAKG8+E,aAAajvD,UAAU,SAAU6vD,GAC7C,OAAOA,GAAe7tD,MAGV,IAEPA,EAAIn0B,QAAQwxC,SAChBrd,EAAIn0B,QAAQwxC,OAAS,IAGtBrd,EAAIn0B,QAAQwxC,OAAO5wB,UAAW,EAC9BuT,EAAInrB,aAAaqqB,UAAU3oB,OAAO,sBAhBzBpI,KAiBJ8+E,aAAajqE,OAAOoe,EAAO,GAE3B6N,IAnBI9gC,KAoBHsW,MAAMzO,QAAQ+0C,cAAcj/C,KAAKqC,KAAKsW,MAAOub,EAAIwD,gBApB9Cr1B,KAqBH++E,yBAIFj+C,GACJj/B,QAAQ+0B,KAAK,6DAA+D6oD,IAK/Ef,EAAUt/E,UAAUklD,gBAAkB,WACrC,IAAI/wC,EAAO,GAMX,OAJAvT,KAAK8+E,aAAav5E,QAAQ,SAAUssB,GACnCte,EAAK1S,KAAKgxB,EAAIgV,aAGRtzB,GAGRmrE,EAAUt/E,UAAUilD,gBAAkB,WAErC,IAAItmC,EAAO,GAMX,OAJA/d,KAAK8+E,aAAav5E,QAAQ,SAAUssB,GACnC9T,EAAKld,KAAKgxB,EAAIwD,kBAGRtX,GAGR2gE,EAAUt/E,UAAU2/E,qBAAuB,WAC1C/+E,KAAKsW,MAAMzO,QAAQ60C,oBAAoB/+C,KAAKqC,KAAKsW,MAAOtW,KAAKskD,kBAAmBtkD,KAAKqkD,oBAGtFxuC,EAAUzW,UAAUknD,eAAe,YAAao4B,GAEhD,IAAIiB,EAAO,SAAcrpE,GACxBtW,KAAKsW,MAAQA,EACbtW,KAAK0jD,SAAW,GAChB1jD,KAAK41C,SAAU,GAIhB+pC,EAAKvgF,UAAU69B,iBAAmB,SAAUnK,EAAQ/Y,GACnD,IAEIiZ,EACA4sD,EAHAxtD,EAAOpyB,KACP8xB,GAAS,EAIb,OAAQzhB,EAAQyiB,EAAOH,WAAWb,SACjC,IAAK,SACAM,EAAK+W,QAAQrW,EAAOH,WAAWb,QAClCA,EAASM,EAAK+W,QAAQrW,EAAOH,WAAWb,QAExCjwB,QAAQ+0B,KAAK,sCAAuC9D,EAAOH,WAAWb,QAEvE,MAED,IAAK,WACJA,EAASgB,EAAOH,WAAWb,OAI7BgB,EAAOp1B,QAAQ4gC,KAAO,CACrBxM,OAAQA,EAAQvX,IAAK,OACrBmlB,OAAQ5M,EAAOH,WAAWktD,cAAgB,GAC1CC,YAAahtD,EAAOH,WAAWotD,uBAAyB,MACxDzc,SAAUxwC,EAAOH,WAAWqtD,qBAGQ,IAAjCltD,EAAOH,WAAWstD,cAErBjtD,EAAQF,EAAOpsB,cAETqqB,UAAUvc,IAAI,uBAEpBorE,EAAU/8E,SAASC,cAAc,QACzBiuB,UAAUvc,IAAI,mBAEtBuF,EAAQnV,YAAYg7E,GAGpB5sD,EAAMwK,iBAAiB,QAAS,SAAUp7B,GACzC,IAAImY,EAAM,GACN4uB,EAAU,GACVjX,GAAQ,EAEZ,GAAIY,EAAOp1B,QAAQ4gC,KAAM,CACxB,GAAIxL,EAAOp1B,QAAQ4gC,KAAKglC,SAEtB/oD,EAD8B,QAA3BuY,EAAOp1B,QAAQ4gC,KAAK/jB,IACjBuY,EAAOp1B,QAAQ4gC,KAAKwhD,YAEtBhtD,EAAOp1B,QAAQ4gC,KAAK/jB,KAAOuY,EAAOp1B,QAAQ4gC,KAAKwhD,YACjB,OAA3BhtD,EAAOp1B,QAAQ4gC,KAAK/jB,IAAe,OAAS,MAE5C,YAIR,OAAQuY,EAAOp1B,QAAQ4gC,KAAK/jB,KAC3B,IAAK,MACJA,EAAM,OACN,MAED,IAAK,OACJA,EAAM,MACN,MAED,QACCA,EAAMuY,EAAOp1B,QAAQ4gC,KAAKwhD,YAIzB1tD,EAAK9b,MAAMzO,QAAQ8vC,wBAA0Bv1C,EAAEqwE,UAAYrwE,EAAEowE,WAGhEtgD,GAFAiX,EAAU/W,EAAKgX,WAECvZ,UAAU,SAAUiC,GACnC,OAAOA,EAAOE,QAAUc,EAAOgF,eAGnB,GACZqR,EAAQjX,GAAO3X,IAAMA,EAEjB2X,GAASiX,EAAQtpC,OAAS,IAC7BqyB,EAAQiX,EAAQt0B,OAAOqd,EAAO,GAAG,GACtB,QAAP3X,GACH4uB,EAAQtoC,KAAKqxB,KAIJ,QAAP3X,GACH4uB,EAAQtoC,KAAK,CAAEiyB,OAAQA,EAAQvY,IAAKA,IAKtC6X,EAAKotB,QAAQrW,IAEF,QAAP5uB,EACH6X,EAAK1qB,QAGL0qB,EAAKotB,QAAQ1sB,EAAQvY,GAIvB6X,EAAK9b,MAAMka,WAAWwZ,eAAe5X,EAAKsxB,SAAS7jD,aAOvD8/E,EAAKvgF,UAAUomE,WAAa,WAC3B,IAAI5vB,EAAU51C,KAAK41C,QAEnB,OADA51C,KAAK41C,SAAU,EACRA,GAIR+pC,EAAKvgF,UAAUgqC,QAAU,WACxB,IACID,EAAU,GAQd,OATWnpC,KAGN0jD,SAASn+C,QAAQ,SAAU+hC,GAC3BA,EAAKxU,QACRqW,EAAQtoC,KAAK,CAAEiyB,OAAQwU,EAAKxU,OAAOuC,eAAgBrD,MAAOsV,EAAKxU,OAAOgF,WAAYvd,IAAK+sB,EAAK/sB,QAIvF4uB,GAIRw2C,EAAKvgF,UAAUogD,QAAU,SAAUkE,EAAUnpC,GAC5C,IAAI6X,EAAOpyB,KACPkgF,EAAc,GAEbp/E,MAAMC,QAAQ2iD,KAClBA,EAAW,CAAC,CAAE5wB,OAAQ4wB,EAAUnpC,IAAKA,KAGtCmpC,EAASn+C,QAAQ,SAAU+hC,GAC1B,IAAIxU,GAEJA,EAASV,EAAK9b,MAAMqf,cAAcxB,WAAWmT,EAAKxU,UAGjDwU,EAAKxU,OAASA,EACdotD,EAAYr/E,KAAKymC,GACjBlV,EAAKwjB,SAAU,GAEf/zC,QAAQ+0B,KAAK,kEAAmE0Q,EAAKxU,UAIvFV,EAAKsxB,SAAWw8B,EAEZlgF,KAAKsW,MAAMzO,QAAQqyC,gBAAkBl6C,KAAKsW,MAAMob,UAAU,eAAe,IAC5E1xB,KAAKsW,MAAM5Y,QAAQm4B,YAAYC,KAAK,SAKtC6pD,EAAKvgF,UAAUsI,MAAQ,WACtB1H,KAAKw/C,QAAQ,KAIdmgC,EAAKvgF,UAAU+gF,WAAa,SAAUrtD,GACrC,IAGIr0B,EAHAozB,EAAM7xB,KAAKsW,MAAMka,WAAWiH,WAAW,GACvC3F,EAAS,SAIb,GAAID,IACHA,EAAMA,EAAIgV,UACF/T,EAAOgF,YAMd,YAAyB,KAFzBr5B,EAAQq0B,EAAOkH,cAAcnI,IAEU,YAAcxhB,EAAQ5R,IAC5D,IAAK,YACJqzB,EAAS,SACT,MAED,IAAK,UACJA,EAAS,UACT,MAED,QACMG,MAAMxzB,IAAoB,KAAVA,EAGhBA,EAAMyzB,MAAM,0CACfJ,EAAS,YAHVA,EAAS,SAWd,OAAO9xB,KAAKmpC,QAAQrX,IAIrB6tD,EAAKvgF,UAAUk/B,KAAO,SAAU/qB,GAC/B,IAEImwC,EAFAtxB,EAAOpyB,KAIX0jD,EAAW1jD,KAAKsW,MAAMzO,QAAQ+vC,iBAAmBxlB,EAAKsxB,SAASrgD,QAAQgkC,UAAYjV,EAAKsxB,SAEpFtxB,EAAK9b,MAAMzO,QAAQy1C,aACtBlrB,EAAK9b,MAAMzO,QAAQy1C,YAAY3/C,KAAKy0B,EAAK9b,MAAO8b,EAAKgX,WAGtDhX,EAAKguD,qBAEAhuD,EAAK9b,MAAMzO,QAAQqhC,YAiBvBwa,EAASn+C,QAAQ,SAAU+hC,EAAM9pC,GAChC40B,EAAKiuD,gBAAgB/4C,EAAKxU,OAAQwU,EAAK/sB,OAhBxCmpC,EAASn+C,QAAQ,SAAU+hC,EAAM9pC,GAE5B8pC,EAAKxU,QAAUwU,EAAKxU,OAAOp1B,QAAQ4gC,OAGjCgJ,EAAKxU,OAAOp1B,QAAQ4gC,KAAKxM,SAC7BwV,EAAKxU,OAAOp1B,QAAQ4gC,KAAKxM,OAASM,EAAK+tD,WAAW74C,EAAKxU,SAGxDV,EAAKkuD,UAAU/sE,EAAM+zB,EAAKxU,OAAQwU,EAAK/sB,IAAKmpC,EAAUlmD,IAGvD40B,EAAKiuD,gBAAgB/4C,EAAKxU,OAAQwU,EAAK/sB,OAQrC6X,EAAK9b,MAAMzO,QAAQ01C,YACtBnrB,EAAK9b,MAAMzO,QAAQ01C,WAAW5/C,KAAKy0B,EAAK9b,MAAO8b,EAAKgX,UAAWhX,EAAK9b,MAAMka,WAAW2E,eAAc,KAKrGwqD,EAAKvgF,UAAUghF,mBAAqB,WACnCpgF,KAAKsW,MAAMqf,cAAcd,iBAAiBtvB,QAAQ,SAAUutB,GACvDA,EAAOp1B,QAAQ4gC,OAClBxL,EAAOp1B,QAAQ4gC,KAAK/jB,IAAM,OAC1BuY,EAAOpsB,aAAak1B,aAAa,YAAa,YAMjD+jD,EAAKvgF,UAAUihF,gBAAkB,SAAUvtD,EAAQvY,GAClDuY,EAAOp1B,QAAQ4gC,KAAK/jB,IAAMA,EAC1BuY,EAAOpsB,aAAak1B,aAAa,YAAarhB,IAI/ColE,EAAKvgF,UAAUkhF,UAAY,SAAU/sE,EAAMuf,EAAQvY,EAAKmpC,EAAUlmD,GACjE,IAAI40B,EAAOpyB,KAEP0/B,EAA+C,mBAA/B5M,EAAOp1B,QAAQ4gC,KAAKoB,OAAwB5M,EAAOp1B,QAAQ4gC,KAAKoB,OAAO5M,EAAOuC,eAAgB9a,GAAOuY,EAAOp1B,QAAQ4gC,KAAKoB,OAE7InsB,EAAK+qB,KAAK,SAAUp8B,EAAGC,GAEtB,IAAIke,EAAS+R,EAAKmuD,SAASr+E,EAAGC,EAAG2wB,EAAQvY,EAAKmlB,GAG9C,GAAe,IAAXrf,GAAgB7iB,EACnB,IAAK,IAAIm4D,EAAIn4D,EAAI,EAAGm4D,GAAK,GAGT,KAFft1C,EAAS+R,EAAKmuD,SAASr+E,EAAGC,EAAGuhD,EAASiS,GAAG7iC,OAAQ4wB,EAASiS,GAAGp7C,IAAKmlB,IADvCi2B,KAS7B,OAAOt1C,KAKTs/D,EAAKvgF,UAAUmhF,SAAW,SAAUr+E,EAAGC,EAAG2wB,EAAQvY,EAAKmlB,GACtD,IAAI8gD,EAASC,EAGTC,EAAa,OAAPnmE,EAAerY,EAAIC,EACzBw+E,EAAa,OAAPpmE,EAAepY,EAAID,EAW7B,OANAA,OAAiB,KAHjBA,EAAI4wB,EAAOkH,cAAc0mD,EAAI75C,YAGE3kC,EAAI,GACnCC,OAAiB,KAHjBA,EAAI2wB,EAAOkH,cAAc2mD,EAAI95C,YAGE1kC,EAAI,GAEnCq+E,EAAUE,EAAIrrD,eACdorD,EAAUE,EAAItrD,eAEPvC,EAAOp1B,QAAQ4gC,KAAKxM,OAAOn0B,KAAKqC,KAAMkC,EAAGC,EAAGq+E,EAASC,EAAS3tD,EAAOuC,eAAgB9a,EAAKmlB,IAIlGigD,EAAKvgF,UAAU+pC,QAAU,CAGxBq2B,OAAQ,SAAgBt9D,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GACtD,IAAIohD,EAAmBphD,EAAOohD,iBAC1B/Y,EAAUroC,EAAOqhD,kBAAoB,IACrC3Y,EAAW1oC,EAAOshD,mBAAqB,IACvCC,EAAa,EAMjB,GAJA/+E,EAAIqK,WAAWmD,OAAOxN,GAAG6N,MAAMq4D,GAAUnnE,KAAK,IAAI8O,MAAMg4D,GAAS9mE,KAAK,MACtEkB,EAAIoK,WAAWmD,OAAOvN,GAAG4N,MAAMq4D,GAAUnnE,KAAK,IAAI8O,MAAMg4D,GAAS9mE,KAAK,MAGlEgxB,MAAM/vB,GACT++E,EAAahvD,MAAM9vB,GAAK,GAAK,MACvB,KAAI8vB,MAAM9vB,GAIhB,OAAOD,EAAIC,EAHX8+E,EAAa,EAWd,OAJyB,QAArBH,GAAsC,SAARvmE,GAAuC,WAArBumE,GAAyC,QAARvmE,KACpF0mE,IAAe,GAGTA,GAIR3uE,OAAQ,SAAgBpQ,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GACtD,IAEIsa,EAFA8mC,EAAmBphD,EAAOohD,iBAC1BG,EAAa,EAIjB,GAAK/+E,EAEE,IAAKC,EAEL,CAEN,OAAQkO,EAAQqvB,EAAOsa,SACtB,IAAK,UACAta,EAAOsa,SACVA,EAASh6C,KAAKsW,MAAM5Y,QAAQ++B,SAAS+mB,aAEtC,MACD,IAAK,SACJxJ,EAASta,EAAOsa,OAIlB,OAAOtqC,OAAOxN,GAAGsnD,cAAc03B,cAAcxxE,OAAOvN,GAAGqnD,cAAexP,GAdtEinC,EAAa,OAFbA,EAAc9+E,GAAS,EAAL,EAwBnB,OAJyB,QAArB2+E,GAAsC,SAARvmE,GAAuC,WAArBumE,GAAyC,QAARvmE,KACpF0mE,IAAe,GAGTA,GAIRvX,KAAM,SAAcxnE,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAKlD,OAJKA,EAAOz9B,SACXy9B,EAAOz9B,OAAS,cAGVjC,KAAKmpC,QAAQ6/B,SAASrrE,KAAKqC,KAAMkC,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,IAIxEyhD,KAAM,SAAcj/E,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAKlD,OAJKA,EAAOz9B,SACXy9B,EAAOz9B,OAAS,SAGVjC,KAAKmpC,QAAQ6/B,SAASrrE,KAAKqC,KAAMkC,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,IAIxEspC,SAAU,SAAkB9mE,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAC1D,IAAIz9B,EAASy9B,EAAOz9B,QAAU,sBAC1B6+E,EAAmBphD,EAAOohD,iBAC1BG,EAAa,EAEjB,GAAqB,oBAAV3X,OAAuB,CAIjC,GAHApnE,EAAIonE,OAAOpnE,EAAGD,GACdE,EAAImnE,OAAOnnE,EAAGF,GAETC,EAAEqnE,UAEA,IAAKpnE,EAAEonE,UAIb,OAAOrnE,EAAIC,EAHX8+E,EAAa,OAFbA,EAAc9+E,EAAEonE,WAAiB,EAAL,EAa7B,OAJyB,QAArBuX,GAAsC,SAARvmE,GAAuC,WAArBumE,GAAyC,QAARvmE,KACpF0mE,IAAe,GAGTA,EAEPp/E,QAAQC,MAAM,6DAKhBs/E,QAAS,SAAiBl/E,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAIxD,QAHgB,IAANx9B,GAAoB,SAANA,GAAsB,SAANA,GAAsB,IAANA,EAAU,EAAI,KACtD,IAANC,GAAoB,SAANA,GAAsB,SAANA,GAAsB,IAANA,EAAU,EAAI,IAMvEk/E,MAAO,SAAen/E,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GACpD,IAEIh3B,EAAOg3B,EAAOh3B,MAAQ,SACtBo4E,EAAmBphD,EAAOohD,iBAC1BG,EAAa,EAEjB,SAASK,EAAK7iF,GAEb,OAAQiK,GACP,IAAK,SACJ,OAAOjK,EAAMoB,OAGd,IAAK,MACJ,OAAOpB,EAAM4Z,OAAO,SAAUxa,EAAGC,GAChC,OAAOD,EAAIC,IAIb,IAAK,MACJ,OAAOqY,KAAKuG,IAAI3c,MAAM,KAAMtB,GAG7B,IAAK,MACJ,OAAO0X,KAAK2G,IAAI/c,MAAM,KAAMtB,GAG7B,IAAK,MACJ,OAAOA,EAAM4Z,OAAO,SAAUxa,EAAGC,GAChC,OAAOD,EAAIC,IACPW,EAAMoB,QAMd,GAAKiB,MAAMC,QAAQmB,GAEZ,IAAKpB,MAAMC,QAAQoB,GAQzB,OAHMD,EAAIo/E,EAAKp/E,GAAK,IACdC,EAAIm/E,EAAKn/E,GAAK,GALpB2+E,EAAmB,OAFnBA,EAAoBhgF,MAAMC,QAAQoB,IAAU,EAAL,EAiBxC,OAJyB,QAArB2+E,GAAsC,SAARvmE,GAAuC,WAArBumE,GAAyC,QAARvmE,KACpF0mE,IAAe,GAGTA,GAIR5Q,OAAQ,SAAgBnuE,EAAGC,EAAGy+E,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAItD,YAHsB,IAALx9B,EAAmB,EAAI,SAClB,IAALC,EAAmB,EAAI,IAMzCo/E,SAAU,SAAkBC,EAAIC,EAAIb,EAAMC,EAAM/tD,EAAQvY,EAAKmlB,GAC5D,IAAIx9B,EACAC,EACAu/E,EACAC,EAEAC,EADApkF,EAAI,EAEJirB,EAAK,eACLo5D,EAAK,KACLf,EAAmBphD,EAAOohD,iBAC1BG,EAAa,EAGjB,GAAKO,GAAa,IAAPA,EAEJ,IAAKC,GAAa,IAAPA,EAEX,CAEN,GAAIK,SAASN,IAAOM,SAASL,GAAK,OAAOD,EAAKC,EAG9C,IAFAv/E,EAAIwN,OAAO8xE,GAAIh4B,kBACfrnD,EAAIuN,OAAO+xE,GAAIj4B,eACF,OAAO,EACpB,IAAMq4B,EAAGt+E,KAAKrB,KAAM2/E,EAAGt+E,KAAKpB,GAAK,OAAOD,EAAIC,EAAI,GAAK,EAIrD,IAHAD,EAAIA,EAAEgwB,MAAMzJ,GACZtmB,EAAIA,EAAE+vB,MAAMzJ,GACZm5D,EAAI1/E,EAAErC,OAASsC,EAAEtC,OAASsC,EAAEtC,OAASqC,EAAErC,OAChCrC,EAAIokF,GAGV,IAFAF,EAAKx/E,EAAE1E,OACPmkF,EAAKx/E,EAAE3E,MAEN,OAAIskF,SAASJ,IAAOI,SAASH,IACP,MAAjBD,EAAGl2B,OAAO,KAAYk2B,EAAK,IAAMA,GAChB,MAAjBC,EAAGn2B,OAAO,KAAYm2B,EAAK,IAAMA,GAC9BD,EAAKC,GACCD,EAAKC,EAAK,GAAK,EAI/B,OAAOz/E,EAAErC,OAASsC,EAAEtC,OAvBpBohF,EAAa,OAFbA,EAAcQ,GAAa,IAAPA,GAAgB,EAAL,EAiChC,OAJyB,QAArBX,GAAsC,SAARvmE,GAAuC,WAArBumE,GAAyC,QAARvmE,KACpF0mE,IAAe,GAGTA,IAITprE,EAAUzW,UAAUknD,eAAe,OAAQq5B,GAE3C,IAAIoC,EAAW,SAAkBzrE,GAChCtW,KAAKsW,MAAQA,GAgNd,OA5MAyrE,EAAS3iF,UAAU69B,iBAAmB,SAAUnK,GAC/C,IAEI2L,EAFArM,EAAOpyB,KACP8gD,EAAS,GAGThuB,EAAOH,WAAW8L,YAEjB39B,MAAMC,QAAQ+xB,EAAOH,WAAW8L,WACnC3L,EAAOH,WAAW8L,UAAUl5B,QAAQ,SAAU+hC,IAC7C7I,EAAYrM,EAAK4vD,kBAAkB16C,KAGlCwZ,EAAOjgD,KAAK49B,MAIdA,EAAYz+B,KAAKgiF,kBAAkBlvD,EAAOH,WAAW8L,aAGpDqiB,EAAOjgD,KAAK49B,GAId3L,EAAOp1B,QAAQuT,WAAW6vC,EAAOjhD,QAASihD,IAI5CihC,EAAS3iF,UAAU4iF,kBAAoB,SAAUvjF,GAChD,IAAIwjF,EAAOv5E,EAAMg3B,EAEjB,YAAyB,IAAVjhC,EAAwB,YAAc4R,EAAQ5R,IAC5D,IAAK,SAKJ,OAHAiK,GADAu5E,EAAQxjF,EAAMsR,MAAM,IAAK,IACZonD,QACbz3B,EAASuiD,EAAM,GAERjiF,KAAKkiF,gBAAgBx5E,EAAMg3B,GAGnC,IAAK,WACJ,OAAO1/B,KAAKkiF,gBAAgBzjF,GAG7B,IAAK,SACJ,OAAOuB,KAAKkiF,gBAAgBzjF,EAAMiK,KAAMjK,EAAM0jF,cAKjDJ,EAAS3iF,UAAU8iF,gBAAkB,SAAUx5E,EAAMg3B,GAEpD,IAAI/f,EAAsB,mBAARjX,EAAqBA,EAAO1I,KAAKoiF,WAAW15E,GAE9D,OAAKiX,EAIG,CACNjX,KAAqB,mBAARA,EAAqB,WAAaA,EAC/CiX,KAAMA,EACN+f,OAAQA,IANT79B,QAAQ+0B,KAAK,uDAAwDluB,IAC9D,IAUTq5E,EAAS3iF,UAAU6R,SAAW,SAAUmxE,EAAY97E,EAAM7H,GACzD,IAAI2zB,EAAOpyB,KACP8yD,EAAQ,GAaZ,OAXIsvB,GACHA,EAAW78E,QAAQ,SAAU+hC,GACvBA,EAAK3nB,KAAKhiB,KAAKy0B,EAAM9rB,EAAM7H,EAAO6oC,EAAK5H,SAC3CozB,EAAMjyD,KAAK,CACV6H,KAAM4+B,EAAK5+B,KACXy5E,WAAY76C,EAAK5H,YAMdozB,EAAMjzD,QAASizD,GAGvBivB,EAAS3iF,UAAUgjF,WAAa,CAG/Bta,QAAS,SAAiBxhE,EAAM7H,EAAO0jF,GACtC,MAAc,KAAV1jF,SAAgBA,GAII,iBADxBA,EAAQuyD,OAAOvyD,KACqBqjF,SAASrjF,IAAU0X,KAAKC,MAAM3X,KAAWA,GAI9E4jF,MAAO,SAAe/7E,EAAM7H,EAAO0jF,GAClC,MAAc,KAAV1jF,SAAgBA,GAII,iBADxBA,EAAQuyD,OAAOvyD,KACqBqjF,SAASrjF,IAAUA,EAAQ,GAAM,GAItE6jF,QAAS,SAAiBh8E,EAAM7H,EAAO0jF,GACtC,MAAc,KAAV1jF,SAAgBA,IAGZwzB,MAAMxzB,IAIf6T,OAAQ,SAAgBhM,EAAM7H,EAAO0jF,GACpC,MAAc,KAAV1jF,SAAgBA,GAGbwzB,MAAMxzB,IAIdie,IAAK,SAAapW,EAAM7H,EAAO0jF,GAC9B,MAAc,KAAV1jF,SAAgBA,GAGb8N,WAAW9N,IAAU0jF,GAI7BrlE,IAAK,SAAaxW,EAAM7H,EAAO0jF,GAC9B,MAAc,KAAV1jF,SAAgBA,GAGb8N,WAAW9N,IAAU0jF,GAI7BplE,UAAW,SAAmBzW,EAAM7H,EAAO0jF,GAC1C,MAAc,KAAV1jF,SAAgBA,GAGbiR,OAAOjR,GAAOoB,QAAUsiF,GAIhCxlE,UAAW,SAAmBrW,EAAM7H,EAAO0jF,GAC1C,MAAc,KAAV1jF,SAAgBA,GAGbiR,OAAOjR,GAAOoB,QAAUsiF,GAIhCn+D,GAAI,SAAa1d,EAAM7H,EAAO0jF,GAC7B,MAAc,KAAV1jF,SAAgBA,IAGK,iBAAd0jF,IACVA,EAAaA,EAAWpyE,MAAM,MAGd,KAAVtR,GAAgB0jF,EAAW7hF,QAAQ7B,IAAU,IAIrDmoE,MAAO,SAAetgE,EAAM7H,EAAO0jF,GAClC,MAAc,KAAV1jF,SAAgBA,GAGV,IAAIooE,OAAOsb,GAEV5+E,KAAK9E,IAIjB8jF,OAAQ,SAAgBj8E,EAAM7H,EAAO0jF,GACpC,GAAc,KAAV1jF,SAAgBA,EACnB,OAAO,EAER,IAAI8jF,GAAS,EAETC,EAAWl8E,EAAKugC,UAChB/T,EAASxsB,EAAKstC,YAAYtf,WAY9B,OAVAt0B,KAAKsW,MAAMka,WAAWzS,KAAKxY,QAAQ,SAAUssB,GAC5C,IAAIte,EAAOse,EAAIgV,UAEXtzB,IAASivE,GACR/jF,GAASq0B,EAAOkH,cAAczmB,KACjCgvE,GAAS,KAKLA,GAIR1kE,SAAU,SAAkBvX,EAAM7H,EAAO0jF,GACxC,MAAiB,KAAV1jF,SAAgBA,IAIzBoX,EAAUzW,UAAUknD,eAAe,WAAYy7B,GAExClsE,GA36rBmE,WAAtBxF,EAAQ/S,SAA4C,IAAXC,EAC5FA,EAAOD,QAAUsyB,SAEXzuB,KAAAZ,EAAA,mBAANyG,KAAM2oB,EAAAhyB,KAAAL,EAAAF,EAAAE,EAAAC,GAAAoyB,KAAApyB,EAAAD,QAAAiD,iCCNR,IAAIyD,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAEI0N,EAAK,aAFI5K,EAAuBxE,EAAQ,KAIjC0B,UACT0N,EACM/L,SAAS26B,iBAAyB,SAAU15B,EAAM2+E,EAAWC,EAASC,GACxE,OAAO7+E,EAAK05B,iBAAiBilD,EAAWC,EAASC,IAAW,IACnD9/E,SAAS+/E,YAAoB,SAAU9+E,EAAM2+E,EAAWC,GACjE,OAAO5+E,EAAK8+E,YAAY,KAAOH,EAAW,SAAUrgF,IAClDA,EAAIA,GAAKQ,OAAOsK,OACdvN,OAASyC,EAAEzC,QAAUyC,EAAEygF,WACzBzgF,EAAE0gF,cAAgBh/E,EAClB4+E,EAAQ/kF,KAAKmG,EAAM1B,WALhB,GAWX,IAAIO,EAAWiM,EACftR,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAO,sCC1BxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAEI4N,EAAM,aAFG9K,EAAuBxE,EAAQ,KAIjC0B,UACT4N,EACMjM,SAAS26B,iBAAyB,SAAU15B,EAAM2+E,EAAWC,EAASC,GACxE,OAAO7+E,EAAK47D,oBAAoB+iB,EAAWC,EAASC,IAAW,IACtD9/E,SAAS+/E,YAAoB,SAAU9+E,EAAM2+E,EAAWC,GACjE,OAAO5+E,EAAKi/E,YAAY,KAAON,EAAWC,SADrC,GAMX,IAAI//E,EAAWmM,EACfxR,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAO,sCCrBxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAEIyB,EAFSqB,EAAuBxE,EAAQ,KAK5B0B,QAAU,SAAU8hF,EAASl/E,GACzC,OAAIk/E,EAAQxkB,SACHwkB,EAAQxkB,SAAS16D,GACfk/E,EAAQC,wBACVD,IAAYl/E,MAAmD,GAAxCk/E,EAAQC,wBAAwBn/E,IAEvDo/E,EAASF,EAASl/E,IAEzBo/E,EAKN,SAASA,EAASF,EAASl/E,GACzB,GAAIA,EAAM,GACR,GAAIA,IAASk/E,EAAS,OAAO,QACtBl/E,EAAOA,EAAKwvB,YACrB,OAAO,EANTh2B,EAAQ4D,QAAUyB,EASlBpF,EAAOD,QAAUA,EAAO,sCC9BxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAIiD,EAASH,EAAuBxE,EAAQ,KAExCmP,EAAM3K,EAAuBxE,EAAQ,KAErCqP,EAAO7K,EAAuBxE,EAAQ,KAEtC0P,EAAS,aAET/K,EAAOjD,UACTgO,EAAS,SAAgBpL,EAAM2+E,EAAWC,EAASC,GAEjD,OADA,EAAIh0E,EAAIzN,SAAS4C,EAAM2+E,EAAWC,EAASC,GACpC,YACL,EAAI9zE,EAAK3N,SAAS4C,EAAM2+E,EAAWC,EAASC,MAKlD,IAAIhgF,EAAWuM,EACf5R,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAO,sCCxBxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAER,SAAkB6B,EAAS0R,GACzB,OAAI1R,EAAQguB,YAAoBtc,GAAa1R,EAAQguB,UAAUytC,SAAS/pD,IAA0H,KAAlG,KAAO1R,EAAQ0R,UAAU0uE,SAAWpgF,EAAQ0R,WAAa,KAAKnU,QAAQ,IAAMmU,EAAY,MAG1LlX,EAAOD,QAAUA,EAAO,sCCPxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAWR,SAA2BoR,GACzB,OAAO,EAAI8wE,EAAUliF,SAASoR,EAAO7P,QAAQ4gF,EAAW,SAV1D,IAAID,EAAYp/E,EAAuBxE,EAAQ,KAO3C6jF,EAAY,QAMhB9lF,EAAOD,QAAUA,EAAO,sCClBxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAAU5D,EAAQgmF,aAAehmF,EAAQimF,eAAiBjmF,EAAQkmF,gBAAkBlmF,EAAQmmF,kBAAoBnmF,EAAQomF,cAAgBpmF,EAAQqmF,cAAgBrmF,EAAQsmF,mBAAqBtmF,EAAQumF,gBAAkBvmF,EAAQwmF,iBAAmBxmF,EAAQymF,mBAAqBzmF,EAAQqI,eAAY,EAE3S,IAII8jD,EAAQk6B,EAAeL,EAGvBS,EAAoBH,EAAoBE,EAAkBD,EAK1DH,EAAeD,EAAmBD,EAAiBD,EAZnDp/E,EAASH,EAAuBxE,EAAQ,KAExCmG,EAAY,YAgBhB,GAfArI,EAAQqI,UAAYA,EAEpBrI,EAAQgmF,aAAeA,EACvBhmF,EAAQqmF,cAAgBA,EAExBrmF,EAAQumF,gBAAkBA,EAC1BvmF,EAAQwmF,iBAAmBA,EAC3BxmF,EAAQsmF,mBAAqBA,EAC7BtmF,EAAQymF,mBAAqBA,EAE7BzmF,EAAQimF,eAAiBA,EACzBjmF,EAAQkmF,gBAAkBA,EAC1BlmF,EAAQmmF,kBAAoBA,EAC5BnmF,EAAQomF,cAAgBA,EAEpBv/E,EAAOjD,QAAS,CAClB,IAAI8iF,EA0BN,WAoBE,IAnBA,IAgBIL,EAAeL,EAhBfj/E,EAAQxB,SAASC,cAAc,OAAOuB,MACtC4/E,EAAY,CACdC,EAAG,SAAW9hF,GACZ,MAAO,IAAMA,EAAEonD,eAEjB26B,IAAK,SAAa/hF,GAChB,OAAOA,EAAEonD,eAEX46B,OAAQ,SAAgBhiF,GACtB,MAAO,SAAWA,GAEpBiiF,GAAI,SAAYjiF,GACd,MAAO,KAAOA,IAGdkiF,EAAUpmF,OAAOmC,KAAK4jF,GAEtBx6B,EAAS,GAEJjsD,EAAI,EAAGA,EAAI8mF,EAAQzkF,OAAQrC,IAAK,CACvC,IAAI+mF,EAASD,EAAQ9mF,GAErB,GAAI+mF,EAAS,uBAAwBlgF,EAAO,CAC1ColD,EAAS,IAAM86B,EAAO/6B,cACtBm6B,EAAgBM,EAAUM,GAAQ,iBAClCjB,EAAeW,EAAUM,GAAQ,gBACjC,QAICZ,GAAiB,uBAAwBt/E,IAAOs/E,EAAgB,kBAChEL,GAAgB,kBAAmBj/E,IAAOi/E,EAAe,gBAE9D,OADAj/E,EAAQ,KACD,CACLi/E,aAAcA,EACdK,cAAeA,EACfl6B,OAAQA,GA/DkB+6B,GAE5B/6B,EAASu6B,EAAsBv6B,OAC/BnsD,EAAQqmF,cAAgBA,EAAgBK,EAAsBL,cAC9DrmF,EAAQgmF,aAAeA,EAAeU,EAAsBV,aAC5DhmF,EAAQqI,UAAYA,EAAY8jD,EAAS,IAAM9jD,EAC/CrI,EAAQymF,mBAAqBA,EAAqBt6B,EAAS,uBAC3DnsD,EAAQsmF,mBAAqBA,EAAqBn6B,EAAS,uBAC3DnsD,EAAQumF,gBAAkBA,EAAkBp6B,EAAS,oBACrDnsD,EAAQwmF,iBAAmBA,EAAmBr6B,EAAS,8BACvDnsD,EAAQomF,cAAgBA,EAAgBj6B,EAAS,kBACjDnsD,EAAQmmF,kBAAoBA,EAAoBh6B,EAAS,sBACzDnsD,EAAQkmF,gBAAkBA,EAAkB/5B,EAAS,mBACrDnsD,EAAQimF,eAAiBA,EAAiB95B,EAAS,6BAGrD,IAAI9mD,EAAW,CACbgD,UAAWA,EACX8c,IAAKkhE,EACLxkF,SAAU4kF,EACVU,OAAQX,EACRY,MAAOb,EACPr6E,SAAUo6E,GAEZtmF,EAAQ4D,QAAUyB,gCChDlBrF,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAMR,SAAsBkT,EAAWuwE,GAC/B,OAAiB,MAAbvwE,EAA0BuwE,GAC9BvwE,EAAiC,mBAAdA,EAA2BA,IAAcA,EACrDwwE,EAAU1jF,QAAQyV,YAAYvC,IAAc,OAPrD,IAEgChT,EAF5BwjF,GAE4BxjF,EAFO5B,EAAQ,KAEM4B,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAQvF7D,EAAOD,QAAUA,EAAQ4D,sCCbzB5D,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAI2jF,EAAiB7gF,EAAuBxE,EAAQ,KAEhDslF,EAAY9gF,EAAuBxE,EAAQ,KAE3C2E,EAASH,EAAuBxE,EAAQ,KAExCyP,EAAUjL,EAAuBxE,EAAQ,KAEzCulF,EAAa/gF,EAAuBxE,EAAQ,IAE5CwlF,EAAsBhhF,EAAuBxE,EAAQ,KAErDylF,EAAejhF,EAAuBxE,EAAQ,KAE9C4S,EAASpO,EAAuBxE,EAAQ,IAExColF,EAAY5gF,EAAuBxE,EAAQ,IAE3C0lF,EAAgBlhF,EAAuBxE,EAAQ,KAE/C2lF,EAAUnhF,EAAuBxE,EAAQ,KAEzC4lF,EAAgBphF,EAAuBxE,EAAQ,KAE/C6lF,EAAiBrhF,EAAuBxE,EAAQ,KAEpD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF,SAAS3B,IAA2Q,OAA9PA,EAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,IAA2BI,MAAMC,KAAMJ,WAMhT,SAAS0lF,EAAuBlzD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAImzD,eAAe,6DAAgE,OAAOnzD,EAE/J,IAAIozD,EAAe,IAAIN,EAAchkF,QAkCrC,IAAIukF,EAEJ,SAAUC,GAxCV,IAAwBpkF,EAAUC,EA2ChC,SAASkkF,IAGP,IAFA,IAAIzvE,EAEK1E,EAAO1R,UAAUC,OAAQ8lF,EAAQ,IAAI7kF,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFo0E,EAAMp0E,GAAQ3R,UAAU2R,GAyH1B,OAtHAyE,EAAQ0vE,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOm0E,KAAW3lF,MACzE4K,MAAQ,CACZg7E,QAAS5vE,EAAM9Q,MAAMqzB,MAGvBviB,EAAM6vE,iBAAmB,WACnB7vE,EAAM9Q,MAAM4gF,QACd9vE,EAAM9Q,MAAM4gF,SAKd9vE,EAAMmD,aAGRnD,EAAM8vE,OAAS,WACb,IAAIhqB,GAAM,EAAIupB,EAAenkF,SAASokF,EAAuBA,EAAuBtvE,KAChF5B,GAAY,EAAIgxE,EAAclkF,SAAS8U,EAAM9Q,MAAMkP,UAAW0nD,EAAIn3D,MAEtEqR,EAAM9Q,MAAMisB,QAAQ3c,IAAI8wE,EAAuBA,EAAuBtvE,IAAS5B,EAAW4B,EAAM9Q,MAAM6gF,oBAEtG/vE,EAAMgwE,uBAAwB,EAAI/2E,EAAQ/N,SAAS46D,EAAK,UAAW9lD,EAAMiwE,uBACzEjwE,EAAMkwE,qBAAsB,EAAIj3E,EAAQ/N,SAAS46D,EAAK,QAEtD,WACE,OAAOzvD,WAAW2J,EAAMmwE,gBACvB,IAGLnwE,EAAMowE,OAAS,WACbpwE,EAAM9Q,MAAMisB,QAAQ/oB,OAAOk9E,EAAuBA,EAAuBtvE,KAEzEA,EAAMgwE,wBAENhwE,EAAMkwE,sBAEFlwE,EAAM9Q,MAAMmhF,cACdrwE,EAAMswE,oBAIVtwE,EAAMuwE,aAAe,SAAUp0E,GAC7B6D,EAAMd,OAAS/C,GAGjB6D,EAAMwwE,eAAiB,SAAUr0E,GAC/B6D,EAAMf,SAAW9C,GAAOyyE,EAAU1jF,QAAQyV,YAAYxE,IAGxD6D,EAAMywE,aAAe,WAQjB,IAAIC,GAPN1wE,EAAMoB,SAAS,CACbwuE,QAAQ,IAGV5vE,EAAMowE,SAEFpwE,EAAM9Q,MAAMyhF,YAGbD,EAAc1wE,EAAM9Q,OAAOyhF,SAAS5mF,MAAM2mF,EAAa9mF,YAI5DoW,EAAM4wE,oBAAsB,SAAUxkF,GAChCA,EAAEzC,SAAWyC,EAAE0gF,gBAIf9sE,EAAM9Q,MAAM2hF,iBACd7wE,EAAM9Q,MAAM2hF,gBAAgBzkF,IAGD,IAAzB4T,EAAM9Q,MAAM+P,UACde,EAAM9Q,MAAMkhF,WAIhBpwE,EAAMiwE,sBAAwB,SAAU7jF,GAClC4T,EAAM9Q,MAAM4hF,UAA0B,KAAd1kF,EAAE+8D,SAAkBnpD,EAAMZ,eAChDY,EAAM9Q,MAAM6hF,iBACd/wE,EAAM9Q,MAAM6hF,gBAAgB3kF,GAG9B4T,EAAM9Q,MAAMkhF,WAIhBpwE,EAAMmwE,aAAe,WACnB,GAAKnwE,EAAM9Q,MAAMihF,cAAiBnwE,EAAMgxE,YAAehxE,EAAMZ,aAA7D,CAIA,IAAI6xE,GAAuB,EAAIpC,EAAe3jF,UAAS,EAAImkF,EAAenkF,SAASokF,EAAuBA,EAAuBtvE,MAE7HA,EAAMd,UAAW,EAAI4vE,EAAU5jF,SAAS8U,EAAMd,OAAQ+xE,IACxDjxE,EAAMd,OAAOkqB,UAIjBppB,EAAMkxE,eAAiB,WACrB,IAAIC,EAAenxE,EAAM9Q,MACrBgiF,EAAiBC,EAAaD,eAC9BE,EAAaD,EAAaE,mBAC1BpyE,EAAWiyE,EAAe,CAC5B/0E,IAAK6D,EAAMwwE,eACX7gE,QAAS3P,EAAM4wE,sBAUjB,OAPIQ,IACFnyE,EAAW7C,EAAOlR,QAAQ4B,cAAcskF,EAAY,CAClDE,QAAQ,EACRtjE,GAAIhO,EAAM9Q,MAAMqzB,MACftjB,IAGEA,GAGFe,EAxKuBzU,EAyCVmkF,GAzCApkF,EAyCPmkF,GAzCwCrmF,UAAYlB,OAAOY,OAAOyC,EAAWnC,WAAYkC,EAASlC,UAAUoC,YAAcF,EAAUA,EAASG,UAAYF,EA2KxKkkF,EAAMluE,yBAA2B,SAAkCgwE,GACjE,OAAIA,EAAUhvD,KACL,CACLqtD,QAAQ,GAEA2B,EAAUC,WAOf,KALE,CACL5B,QAAQ,IAOd,IAAInyE,EAASgyE,EAAMrmF,UAwHnB,OAtHAqU,EAAOg0E,wBAA0B,SAAiCC,GAKhE,OAJIvjF,EAAOjD,UAAYwmF,EAAUnvD,MAAQv4B,KAAKkF,MAAMqzB,OAClDv4B,KAAK2nF,WAAY,EAAI9C,EAAe3jF,YAG/B,MAGTuS,EAAOgD,kBAAoB,WACzBzW,KAAKgnF,YAAa,EAEdhnF,KAAKkF,MAAMqzB,MACbv4B,KAAK8lF,UAITryE,EAAOgE,mBAAqB,SAA4BiwE,GACtD,IAAIF,EAAaxnF,KAAKkF,MAAMsiF,YAExBE,EAAUnvD,MAASv4B,KAAKkF,MAAMqzB,MAASivD,GAG/BE,EAAUnvD,MAAQv4B,KAAKkF,MAAMqzB,MACvCv4B,KAAK8lF,SAFL9lF,KAAKomF,UAMT3yE,EAAO4D,qBAAuB,WAC5B,IAAIuwE,EAAe5nF,KAAKkF,MACpBqzB,EAAOqvD,EAAarvD,KACpBivD,EAAaI,EAAaJ,WAC9BxnF,KAAKgnF,YAAa,GAEdzuD,GAAQivD,IAAexnF,KAAK4K,MAAMg7E,SACpC5lF,KAAKomF,UAIT3yE,EAAO0F,UAAY,WACjB,GAAKnZ,KAAKkF,MAAMiU,UAAhB,CACA,IAAI8tE,GAAuB,EAAIpC,EAAe3jF,UAAS,EAAImkF,EAAenkF,SAASlB,OAE/EA,KAAKkV,UAAW,EAAI4vE,EAAU5jF,SAASlB,KAAKkV,OAAQ+xE,KACtDjnF,KAAK2nF,UAAYV,EACjBjnF,KAAKkV,OAAOkqB,WAIhB3rB,EAAO6yE,iBAAmB,WAEpBtmF,KAAK2nF,WAAa3nF,KAAK2nF,UAAUvoD,QACnCp/B,KAAK2nF,UAAUvoD,QACfp/B,KAAK2nF,UAAY,OAIrBl0E,EAAO2B,WAAa,WAClB,OAAOpV,KAAKkF,MAAMisB,QAAQ/b,WAAWpV,OAGvCyT,EAAO5M,OAAS,WACd,IAAIghF,EAAe7nF,KAAKkF,MACpBqzB,EAAOsvD,EAAatvD,KACpBnkB,EAAYyzE,EAAazzE,UACzBlM,EAAW2/E,EAAa3/E,SACxB4/E,EAAeD,EAAaC,aAC5BC,EAAoBF,EAAa/pE,KACjCA,OAA6B,IAAtBiqE,EAA+B,SAAWA,EACjDX,EAAaS,EAAaL,WAC1BvyE,EAAW4yE,EAAa5yE,SACxBR,EAAYozE,EAAapzE,UACzBpQ,EAAQwjF,EAAaxjF,MACrB2jF,EAASH,EAAaG,OACtBC,EAAYJ,EAAaI,UACzBC,EAAUL,EAAaK,QACvBC,EAAaN,EAAaM,WAC1BC,EAAYP,EAAaO,UACzBljF,EA3QR,SAAuCpF,EAAQK,GAAY,GAAc,MAAVL,EAAgB,MAAO,GAAI,IAA2Df,EAAKvB,EAA5DmC,EAAS,GAAQS,EAAalC,OAAOmC,KAAKP,GAAqB,IAAKtC,EAAI,EAAGA,EAAI4C,EAAWP,OAAQrC,IAAOuB,EAAMqB,EAAW5C,GAAQ2C,EAASG,QAAQvB,IAAQ,IAAaY,EAAOZ,GAAOe,EAAOf,IAAQ,OAAOY,EA2Q1RO,CAA8B2nF,EAAc,CAAC,OAAQ,YAAa,WAAY,eAAgB,OAAQ,aAAc,WAAY,YAAa,QAAS,SAAU,YAAa,UAAW,aAAc,cAElN,KAAMtvD,GAAQ6uD,IAAepnF,KAAK4K,MAAMg7E,QACtC,OAAO,KAGT,IAAIyC,EAAc5oF,EAAS,CACzBqe,KAAMA,EACN3L,IAAKnS,KAAKumF,aAEV+B,aAAuB,WAATxqE,QAA2B3c,GA7Q/C,SAAmB+D,EAAO2M,GACxB,IAAIxR,EAAOnC,OAAOmC,KAAK6E,GACnBqjF,EAAW,GAMf,OALAloF,EAAKyJ,IAAI,SAAUyO,GACZra,OAAOkB,UAAUC,eAAe1B,KAAKkU,EAAW0G,KACnDgwE,EAAShwE,GAAQrT,EAAMqT,MAGpBgwE,EAsQFC,CAAUtjF,EAAOugF,EAAM5zE,WAAY,CACpCxN,MAAOA,EACPoQ,UAAWA,EACXwK,SAAU,OAGR/J,EAAS4yE,EAAeA,EAAaO,GAAej2E,EAAOlR,QAAQ4B,cAAc,MAAOulF,EAAaj2E,EAAOlR,QAAQ0F,aAAasB,EAAU,CAC7I4V,KAAM,cAiBR,OAdIspE,IACFlyE,EAAS9C,EAAOlR,QAAQ4B,cAAcskF,EAAY,CAChDE,QAAQ,EACRmB,eAAe,EACfzkE,GAAIuU,EACJyvD,OAAQA,EACRC,UAAWA,EACXtB,SAAU3mF,KAAKymF,aACfyB,QAASA,EACTC,WAAYA,EACZC,UAAWA,GACVlzE,IAGE9C,EAAOlR,QAAQ4B,cAAcqiF,EAAQjkF,QAAS,CACnDkT,UAAWA,EACX5N,WAAYxG,KAAK6lF,kBAChBzzE,EAAOlR,QAAQ4B,cAAcsP,EAAOlR,QAAQwnF,SAAU,KAAMzzE,GAAYjV,KAAKknF,iBAAkBhyE,KAG7FuwE,EA1QT,CA2QErzE,EAAOlR,QAAQ0W,WAEjB6tE,EAAM5zE,UAAY,CAIhB0mB,KAAMwsD,EAAW7jF,QAAQynF,KAQzBv0E,UAAW2wE,EAAW7jF,QAAQ0nF,UAAU,CAAC5D,EAAoB9jF,QAAS6jF,EAAW7jF,QAAQye,OAKzFmmE,OAAQf,EAAW7jF,QAAQye,KAQ3BymE,OAAQrB,EAAW7jF,QAAQye,KAK3B1K,SAAU8vE,EAAW7jF,QAAQ0nF,UAAU,CAAC7D,EAAW7jF,QAAQynF,KAAM5D,EAAW7jF,QAAQ2nF,MAAM,CAAC,aAU3Ff,aAAc/C,EAAW7jF,QAAQye,KAUjCunE,eAAgBnC,EAAW7jF,QAAQye,KAKnConE,gBAAiBhC,EAAW7jF,QAAQye,KAKpCknE,gBAAiB9B,EAAW7jF,QAAQye,KAMpComE,mBAAoBhB,EAAW7jF,QAAQoR,OAKvCw0E,SAAU/B,EAAW7jF,QAAQynF,KAM7BnB,WAAYvC,EAAa/jF,QAMzBmmF,mBAAoBpC,EAAa/jF,QAUjCiY,UAAW4rE,EAAW7jF,QAAQynF,KAQ9BxC,aAAcpB,EAAW7jF,QAAQynF,KAMjCtC,aAActB,EAAW7jF,QAAQynF,KAKjCT,QAASnD,EAAW7jF,QAAQye,KAK5BwoE,WAAYpD,EAAW7jF,QAAQye,KAK/ByoE,UAAWrD,EAAW7jF,QAAQye,KAK9BqoE,OAAQjD,EAAW7jF,QAAQye,KAK3BsoE,UAAWlD,EAAW7jF,QAAQye,KAK9BgnE,SAAU5B,EAAW7jF,QAAQye,KAM7BwR,QAAS4zD,EAAW7jF,QAAQhC,OAAOiS,YAErCs0E,EAAM3zE,aAAe,CACnBymB,MAAM,EACNza,KAAM,SACN7I,UAAU,EACV6xE,UAAU,EACV3tE,WAAW,EACXgtE,cAAc,EACdE,cAAc,EACdD,OAAQ,aACRj1D,QAASq0D,EACT0B,eAAgB,SAAwBhiF,GACtC,OAAOkN,EAAOlR,QAAQ4B,cAAc,MAAOoC,KAG/CugF,EAAMqD,QAAU5D,EAAchkF,QAC9B,IAAIyB,EAAW8iF,EACfnoF,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAQ4D,sCC1fzB,IAAI8C,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAIwE,EAAc1B,EAAuBxE,EAAQ,KAE7CoT,EAAS5O,EAAuBxE,EAAQ,KAE5C,SAASomB,EAAM9hB,EAAM4+E,EAASl5E,GAC5B,IAIIu/E,EAJAC,EAAY,CACdrpF,OAAQmE,EACRg/E,cAAeh/E,GAYjB,SAASmlF,EAAK/7E,GACRA,EAAMvN,SAAWuN,EAAM41E,gBAC3Bj1E,aAAak7E,GACb77E,EAAMvN,OAAO+/D,oBAAoBh6D,EAAYxE,QAAQuhB,IAAKwmE,GAC1DvG,EAAQ/kF,KAAKqC,OAbV0F,EAAYxE,QAAQuhB,IAAuC,MAAZjZ,IAAkBA,EAAW0/E,EAAcplF,IAAS,GAA1E0F,EAAW,EAErC9D,EAAYxE,QAAQuhB,KACtB3e,EAAK05B,iBAAiB93B,EAAYxE,QAAQuhB,IAAKwmE,GAAM,GACrDF,EAAS18E,WAAW,WAClB,OAAO48E,EAAKD,IACS,KAAnBx/E,GAAY,OACX6C,WAAW48E,EAAKjqF,KAAK,KAAMgqF,GAAY,GAUhDpjE,EAAMujE,eAAiBD,EACvB,IAAIvmF,EAAWijB,EAGf,SAASsjE,EAAcplF,GACrB,IAAIslF,GAAM,EAAIx2E,EAAO1R,SAAS4C,EAAM4B,EAAYxE,QAAQsI,UACpD6/E,GAA8B,IAAvBD,EAAI9oF,QAAQ,MAAe,IAAO,EAC7C,OAAOiM,WAAW68E,GAAOC,EAL3B/rF,EAAQ4D,QAAUyB,EAQlBpF,EAAOD,QAAUA,EAAO,sCC1CxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QA0ER,SAA2BooF,EAAWC,EAAY3xE,GAChD,OAAyB,IAArBhY,UAAUC,OAAqB2pF,EAAmBF,EAAWC,GAC1DC,EAAmB,CACxBC,UAAWH,EACXC,WAAYA,GACX3xE,IA7EL,IAAIxF,EAASpO,EAAuBxE,EAAQ,IAExCkqF,EAAc1lF,EAAuBxE,EAAQ,KAEjD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF,SAAS3B,IAA2Q,OAA9PA,EAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,IAA2BI,MAAMC,KAAMJ,WAEhT,IAAI+pF,EAAiB,SAAwB/xE,GAC3C,IAAI7Z,EAA4B,iBAAd6Z,EAAyBA,EAAYA,EAAU7Z,MAAQ6Z,EAAU1F,YACnF,OAAOnU,EAAO,oBAAsBA,EAAO,IAAM,oBAG/C6rF,EAAiB,SAAwB/rF,GAC3C,OAAOA,EAAEgsF,UAAYhsF,GAGvB,SAAS2rF,EAAmB53E,EAAMgG,GAChC,IAAIkyE,EAAwBl4E,EAAK63E,UAC7BF,EAAa33E,EAAK23E,WAClBr3E,EAAcN,EAAKM,YACnB63E,EAAoBn4E,EAAKo4E,aACzBA,OAAqC,IAAtBD,EAA+B,MAAQA,EACtDN,EAAYK,EAEXhpF,MAAMC,QAAQ+oF,KACjBL,EAAY,CAACK,IAGf,IAAIG,EAAiBL,EAAeH,EAAU,IAqC9C,IAAIS,EAAwC,IAArBT,EAAU5pF,OAnCjC,SAAsBqF,EAAOiN,GAC3B,IAAIg4E,EAEAC,EAAe3qF,IAAU0qF,EAAY,IAAcH,GAAgB73E,EAAKg4E,GAAYjlF,GAExF,OAAOkN,EAAOlR,QAAQ4B,cAAcmnF,EAAgB,KAAM,SAAUxrF,GAClE,OAAO2T,EAAOlR,QAAQ4B,cAAc8U,EAAWnY,EAAS,GAAI2qF,EAAcb,EAAW9qF,EAAOyG,QAIhG,SAAqBA,EAAOiN,GAC1B,IAAIk4E,EAEAD,EAAe3qF,IAAU4qF,EAAY,IAAcL,GAAgB73E,EAAKk4E,GAAYnlF,GAExF,OAAOukF,EAAUa,YAAY,SAAUtpF,EAAOupF,GAC5C,OAAO,WACL,IAAK,IAAIj5E,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzB,IAAIs4E,EAAWD,EAAeW,GAC9B,OAAOn4E,EAAOlR,QAAQ4B,cAAc+mF,EAAU,KAAM,SAAUprF,GAC5D,OAAOuC,EAAMjB,WAAM,EAAQwC,EAAKiP,OAAO,CAAC/S,SAG3C,WACD,IAAK,IAAI+rF,EAAQ5qF,UAAUC,OAAQ4qF,EAAW,IAAI3pF,MAAM0pF,GAAQ9R,EAAQ,EAAGA,EAAQ8R,EAAO9R,IACxF+R,EAAS/R,GAAS94E,UAAU84E,GAG9B,OAAOtmE,EAAOlR,QAAQ4B,cAAc8U,EAAWnY,EAAS,GAAI2qF,EAAcb,EAAWxpF,WAAM,EAAQ0qF,EAASj5E,OAAO,CAACtM,QAhB/GukF,IAqBT,OAAO,EAAIC,EAAYxoF,SAASgpF,EAAkB,CAChDh4E,YAAaA,GAAey3E,EAAe/xE,uBCzE/C,IAAI8yE,EAAUlrF,EAAQ,IAKtBjC,EAAOD,QAAUqtF,EACjBptF,EAAOD,QAAQ2I,MAAQA,EACvB1I,EAAOD,QAAQstF,QAsGf,SAAkBxB,EAAKvhF,GACrB,OAAOgjF,EAAiB5kF,EAAMmjF,EAAKvhF,KAtGrCtK,EAAOD,QAAQutF,iBAAmBA,EAClCttF,EAAOD,QAAQwtF,eAAiBA,EAOhC,IAAIC,EAAc,IAAIlkB,OAAO,CAG3B,UAOA,0GACA5lE,KAAK,KAAM,KASb,SAASgF,EAAOmjF,EAAKvhF,GAQnB,IAPA,IAKImjF,EALAC,EAAS,GACTlsF,EAAM,EACNk0B,EAAQ,EACR9L,EAAO,GACP+jE,EAAmBrjF,GAAWA,EAAQizD,WAAa,IAGf,OAAhCkwB,EAAMD,EAAYI,KAAK/B,KAAe,CAC5C,IAAIxrF,EAAIotF,EAAI,GACRI,EAAUJ,EAAI,GACdzlE,EAASylE,EAAI/3D,MAKjB,GAJA9L,GAAQiiE,EAAI/lF,MAAM4vB,EAAO1N,GACzB0N,EAAQ1N,EAAS3nB,EAAEiC,OAGfurF,EACFjkE,GAAQikE,EAAQ,OADlB,CAKA,IAAIj1C,EAAOizC,EAAIn2D,GACXw2B,EAASuhC,EAAI,GACbjtF,EAAOitF,EAAI,GACXrI,EAAUqI,EAAI,GACd13C,EAAQ03C,EAAI,GACZK,EAAWL,EAAI,GACfM,EAAWN,EAAI,GAGf7jE,IACF8jE,EAAOpqF,KAAKsmB,GACZA,EAAO,IAGT,IAAIokE,EAAoB,MAAV9hC,GAA0B,MAARtT,GAAgBA,IAASsT,EACrD+hC,EAAsB,MAAbH,GAAiC,MAAbA,EAC7BI,EAAwB,MAAbJ,GAAiC,MAAbA,EAC/BvwB,EAAYkwB,EAAI,IAAME,EACtB7tE,EAAUslE,GAAWrvC,EAEzB23C,EAAOpqF,KAAK,CACV9C,KAAMA,GAAQgB,IACd0qD,OAAQA,GAAU,GAClBqR,UAAWA,EACX2wB,SAAUA,EACVD,OAAQA,EACRD,QAASA,EACTD,WAAYA,EACZjuE,QAASA,EAAUquE,EAAYruE,GAAYiuE,EAAW,KAAO,KAAOK,EAAa7wB,GAAa,SAclG,OATI7nC,EAAQm2D,EAAIvpF,SACdsnB,GAAQiiE,EAAI/O,OAAOpnD,IAIjB9L,GACF8jE,EAAOpqF,KAAKsmB,GAGP8jE,EAoBT,SAASW,EAA0BxC,GACjC,OAAOyC,UAAUzC,GAAK3mF,QAAQ,UAAW,SAAU5E,GACjD,MAAO,IAAMA,EAAE8/D,WAAW,GAAG59C,SAAS,IAAIrN,gBAmB9C,SAASm4E,EAAkBI,GAKzB,IAHA,IAAI9jC,EAAU,IAAIrmD,MAAMmqF,EAAOprF,QAGtBrC,EAAI,EAAGA,EAAIytF,EAAOprF,OAAQrC,IACR,iBAAdytF,EAAOztF,KAChB2pD,EAAQ3pD,GAAK,IAAIqpE,OAAO,OAASokB,EAAOztF,GAAG6f,QAAU,OAIzD,OAAO,SAAUjc,EAAK0qF,GAMpB,IALA,IAAI3kE,EAAO,GACP5T,EAAOnS,GAAO,GAEd2qF,GADUD,GAAQ,IACDE,OAASJ,EAA2Bv+B,mBAEhD7vD,EAAI,EAAGA,EAAIytF,EAAOprF,OAAQrC,IAAK,CACtC,IAAIyuF,EAAQhB,EAAOztF,GAEnB,GAAqB,iBAAVyuF,EAAX,CAMA,IACIC,EADAztF,EAAQ8U,EAAK04E,EAAMluF,MAGvB,GAAa,MAATU,EAAe,CACjB,GAAIwtF,EAAMR,SAAU,CAEdQ,EAAMV,UACRpkE,GAAQ8kE,EAAMxiC,QAGhB,SAEA,MAAM,IAAIj6C,UAAU,aAAey8E,EAAMluF,KAAO,mBAIpD,GAAI2sF,EAAQjsF,GAAZ,CACE,IAAKwtF,EAAMT,OACT,MAAM,IAAIh8E,UAAU,aAAey8E,EAAMluF,KAAO,kCAAoCiI,KAAKE,UAAUzH,GAAS,KAG9G,GAAqB,IAAjBA,EAAMoB,OAAc,CACtB,GAAIosF,EAAMR,SACR,SAEA,MAAM,IAAIj8E,UAAU,aAAey8E,EAAMluF,KAAO,qBAIpD,IAAK,IAAI43D,EAAI,EAAGA,EAAIl3D,EAAMoB,OAAQ81D,IAAK,CAGrC,GAFAu2B,EAAUH,EAAOttF,EAAMk3D,KAElBxO,EAAQ3pD,GAAG+F,KAAK2oF,GACnB,MAAM,IAAI18E,UAAU,iBAAmBy8E,EAAMluF,KAAO,eAAiBkuF,EAAM5uE,QAAU,oBAAsBrX,KAAKE,UAAUgmF,GAAW,KAGvI/kE,IAAe,IAANwuC,EAAUs2B,EAAMxiC,OAASwiC,EAAMnxB,WAAaoxB,OApBzD,CA4BA,GAFAA,EAAUD,EAAMX,SA5EbO,UA4EuCptF,GA5ExBgE,QAAQ,QAAS,SAAU5E,GAC/C,MAAO,IAAMA,EAAE8/D,WAAW,GAAG59C,SAAS,IAAIrN,gBA2EWq5E,EAAOttF,IAErD0oD,EAAQ3pD,GAAG+F,KAAK2oF,GACnB,MAAM,IAAI18E,UAAU,aAAey8E,EAAMluF,KAAO,eAAiBkuF,EAAM5uE,QAAU,oBAAsB6uE,EAAU,KAGnH/kE,GAAQ8kE,EAAMxiC,OAASyiC,QArDrB/kE,GAAQ8kE,EAwDZ,OAAO9kE,GAUX,SAASwkE,EAAcvC,GACrB,OAAOA,EAAI3mF,QAAQ,6BAA8B,QASnD,SAASipF,EAAap4C,GACpB,OAAOA,EAAM7wC,QAAQ,gBAAiB,QAUxC,SAAS0pF,EAAYC,EAAI/rF,GAEvB,OADA+rF,EAAG/rF,KAAOA,EACH+rF,EAST,SAASC,EAAOxkF,GACd,OAAOA,EAAQykF,UAAY,GAAK,IAwElC,SAASxB,EAAgBG,EAAQ5qF,EAAMwH,GAChC6iF,EAAQrqF,KACXwH,EAAkCxH,GAAQwH,EAC1CxH,EAAO,IAUT,IALA,IAAIksF,GAFJ1kF,EAAUA,GAAW,IAEA0kF,OACjB9pE,GAAsB,IAAhB5a,EAAQ4a,IACd+pE,EAAQ,GAGHhvF,EAAI,EAAGA,EAAIytF,EAAOprF,OAAQrC,IAAK,CACtC,IAAIyuF,EAAQhB,EAAOztF,GAEnB,GAAqB,iBAAVyuF,EACTO,GAASb,EAAaM,OACjB,CACL,IAAIxiC,EAASkiC,EAAaM,EAAMxiC,QAC5Bk5B,EAAU,MAAQsJ,EAAM5uE,QAAU,IAEtChd,EAAKQ,KAAKorF,GAENA,EAAMT,SACR7I,GAAW,MAAQl5B,EAASk5B,EAAU,MAaxC6J,GANI7J,EAJAsJ,EAAMR,SACHQ,EAAMV,QAGC9hC,EAAS,IAAMk5B,EAAU,KAFzB,MAAQl5B,EAAS,IAAMk5B,EAAU,MAKnCl5B,EAAS,IAAMk5B,EAAU,KAOzC,IAAI7nB,EAAY6wB,EAAa9jF,EAAQizD,WAAa,KAC9C2xB,EAAoBD,EAAMnpF,OAAOy3D,EAAUj7D,UAAYi7D,EAkB3D,OAZKyxB,IACHC,GAASC,EAAoBD,EAAMnpF,MAAM,GAAIy3D,EAAUj7D,QAAU2sF,GAAS,MAAQ1xB,EAAY,WAI9F0xB,GADE/pE,EACO,IAIA8pE,GAAUE,EAAoB,GAAK,MAAQ3xB,EAAY,MAG3DqxB,EAAW,IAAItlB,OAAO,IAAM2lB,EAAOH,EAAMxkF,IAAWxH,GAe7D,SAASsqF,EAAcxjE,EAAM9mB,EAAMwH,GAQjC,OAPK6iF,EAAQrqF,KACXwH,EAAkCxH,GAAQwH,EAC1CxH,EAAO,IAGTwH,EAAUA,GAAW,GAEjBsf,aAAgB0/C,OAlJtB,SAAyB1/C,EAAM9mB,GAE7B,IAAIykD,EAAS39B,EAAKrnB,OAAOoyB,MAAM,aAE/B,GAAI4yB,EACF,IAAK,IAAItnD,EAAI,EAAGA,EAAIsnD,EAAOjlD,OAAQrC,IACjC6C,EAAKQ,KAAK,CACR9C,KAAMP,EACNisD,OAAQ,KACRqR,UAAW,KACX2wB,UAAU,EACVD,QAAQ,EACRD,SAAS,EACTD,UAAU,EACVjuE,QAAS,OAKf,OAAO8uE,EAAWhlE,EAAM9mB,GAgIfqsF,CAAevlE,EAA6B9mB,GAGjDqqF,EAAQvjE,GAxHd,SAAwBA,EAAM9mB,EAAMwH,GAGlC,IAFA,IAAIo6E,EAAQ,GAEHzkF,EAAI,EAAGA,EAAI2pB,EAAKtnB,OAAQrC,IAC/BykF,EAAMphF,KAAK8pF,EAAaxjE,EAAK3pB,GAAI6C,EAAMwH,GAAS/H,QAKlD,OAAOqsF,EAFM,IAAItlB,OAAO,MAAQob,EAAMhhF,KAAK,KAAO,IAAKorF,EAAMxkF,IAEnCxH,GAgHjBssF,CAAqCxlE,EAA8B9mB,EAAOwH,GArGrF,SAAyBsf,EAAM9mB,EAAMwH,GACnC,OAAOijF,EAAe7kF,EAAMkhB,EAAMtf,GAAUxH,EAAMwH,GAuG3C+kF,CAAsCzlE,EAA8B9mB,EAAOwH;;;;;;;;GC/ZvE,IAAIsc,EAAE3kB,EAAQ,IAAiBP,EAAE,mBAAoBV,QAAQA,OAAOsc,IAAIvb,EAAEL,EAAEV,OAAOsc,IAAI,iBAAiB,MAAMgyE,EAAE5tF,EAAEV,OAAOsc,IAAI,gBAAgB,MAAMvc,EAAEW,EAAEV,OAAOsc,IAAI,kBAAkB,MAAMnc,EAAEO,EAAEV,OAAOsc,IAAI,qBAAqB,MAAMiyE,EAAE7tF,EAAEV,OAAOsc,IAAI,kBAAkB,MAAMkyE,EAAE9tF,EAAEV,OAAOsc,IAAI,kBAAkB,MAAMmyE,EAAE/tF,EAAEV,OAAOsc,IAAI,iBAAiB,MAAMoQ,EAAEhsB,EAAEV,OAAOsc,IAAI,yBAAyB,MAAM2Q,EAAEvsB,EAAEV,OAAOsc,IAAI,qBAAqB,MAAM+Q,EAAE3sB,EAAEV,OAAOsc,IAAI,kBAAkB,MAAMoyE,EAAGhuF,EAAEV,OAAOsc,IAAI,cACpf,MAAMqyE,EAAGjuF,EAAEV,OAAOsc,IAAI,cAAc,MAAMsyE,EAAE,mBAAoB5uF,QAAQA,OAAO+R,SAC/E,SAAS88E,EAAElrF,GAAG,IAAI,IAAIC,EAAEvC,UAAUC,OAAO,EAAE/B,EAAE,yDAAyDoE,EAAErE,EAAE,EAAEA,EAAEsE,EAAEtE,IAAIC,GAAG,WAAWuvD,mBAAmBztD,UAAU/B,EAAE,KADzE,SAAYqE,EAAEC,EAAErE,EAAED,EAAEuE,EAAEirF,EAAEC,EAAEjrF,GAAG,IAAIH,EAAE,CAAU,GAATA,OAAE,OAAU,IAASC,EAAED,EAAEI,MAAM,qIAAqI,CAAC,IAAI7E,EAAE,CAACK,EAAED,EAAEuE,EAAEirF,EAAEC,EAAEjrF,GAAGzE,EAAE,GAAEsE,EAAEI,MAAMH,EAAEM,QAAQ,MAAM,WAAW,OAAOhF,EAAEG,SAAUG,KAAK,sBAAsC,MAAhBmE,EAAEQ,YAAY,EAAQR,GAC3PqrF,EAAG,EAAG,yBAAyBrrF,EAAE,4HAA4HpE,GAAG,IAAI0vF,EAAE,CAACC,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAcC,EAAE,GAC5c,SAASC,EAAE5rF,EAAEC,EAAErE,GAAGkC,KAAKkF,MAAMhD,EAAElC,KAAKgjF,QAAQ7gF,EAAEnC,KAAK+tF,KAAKF,EAAE7tF,KAAKguF,QAAQlwF,GAAG0vF,EAAsR,SAASS,KAA6B,SAASC,EAAEhsF,EAAEC,EAAErE,GAAGkC,KAAKkF,MAAMhD,EAAElC,KAAKgjF,QAAQ7gF,EAAEnC,KAAK+tF,KAAKF,EAAE7tF,KAAKguF,QAAQlwF,GAAG0vF,EAApYM,EAAE1uF,UAAU+uF,iBAAiB,GAAGL,EAAE1uF,UAAUgY,SAAS,SAASlV,EAAEC,GAAG,iBAAkBD,GAAG,mBAAoBA,GAAG,MAAMA,GAAEkrF,EAAE,MAAaptF,KAAKguF,QAAQJ,gBAAgB5tF,KAAKkC,EAAEC,EAAE,aAAa2rF,EAAE1uF,UAAUgvF,YAAY,SAASlsF,GAAGlC,KAAKguF,QAAQN,mBAAmB1tF,KAAKkC,EAAE,gBAA8B+rF,EAAE7uF,UAAU0uF,EAAE1uF,UAAsF,IAAIivF,EAAEH,EAAE9uF,UAAU,IAAI6uF,EACxeI,EAAE7sF,YAAY0sF,EAAE/pE,EAAEkqE,EAAEP,EAAE1uF,WAAWivF,EAAEC,sBAAqB,EAAG,IAAIC,EAAE,CAAC9sB,QAAQ,MAAM+sB,EAAE,CAAC/sB,QAAQ,MAAMgtB,EAAEvwF,OAAOkB,UAAUC,eAAeuiF,EAAE,CAAC7iF,KAAI,EAAGoT,KAAI,EAAGu8E,QAAO,EAAGC,UAAS,GACvK,SAASC,EAAE1sF,EAAEC,EAAErE,GAAG,IAAID,OAAE,EAAOuE,EAAE,GAAGirF,EAAE,KAAKC,EAAE,KAAK,GAAG,MAAMnrF,EAAE,IAAItE,UAAK,IAASsE,EAAEgQ,MAAMm7E,EAAEnrF,EAAEgQ,UAAK,IAAShQ,EAAEpD,MAAMsuF,EAAE,GAAGlrF,EAAEpD,KAAKoD,EAAEssF,EAAE9wF,KAAKwE,EAAEtE,KAAK+jF,EAAEviF,eAAexB,KAAKuE,EAAEvE,GAAGsE,EAAEtE,IAAI,IAAIwE,EAAEzC,UAAUC,OAAO,EAAE,GAAG,IAAIwC,EAAED,EAAE8F,SAASpK,OAAO,GAAG,EAAEuE,EAAE,CAAC,IAAI,IAAI5E,EAAEqD,MAAMuB,GAAGzE,EAAE,EAAEA,EAAEyE,EAAEzE,IAAIH,EAAEG,GAAGgC,UAAUhC,EAAE,GAAGwE,EAAE8F,SAASzK,EAAE,GAAGyE,GAAGA,EAAE4P,aAAa,IAAIjU,KAAKwE,EAAEH,EAAE4P,kBAAe,IAAS1P,EAAEvE,KAAKuE,EAAEvE,GAAGwE,EAAExE,IAAI,MAAM,CAACgxF,SAASvvF,EAAEoJ,KAAKxG,EAAEnD,IAAIsuF,EAAEl7E,IAAIm7E,EAAEpoF,MAAM9C,EAAE0sF,OAAON,EAAE/sB,SAC9U,SAASstB,EAAE7sF,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE2sF,WAAWvvF,EAA0G,IAAI4kF,EAAE,OAAO8K,EAAE,GAAG,SAASC,EAAE/sF,EAAEC,EAAErE,EAAED,GAAG,GAAGmxF,EAAEnvF,OAAO,CAAC,IAAIuC,EAAE4sF,EAAElT,MAA8D,OAAxD15E,EAAEie,OAAOne,EAAEE,EAAE8sF,UAAU/sF,EAAEC,EAAEud,KAAK7hB,EAAEsE,EAAE4gF,QAAQnlF,EAAEuE,EAAE8uD,MAAM,EAAS9uD,EAAE,MAAM,CAACie,OAAOne,EAAEgtF,UAAU/sF,EAAEwd,KAAK7hB,EAAEklF,QAAQnlF,EAAEqzD,MAAM,GAC7b,SAASi+B,EAAEjtF,GAAGA,EAAEme,OAAO,KAAKne,EAAEgtF,UAAU,KAAKhtF,EAAEyd,KAAK,KAAKzd,EAAE8gF,QAAQ,KAAK9gF,EAAEgvD,MAAM,EAAE,GAAG89B,EAAEnvF,QAAQmvF,EAAEnuF,KAAKqB,GAE+E,SAASktF,EAAEltF,EAAEC,EAAErE,GAAG,OAAO,MAAMoE,EAAE,EADtN,SAASmtF,EAAEntF,EAAEC,EAAErE,EAAED,GAAG,IAAIuE,SAASF,EAAK,cAAcE,GAAG,YAAYA,IAAEF,EAAE,MAAK,IAAImrF,GAAE,EAAG,GAAG,OAAOnrF,EAAEmrF,GAAE,OAAQ,OAAOjrF,GAAG,IAAK,SAAS,IAAK,SAASirF,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOnrF,EAAE2sF,UAAU,KAAKvvF,EAAE,KAAKutF,EAAEQ,GAAE,GAAI,GAAGA,EAAE,OAAOvvF,EAAED,EAAEqE,EAAE,KAAKC,EAAE,IAAImtF,EAAEptF,EAAE,GAAGC,GAAG,EAAyB,GAAvBkrF,EAAE,EAAElrF,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOrB,MAAMC,QAAQmB,GAAG,IAAI,IAAIorF,EAAE,EAAEA,EAAEprF,EAAErC,OAAOytF,IAAI,CAAQ,IAAIjrF,EAAEF,EAAEmtF,EAAfltF,EAAEF,EAAEorF,GAAeA,GAAGD,GAAGgC,EAAEjtF,EAAEC,EAAEvE,EAAED,QAAQ,GAAiCwE,EAA9B,OAAOH,GAAG,iBAAkBA,EAAI,KAAmC,mBAA7BG,EAAE8qF,GAAGjrF,EAAEirF,IAAIjrF,EAAE,eAAsCG,EAAE,KAAM,mBAAoBA,EAAE,IAAIH,EAAEG,EAAE1E,KAAKuE,GAAGorF,EACpf,IAAIlrF,EAAEF,EAAEi0C,QAAQ8yC,MAA6BoE,GAAGgC,EAA1BjtF,EAAEA,EAAE3D,MAAM4D,EAAEF,EAAEmtF,EAAEltF,EAAEkrF,KAAcxvF,EAAED,OAAO,WAAWuE,GAAWgrF,EAAE,KAAK,oBAAdtvF,EAAE,GAAGoE,GAA+B,qBAAqBhE,OAAOmC,KAAK6B,GAAGjB,KAAK,MAAM,IAAInD,EAAE,IAAK,OAAOuvF,EAAqCgC,CAAEntF,EAAE,GAAGC,EAAErE,GAAG,SAASwxF,EAAEptF,EAAEC,GAAG,MAAM,iBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEnD,IAHjI,SAAgBmD,GAAG,IAAIC,EAAE,CAACgkE,IAAI,KAAKopB,IAAI,MAAM,MAAM,KAAK,GAAGrtF,GAAGO,QAAQ,QAAQ,SAASP,GAAG,OAAOC,EAAED,KAGkCstF,CAAOttF,EAAEnD,KAAKoD,EAAE4d,SAAS,IAAI,SAAS0vE,EAAGvtF,EAAEC,GAAGD,EAAEyd,KAAKhiB,KAAKuE,EAAE8gF,QAAQ7gF,EAAED,EAAEgvD,SAC7W,SAASw+B,EAAGxtF,EAAEC,EAAErE,GAAG,IAAID,EAAEqE,EAAEme,OAAOje,EAAEF,EAAEgtF,UAAUhtF,EAAEA,EAAEyd,KAAKhiB,KAAKuE,EAAE8gF,QAAQ7gF,EAAED,EAAEgvD,SAASpwD,MAAMC,QAAQmB,GAAGytF,EAAEztF,EAAErE,EAAEC,EAAE,SAASoE,GAAG,OAAOA,IAAI,MAAMA,IAAI6sF,EAAE7sF,KAAKA,EAJtJ,SAAYA,EAAEC,GAAG,MAAM,CAAC0sF,SAASvvF,EAAEoJ,KAAKxG,EAAEwG,KAAK3J,IAAIoD,EAAEgQ,IAAIjQ,EAAEiQ,IAAIjN,MAAMhD,EAAEgD,MAAM4pF,OAAO5sF,EAAE4sF,QAIkEc,CAAG1tF,EAAEE,IAAIF,EAAEnD,KAAKoD,GAAGA,EAAEpD,MAAMmD,EAAEnD,IAAI,IAAI,GAAGmD,EAAEnD,KAAK0D,QAAQyhF,EAAE,OAAO,KAAKpmF,IAAID,EAAEgD,KAAKqB,IAAI,SAASytF,EAAEztF,EAAEC,EAAErE,EAAED,EAAEuE,GAAG,IAAIirF,EAAE,GAAG,MAAMvvF,IAAIuvF,GAAG,GAAGvvF,GAAG2E,QAAQyhF,EAAE,OAAO,KAAkBkL,EAAEltF,EAAEwtF,EAAjBvtF,EAAE8sF,EAAE9sF,EAAEkrF,EAAExvF,EAAEuE,IAAa+sF,EAAEhtF,GAAG,SAAS0tF,IAAI,IAAI3tF,EAAEqsF,EAAE9sB,QAAiC,OAAzB,OAAOv/D,GAAEkrF,EAAE,OAAqBlrF,EAC7Y,IAAI4tF,EAAE,CAACC,SAAS,CAACjmF,IAAI,SAAS5H,EAAEC,EAAErE,GAAG,GAAG,MAAMoE,EAAE,OAAOA,EAAE,IAAIrE,EAAE,GAAmB,OAAhB8xF,EAAEztF,EAAErE,EAAE,KAAKsE,EAAErE,GAAUD,GAAG0H,QAAQ,SAASrD,EAAEC,EAAErE,GAAG,GAAG,MAAMoE,EAAE,OAAOA,EAAqBktF,EAAEltF,EAAEutF,EAAvBttF,EAAE8sF,EAAE,KAAK,KAAK9sF,EAAErE,IAAaqxF,EAAEhtF,IAAI+uD,MAAM,SAAShvD,GAAG,OAAOktF,EAAEltF,EAAE,WAAW,OAAO,MAAM,OAAOwB,QAAQ,SAASxB,GAAG,IAAIC,EAAE,GAAqC,OAAlCwtF,EAAEztF,EAAEC,EAAE,KAAK,SAASD,GAAG,OAAOA,IAAWC,GAAG6tF,KAAK,SAAS9tF,GAAwB,OAArB6sF,EAAE7sF,IAAUkrF,EAAE,OAAclrF,IAAI+tF,UAAU,WAAW,MAAM,CAACxuB,QAAQ,OAAO7pD,UAAUk2E,EAAEoC,cAAchC,EAAEiC,cAAc,SAASjuF,EAAEC,GACjV,YADoV,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAAC2sF,SAAS7B,EAAEoD,sBAAsBjuF,EAC7fkuF,cAAcnuF,EAAEouF,eAAepuF,EAAEquF,aAAa,EAAEC,SAAS,KAAK3G,SAAS,OAAQ2G,SAAS,CAAC3B,SAAS9B,EAAE0D,SAASvuF,GAAUA,EAAE2nF,SAAS3nF,GAAGmQ,WAAW,SAASnQ,GAAG,MAAM,CAAC2sF,SAASrjE,EAAE3kB,OAAO3E,IAAIwuF,KAAK,SAASxuF,GAAG,MAAM,CAAC2sF,SAAS3B,EAAGyD,MAAMzuF,EAAE0uF,SAAS,EAAEC,QAAQ,OAAOC,KAAK,SAAS5uF,EAAEC,GAAG,MAAM,CAAC0sF,SAAS5B,EAAGvkF,KAAKxG,EAAE6uF,aAAQ,IAAS5uF,EAAE,KAAKA,IAAI6uF,YAAY,SAAS9uF,EAAEC,GAAG,OAAO0tF,IAAImB,YAAY9uF,EAAEC,IAAI8uF,WAAW,SAAS/uF,EAAEC,GAAG,OAAO0tF,IAAIoB,WAAW/uF,EAAEC,IAAI+uF,UAAU,SAAShvF,EAAEC,GAAG,OAAO0tF,IAAIqB,UAAUhvF,EAAEC,IAAIgvF,oBAAoB,SAASjvF,EACpgBC,EAAErE,GAAG,OAAO+xF,IAAIsB,oBAAoBjvF,EAAEC,EAAErE,IAAIszF,cAAc,aAAaC,gBAAgB,SAASnvF,EAAEC,GAAG,OAAO0tF,IAAIwB,gBAAgBnvF,EAAEC,IAAImvF,QAAQ,SAASpvF,EAAEC,GAAG,OAAO0tF,IAAIyB,QAAQpvF,EAAEC,IAAIovF,WAAW,SAASrvF,EAAEC,EAAErE,GAAG,OAAO+xF,IAAI0B,WAAWrvF,EAAEC,EAAErE,IAAI0zF,OAAO,SAAStvF,GAAG,OAAO2tF,IAAI2B,OAAOtvF,IAAIuvF,SAAS,SAASvvF,GAAG,OAAO2tF,IAAI4B,SAASvvF,IAAIwmF,SAASpqF,EAAEozF,WAAWhzF,EAAEizF,SAAS/lE,EAAE9oB,cAAc8rF,EAAEhoF,aAAa,SAAS1E,EAAEC,EAAErE,GAAG,MAAOoE,GAAckrF,EAAE,MAAMlrF,GAAU,IAAIrE,OAAE,EAAOuE,EAAE+hB,EAAE,GAAGjiB,EAAEgD,OAAOmoF,EAAEnrF,EAAEnD,IAAIuuF,EAAEprF,EAAEiQ,IAAI9P,EAAEH,EAAE4sF,OAAO,GAAG,MACtf3sF,EAAE,MAAC,IAASA,EAAEgQ,MAAMm7E,EAAEnrF,EAAEgQ,IAAI9P,EAAEmsF,EAAE/sB,cAAS,IAASt/D,EAAEpD,MAAMsuF,EAAE,GAAGlrF,EAAEpD,KAAK,IAAItB,OAAE,EAA4D,IAAII,KAAzDqE,EAAEwG,MAAMxG,EAAEwG,KAAKoJ,eAAerU,EAAEyE,EAAEwG,KAAKoJ,cAAuB3P,EAAEssF,EAAE9wF,KAAKwE,EAAEtE,KAAK+jF,EAAEviF,eAAexB,KAAKuE,EAAEvE,QAAG,IAASsE,EAAEtE,SAAI,IAASJ,EAAEA,EAAEI,GAAGsE,EAAEtE,IAAyB,GAAG,KAAxBA,EAAE+B,UAAUC,OAAO,GAAWuC,EAAE8F,SAASpK,OAAO,GAAG,EAAED,EAAE,CAACJ,EAAEqD,MAAMjD,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAED,IAAIH,EAAEG,GAAGgC,UAAUhC,EAAE,GAAGwE,EAAE8F,SAASzK,EAAE,MAAM,CAACoxF,SAASvvF,EAAEoJ,KAAKxG,EAAEwG,KAAK3J,IAAIsuF,EAAEl7E,IAAIm7E,EAAEpoF,MAAM9C,EAAE0sF,OAAOzsF,IAAIuvF,cAAc,SAAS1vF,GAAG,IAAIC,EAAEysF,EAAE5vF,KAAK,KAAKkD,GAAY,OAATC,EAAEuG,KAAKxG,EAASC,GAAG4O,eAAeg+E,EAAEhmF,QAAQ,SACjf8oF,wBAAwB5mE,EAAE6mE,kBAAkBhF,EAAEiF,mDAAmD,CAACC,uBAAuBzD,EAAE0D,kBAAkBzD,EAAE9uF,OAAOykB,IAAI+tE,EAAE,CAAChxF,QAAQ4uF,GAAGqC,EAAED,GAAGpC,GAAGoC,EAAE30F,EAAOD,QAAQ60F,EAAEjxF,SAASixF;;;;;;;;GCZ/L,IAAIlF,EAAGztF,EAAQ,GAASP,EAAEO,EAAQ,IAAiBlB,EAAEkB,EAAQ,IAC1E,SAASyrB,EAAE/oB,GAAG,IAAI,IAAIC,EAAEvC,UAAUC,OAAO,EAAEhC,EAAE,yDAAyDqE,EAAEpE,EAAE,EAAEA,EAAEqE,EAAErE,IAAID,GAAG,WAAWwvD,mBAAmBztD,UAAU9B,EAAE,KAD1E,SAAYoE,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,EAAEgrF,EAAEC,GAAG,IAAIprF,EAAE,CAAU,GAATA,OAAE,OAAU,IAASC,EAAED,EAAEI,MAAM,qIAAqI,CAAC,IAAI7E,EAAE,CAACI,EAAEC,EAAEsE,EAAEC,EAAEgrF,EAAEC,GAAGnpE,EAAE,GAAEjiB,EAAEI,MAAMH,EAAEM,QAAQ,MAAM,WAAW,OAAOhF,EAAE0mB,SAAUpmB,KAAK,sBAAsC,MAAhBmE,EAAEQ,YAAY,EAAQR,GAC1PgrF,EAAG,EAAG,yBAAyBhrF,EAAE,4HAA4HrE,GAAGovF,GAAUhiE,EAAE,OACjV,IAAI2kE,GAAG,EAAGH,EAAG,KAAKC,GAAG,EAAG0C,EAAG,KAAKC,EAAG,CAACxsE,QAAQ,SAAS3jB,GAAG0tF,GAAG,EAAGH,EAAGvtF,IAAI,SAASowF,EAAGpwF,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,EAAEgrF,EAAEC,EAAE7vF,GAAGmyF,GAAG,EAAGH,EAAG,KAD2O,SAAYvtF,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,EAAEgrF,EAAEC,EAAE7vF,GAAG,IAAI0mB,EAAErjB,MAAM1B,UAAUiE,MAAM1F,KAAKiC,UAAU,GAAG,IAAIuC,EAAEpC,MAAMlC,EAAEsmB,GAAG,MAAMvmB,GAAGoC,KAAK6lB,QAAQjoB,KACvVmC,MAAMsyF,EAAGzyF,WAAiJ,IAAI2yF,EAAG,KAAKC,EAAG,GAC9R,SAASC,IAAK,GAAGF,EAAG,IAAI,IAAIrwF,KAAKswF,EAAG,CAAC,IAAIrwF,EAAEqwF,EAAGtwF,GAAGrE,EAAE00F,EAAGjyF,QAAQ4B,GAAyB,IAArB,EAAErE,GAASotB,EAAE,KAAK/oB,IAAOwwF,EAAG70F,GAA4D,IAAI,IAAIC,KAAhEqE,EAAEwwF,eAAqB1nE,EAAE,KAAK/oB,GAAGwwF,EAAG70F,GAAGsE,EAAEtE,EAAEsE,EAAEywF,WAA0B,CAAC,IAAIxwF,OAAE,EAAWC,EAAExE,EAAEC,GAAGuvF,EAAElrF,EAAEmrF,EAAExvF,EAAE+0F,EAAGxzF,eAAeiuF,IAAGriE,EAAE,KAAKqiE,GAAUuF,EAAGvF,GAAGjrF,EAAE,IAAI5E,EAAE4E,EAAEywF,wBAAwB,GAAGr1F,EAAE,CAAC,IAAI2E,KAAK3E,EAAEA,EAAE4B,eAAe+C,IAAI2wF,EAAGt1F,EAAE2E,GAAGirF,EAAEC,GAAGlrF,GAAE,OAAQC,EAAE2wF,kBAAkBD,EAAG1wF,EAAE2wF,iBAAiB3F,EAAEC,GAAGlrF,GAAE,GAAIA,GAAE,EAAGA,GAAS6oB,EAAE,KAAKntB,EAAEoE,KACja,SAAS6wF,EAAG7wF,EAAEC,EAAEtE,GAAGo1F,EAAG/wF,IAAG+oB,EAAE,MAAM/oB,GAAU+wF,EAAG/wF,GAAGC,EAAE+wF,EAAGhxF,GAAGC,EAAEywF,WAAW/0F,GAAGs1F,aAAa,IAAIT,EAAG,GAAGG,EAAG,GAAGI,EAAG,GAAGC,EAAG,GAAGE,EAAG,KAAKrzC,EAAG,KAAKszC,EAAG,KAAK,SAASC,EAAGpxF,EAAEC,EAAEtE,GAAG,IAAIC,EAAEoE,EAAEwG,MAAM,gBAAgBxG,EAAE4gF,cAAcuQ,EAAGx1F,GAFrE,SAAYqE,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,EAAEgrF,EAAEC,EAAE7vF,GAA4B,GAAzB60F,EAAGvyF,MAAMC,KAAKJ,WAAcgwF,EAAG,CAAC,GAAGA,EAAG,CAAC,IAAIzrE,EAAEsrE,EAAGG,GAAG,EAAGH,EAAG,UAAUxkE,EAAE,OAAO9G,OAAE,EAAOurE,IAAKA,GAAG,EAAG0C,EAAGjuE,IAE1DovE,CAAGz1F,EAAEqE,OAAE,EAAOD,GAAGA,EAAE4gF,cAAc,KAAK,SAAS0Q,EAAGtxF,EAAEC,GAA0B,OAAvB,MAAMA,GAAE8oB,EAAE,MAAgB,MAAM/oB,EAASC,EAAKrB,MAAMC,QAAQmB,GAAOpB,MAAMC,QAAQoB,IAAUD,EAAErB,KAAKd,MAAMmC,EAAEC,GAAGD,IAAEA,EAAErB,KAAKsB,GAAUD,GAASpB,MAAMC,QAAQoB,GAAG,CAACD,GAAGsP,OAAOrP,GAAG,CAACD,EAAEC,GACnb,SAASsxF,EAAGvxF,EAAEC,EAAEtE,GAAGiD,MAAMC,QAAQmB,GAAGA,EAAEqD,QAAQpD,EAAEtE,GAAGqE,GAAGC,EAAExE,KAAKE,EAAEqE,GAAG,IAAIwxF,EAAG,KAAK,SAASC,EAAGzxF,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAED,EAAE0xF,mBAAmB/1F,EAAEqE,EAAE2xF,mBAAmB,GAAG/yF,MAAMC,QAAQoB,GAAG,IAAI,IAAIrE,EAAE,EAAEA,EAAEqE,EAAEtC,SAASqC,EAAE4xF,uBAAuBh2F,IAAIw1F,EAAGpxF,EAAEC,EAAErE,GAAGD,EAAEC,SAASqE,GAAGmxF,EAAGpxF,EAAEC,EAAEtE,GAAGqE,EAAE0xF,mBAAmB,KAAK1xF,EAAE2xF,mBAAmB,KAAK3xF,EAAE6xF,gBAAgB7xF,EAAEV,YAAYwyF,QAAQ9xF,IAC7V,IAAI+xF,EAAG,CAACC,uBAAuB,SAAShyF,GAAGqwF,GAAGtnE,EAAE,OAAcsnE,EAAGzxF,MAAM1B,UAAUiE,MAAM1F,KAAKuE,GAAGuwF,KAAM0B,yBAAyB,SAASjyF,GAAG,IAASrE,EAALsE,GAAE,EAAK,IAAItE,KAAKqE,EAAE,GAAGA,EAAE7C,eAAexB,GAAG,CAAC,IAAIC,EAAEoE,EAAErE,GAAG20F,EAAGnzF,eAAexB,IAAI20F,EAAG30F,KAAKC,IAAI00F,EAAG30F,IAAGotB,EAAE,MAAMptB,GAAU20F,EAAG30F,GAAGC,EAAEqE,GAAE,GAAIA,GAAGswF,MAC9Q,SAAS2B,EAAGlyF,EAAEC,GAAG,IAAItE,EAAEqE,EAAEmyF,UAAU,IAAIx2F,EAAE,OAAO,KAAK,IAAIC,EAAEs1F,EAAGv1F,GAAG,IAAIC,EAAE,OAAO,KAAKD,EAAEC,EAAEqE,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,oBAAoBrE,GAAGA,EAAE0c,YAAqB1c,IAAI,YAAboE,EAAEA,EAAEwG,OAAuB,UAAUxG,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGpE,EAAE,MAAMoE,EAAE,QAAQA,GAAE,EAAG,OAAGA,EAAS,MAAKrE,GAAG,mBAAoBA,GAAEotB,EAAE,MAAM9oB,SAAStE,GACteA,GAAE,SAASy2F,EAAGpyF,GAAwC,GAArC,OAAOA,IAAIwxF,EAAGF,EAAGE,EAAGxxF,IAAIA,EAAEwxF,EAAGA,EAAG,KAAQxxF,IAAIuxF,EAAGvxF,EAAEyxF,GAAID,GAAGzoE,EAAE,MAAaykE,GAAI,MAAMxtF,EAAEkwF,EAAG1C,GAAG,EAAG0C,EAAG,KAAKlwF,EAAG,IAAIqyF,EAAGp+E,KAAKE,SAAS0J,SAAS,IAAI1c,MAAM,GAAGmxF,EAAG,2BAA2BD,EAAGE,EAAG,wBAAwBF,EAAG,SAASG,EAAGxyF,GAAG,GAAGA,EAAEsyF,GAAI,OAAOtyF,EAAEsyF,GAAI,MAAMtyF,EAAEsyF,IAAK,KAAGtyF,EAAEoxB,WAA+B,OAAO,KAA3BpxB,EAAEA,EAAEoxB,WAAoC,OAAO,KAAfpxB,EAAEA,EAAEsyF,IAAiBG,KAAK,IAAIzyF,EAAEyyF,IAAIzyF,EAAE,KAAK,SAAS0yF,EAAG1yF,GAAW,QAARA,EAAEA,EAAEsyF,KAAc,IAAItyF,EAAEyyF,KAAK,IAAIzyF,EAAEyyF,IAAI,KAAKzyF,EACjb,SAAS2yF,EAAG3yF,GAAG,GAAG,IAAIA,EAAEyyF,KAAK,IAAIzyF,EAAEyyF,IAAI,OAAOzyF,EAAEmyF,UAAUppE,EAAE,MAAM,SAAS6pE,EAAG5yF,GAAG,OAAOA,EAAEuyF,IAAK,KAAK,SAASM,EAAG7yF,GAAG,GAAGA,EAAEA,EAAE8yF,aAAa9yF,GAAG,IAAIA,EAAEyyF,KAAK,OAAOzyF,GAAI,KAAK,SAAS+yF,EAAG/yF,EAAEC,EAAEtE,IAAMsE,EAAEiyF,EAAGlyF,EAAErE,EAAEq3F,eAAepC,wBAAwB3wF,OAAItE,EAAE+1F,mBAAmBJ,EAAG31F,EAAE+1F,mBAAmBzxF,GAAGtE,EAAEg2F,mBAAmBL,EAAG31F,EAAEg2F,mBAAmB3xF,IAC5U,SAASizF,EAAGjzF,GAAG,GAAGA,GAAGA,EAAEgzF,eAAepC,wBAAwB,CAAC,IAAI,IAAI3wF,EAAED,EAAEkzF,YAAYv3F,EAAE,GAAGsE,GAAGtE,EAAEgD,KAAKsB,GAAGA,EAAE4yF,EAAG5yF,GAAG,IAAIA,EAAEtE,EAAEgC,OAAO,EAAEsC,KAAK8yF,EAAGp3F,EAAEsE,GAAG,WAAWD,GAAG,IAAIC,EAAE,EAAEA,EAAEtE,EAAEgC,OAAOsC,IAAI8yF,EAAGp3F,EAAEsE,GAAG,UAAUD,IAAI,SAASmzF,EAAGnzF,EAAEC,EAAEtE,GAAGqE,GAAGrE,GAAGA,EAAEq3F,eAAelC,mBAAmB7wF,EAAEiyF,EAAGlyF,EAAErE,EAAEq3F,eAAelC,qBAAqBn1F,EAAE+1F,mBAAmBJ,EAAG31F,EAAE+1F,mBAAmBzxF,GAAGtE,EAAEg2F,mBAAmBL,EAAG31F,EAAEg2F,mBAAmB3xF,IAAI,SAASozF,EAAGpzF,GAAGA,GAAGA,EAAEgzF,eAAelC,kBAAkBqC,EAAGnzF,EAAEkzF,YAAY,KAAKlzF,GAChe,SAASqzF,EAAGrzF,GAAGuxF,EAAGvxF,EAAEizF,GAAI,IAAIK,IAAK,oBAAqB5yF,SAASA,OAAOC,WAAWD,OAAOC,SAASC,eAAe,SAAS2yF,EAAGvzF,EAAEC,GAAG,IAAItE,EAAE,GAAkF,OAA/EA,EAAEqE,EAAEsnD,eAAernD,EAAEqnD,cAAc3rD,EAAE,SAASqE,GAAG,SAASC,EAAEtE,EAAE,MAAMqE,GAAG,MAAMC,EAAStE,EAAE,IAAI63F,EAAG,CAACC,aAAaF,EAAG,YAAY,gBAAgBG,mBAAmBH,EAAG,YAAY,sBAAsBI,eAAeJ,EAAG,YAAY,kBAAkBK,cAAcL,EAAG,aAAa,kBAAkBM,EAAG,GAAGC,EAAG,GACnM,SAASC,EAAG/zF,GAAG,GAAG6zF,EAAG7zF,GAAG,OAAO6zF,EAAG7zF,GAAG,IAAIwzF,EAAGxzF,GAAG,OAAOA,EAAE,IAAYrE,EAARsE,EAAEuzF,EAAGxzF,GAAK,IAAIrE,KAAKsE,EAAE,GAAGA,EAAE9C,eAAexB,IAAIA,KAAKm4F,EAAG,OAAOD,EAAG7zF,GAAGC,EAAEtE,GAAG,OAAOqE,EAA9XszF,IAAKQ,EAAGnzF,SAASC,cAAc,OAAOuB,MAAM,mBAAmBzB,gBAAgB8yF,EAAGC,aAAaO,iBAAiBR,EAAGE,mBAAmBM,iBAAiBR,EAAGG,eAAeK,WAAW,oBAAoBtzF,eAAe8yF,EAAGI,cAActO,YACxO,IAAI2O,EAAGF,EAAG,gBAAgBG,EAAGH,EAAG,sBAAsBI,EAAGJ,EAAG,kBAAkBK,GAAGL,EAAG,iBAAiBM,GAAG,sNAAsNxmF,MAAM,KAAKymF,GAAG,KAAKziF,GAAG,KAAK0iF,GAAG,KAC5V,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIv0F,EAAkBpE,EAAhBqE,EAAE4R,GAAGlW,EAAEsE,EAAEtC,OAASuC,EAAE,UAAUo0F,GAAGA,GAAG/3F,MAAM+3F,GAAGlmB,YAAYjuE,EAAED,EAAEvC,OAAO,IAAIqC,EAAE,EAAEA,EAAErE,GAAGsE,EAAED,KAAKE,EAAEF,GAAGA,KAAK,IAAImrF,EAAExvF,EAAEqE,EAAE,IAAIpE,EAAE,EAAEA,GAAGuvF,GAAGlrF,EAAEtE,EAAEC,KAAKsE,EAAEC,EAAEvE,GAAGA,KAAK,OAAO24F,GAAGr0F,EAAEiB,MAAMnB,EAAE,EAAEpE,EAAE,EAAEA,OAAE,GAAQ,SAAS64F,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EAClQ,SAASprE,GAAEtpB,EAAEC,EAAEtE,EAAEC,GAA4F,IAAI,IAAIsE,KAAjGpC,KAAKk1F,eAAehzF,EAAElC,KAAKo1F,YAAYjzF,EAAEnC,KAAK62F,YAAYh5F,EAAEqE,EAAElC,KAAKwB,YAAYs1F,UAAyB50F,EAAE7C,eAAe+C,MAAMD,EAAED,EAAEE,IAAIpC,KAAKoC,GAAGD,EAAEtE,GAAG,WAAWuE,EAAEpC,KAAKL,OAAO7B,EAAEkC,KAAKoC,GAAGvE,EAAEuE,IAAgI,OAA5HpC,KAAK+2F,oBAAoB,MAAMl5F,EAAEm5F,iBAAiBn5F,EAAEm5F,kBAAiB,IAAKn5F,EAAEo5F,aAAaN,GAAGC,GAAG52F,KAAK8zF,qBAAqB8C,GAAU52F,KAGrF,SAASk3F,GAAGh1F,EAAEC,EAAEtE,EAAEC,GAAG,GAAGkC,KAAKm3F,UAAUt3F,OAAO,CAAC,IAAIuC,EAAEpC,KAAKm3F,UAAUrb,MAA2B,OAArB97E,KAAKrC,KAAKyE,EAAEF,EAAEC,EAAEtE,EAAEC,GAAUsE,EAAE,OAAO,IAAIpC,KAAKkC,EAAEC,EAAEtE,EAAEC,GAAG,SAASs5F,GAAGl1F,GAAGA,aAAalC,MAAYirB,EAAE,OAAO/oB,EAAEm1F,aAAa,GAAGr3F,KAAKm3F,UAAUt3F,QAAQG,KAAKm3F,UAAUt2F,KAAKqB,GAC9e,SAASo1F,GAAGp1F,GAAGA,EAAEi1F,UAAU,GAAGj1F,EAAEq1F,UAAUL,GAAGh1F,EAAE8xF,QAAQoD,GAHvDn4F,EAAEusB,GAAEpsB,UAAU,CAAC21C,eAAe,WAAW/0C,KAAKg3F,kBAAiB,EAAG,IAAI90F,EAAElC,KAAK62F,YAAY30F,IAAIA,EAAE6yC,eAAe7yC,EAAE6yC,iBAAiB,kBAAmB7yC,EAAE+0F,cAAc/0F,EAAE+0F,aAAY,GAAIj3F,KAAK+2F,mBAAmBJ,KAAKxpF,gBAAgB,WAAW,IAAIjL,EAAElC,KAAK62F,YAAY30F,IAAIA,EAAEiL,gBAAgBjL,EAAEiL,kBAAkB,kBAAmBjL,EAAEkL,eAAelL,EAAEkL,cAAa,GAAIpN,KAAK8zF,qBAAqB6C,KAAKa,QAAQ,WAAWx3F,KAAK+zF,aAAa4C,IAAI5C,aAAa6C,GAAGS,WAAW,WAAW,IACpdl1F,EADwdD,EAAElC,KAAKwB,YAAYs1F,UACze,IAAI30F,KAAKD,EAAElC,KAAKmC,GAAG,KAAKnC,KAAK62F,YAAY72F,KAAKo1F,YAAYp1F,KAAKk1F,eAAe,KAAKl1F,KAAK8zF,qBAAqB9zF,KAAK+2F,mBAAmBH,GAAG52F,KAAK6zF,mBAAmB7zF,KAAK4zF,mBAAmB,QAAQpoE,GAAEsrE,UAAU,CAACpuF,KAAK,KAAK/I,OAAO,KAAKmjF,cAAc,WAAW,OAAO,MAAM2U,WAAW,KAAKC,QAAQ,KAAKC,WAAW,KAAKC,UAAU,SAAS11F,GAAG,OAAOA,EAAE01F,WAAW9sF,KAAK+sF,OAAOb,iBAAiB,KAAKc,UAAU,MAC9YtsE,GAAEzhB,OAAO,SAAS7H,GAAG,SAASC,KAAK,SAAStE,IAAI,OAAOC,EAAEiC,MAAMC,KAAKJ,WAAW,IAAI9B,EAAEkC,KAAKmC,EAAE/C,UAAUtB,EAAEsB,UAAU,IAAIgD,EAAE,IAAID,EAAmH,OAAjHlD,EAAEmD,EAAEvE,EAAEuB,WAAWvB,EAAEuB,UAAUgD,EAAEvE,EAAEuB,UAAUoC,YAAY3D,EAAEA,EAAEi5F,UAAU73F,EAAE,GAAGnB,EAAEg5F,UAAU50F,GAAGrE,EAAEkM,OAAOjM,EAAEiM,OAAOutF,GAAGz5F,GAAUA,GAAGy5F,GAAG9rE,IAClM,IAAIusE,GAAGvsE,GAAEzhB,OAAO,CAACwJ,KAAK,OAAOykF,GAAGxsE,GAAEzhB,OAAO,CAACwJ,KAAK,OAAO0kF,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG1C,GAAI,qBAAqB5yF,OAAOu1F,GAAG,KAAK3C,GAAI,iBAAiB3yF,WAAWs1F,GAAGt1F,SAASu1F,cACvN,IAAIC,GAAG7C,GAAI,cAAc5yF,SAASu1F,GAAGG,GAAG9C,KAAM0C,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAG7oF,OAAOG,aAAa,IAAI2oF,GAAG,CAACC,YAAY,CAAC3F,wBAAwB,CAAC4F,QAAQ,gBAAgBC,SAAS,wBAAwBxF,aAAa,CAAC,iBAAiB,WAAW,YAAY,UAAUyF,eAAe,CAAC9F,wBAAwB,CAAC4F,QAAQ,mBAAmBC,SAAS,2BAA2BxF,aAAa,uDAAuDpjF,MAAM,MAAM8oF,iBAAiB,CAAC/F,wBAAwB,CAAC4F,QAAQ,qBAC7eC,SAAS,6BAA6BxF,aAAa,yDAAyDpjF,MAAM,MAAM+oF,kBAAkB,CAAChG,wBAAwB,CAAC4F,QAAQ,sBAAsBC,SAAS,8BAA8BxF,aAAa,0DAA0DpjF,MAAM,OAAOgpF,IAAG,EAChU,SAASC,GAAG92F,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI+1F,GAAG33F,QAAQ6B,EAAEg9D,SAAS,IAAK,UAAU,OAAO,MAAMh9D,EAAEg9D,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO,OAAM,EAAG,QAAQ,OAAM,GAAI,SAAS85B,GAAG/2F,GAAc,MAAM,iBAAjBA,EAAEA,EAAEg3F,SAAkC,SAASh3F,EAAEA,EAAEqR,KAAK,KAAK,IAAI4lF,IAAG,EAE1Q,IAAIC,GAAG,CAACxG,WAAW4F,GAAG7F,cAAc,SAASzwF,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,OAAE,EAAWC,OAAE,EAAO,GAAG61F,GAAG/1F,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmBE,EAAEo2F,GAAGK,iBAAiB,MAAM12F,EAAE,IAAK,iBAAiBC,EAAEo2F,GAAGI,eAAe,MAAMz2F,EAAE,IAAK,oBAAoBC,EAAEo2F,GAAGM,kBAAkB,MAAM32F,EAAEC,OAAE,OAAY+2F,GAAGH,GAAG92F,EAAErE,KAAKuE,EAAEo2F,GAAGI,gBAAgB,YAAY12F,GAAG,MAAMrE,EAAEshE,UAAU/8D,EAAEo2F,GAAGK,kBAC5K,OAD8Lz2F,GAAGk2F,IAAI,OAAOz6F,EAAEm8C,SAASm/C,IAAI/2F,IAAIo2F,GAAGK,iBAAiBz2F,IAAIo2F,GAAGI,gBAAgBO,KAAK92F,EAAEq0F,OAAY3iF,GAAG,UAARyiF,GAAG14F,GAAkB04F,GAAG/3F,MAAM+3F,GAAGlmB,YAAY6oB,IAClf,IAAK/2F,EAAE21F,GAAGR,UAAUn1F,EAAED,EAAEtE,EAAEC,GAAGuE,EAAED,EAAEmR,KAAKlR,EAAW,QAARA,EAAE42F,GAAGp7F,MAAcuE,EAAEmR,KAAKlR,GAAIkzF,EAAGnzF,GAAGC,EAAED,GAAGC,EAAE,MAAMH,EAAEm2F,GAHiL,SAAYn2F,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO+2F,GAAG92F,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEuyE,MAAa,MAAKqkB,IAAG,EAAUR,IAAG,IAAK,YAAY,OAAOr2F,EAAEC,EAAEoR,QAASglF,IAAIQ,GAAG,KAAK72F,EAAE,QAAQ,OAAO,MAG1Wm3F,CAAGn3F,EAAErE,GAFpG,SAAYqE,EAAEC,GAAG,GAAGg3F,GAAG,MAAM,mBAAmBj3F,IAAIg2F,IAAIc,GAAG92F,EAAEC,IAAID,EAAEw0F,KAAKD,GAAG1iF,GAAGyiF,GAAG,KAAK2C,IAAG,EAAGj3F,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,KAAKC,EAAEqwE,SAASrwE,EAAEm3F,QAAQn3F,EAAEm9E,UAAUn9E,EAAEqwE,SAASrwE,EAAEm3F,OAAO,CAAC,GAAGn3F,EAAEo3F,MAAM,EAAEp3F,EAAEo3F,KAAK15F,OAAO,OAAOsC,EAAEo3F,KAAK,GAAGp3F,EAAEuyE,MAAM,OAAOhlE,OAAOG,aAAa1N,EAAEuyE,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAO4jB,IAAI,OAAOn2F,EAAE63C,OAAO,KAAK73C,EAAEoR,KAAK,QAAQ,OAAO,MAE3RimF,CAAGt3F,EAAErE,MAAKsE,EAAE61F,GAAGT,UAAUiB,GAAGC,YAAYt2F,EAAEtE,EAAEC,IAAKyV,KAAKrR,EAAEqzF,EAAGpzF,IAAIA,EAAE,KAAY,OAAOE,EAAEF,EAAE,OAAOA,EAAEE,EAAE,CAACA,EAAEF,KAAKs3F,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG13F,GAAG,GAAGA,EAAE69C,EAAG79C,GAAG,CAAC,mBAAoBu3F,IAAGxuE,EAAE,OAAc,IAAI9oB,EAAEixF,EAAGlxF,EAAEmyF,WAAWoF,GAAGv3F,EAAEmyF,UAAUnyF,EAAEwG,KAAKvG,IAAI,SAAS03F,GAAG33F,GAAGw3F,GAAGC,GAAGA,GAAG94F,KAAKqB,GAAGy3F,GAAG,CAACz3F,GAAGw3F,GAAGx3F,EAAE,SAAS43F,KAAK,GAAGJ,GAAG,CAAC,IAAIx3F,EAAEw3F,GAAGv3F,EAAEw3F,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG13F,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEtC,OAAOqC,IAAI03F,GAAGz3F,EAAED,KAC7d,SAAS63F,GAAG73F,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAAS63F,GAAG93F,EAAEC,EAAEtE,GAAG,OAAOqE,EAAEC,EAAEtE,GAAG,SAASo8F,MAAM,IAAIC,IAAG,EAAG,SAASC,GAAGj4F,EAAEC,GAAG,GAAG+3F,GAAG,OAAOh4F,EAAEC,GAAG+3F,IAAG,EAAG,IAAI,OAAOH,GAAG73F,EAAEC,GAAhB,QAA8B+3F,IAAG,GAAG,OAAOR,IAAI,OAAOC,MAAGM,KAAKH,OAAM,IAAIM,GAAG,CAAC7tE,OAAM,EAAGm9C,MAAK,EAAGV,UAAS,EAAGqxB,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAG/6B,QAAO,EAAGg7B,UAAS,EAAGvlD,OAAM,EAAGoM,QAAO,EAAGo5C,KAAI,EAAGn7D,MAAK,EAAG6hD,MAAK,EAAGt1B,KAAI,EAAG6uC,MAAK,GAAI,SAASC,GAAGz4F,GAAG,IAAIC,EAAED,GAAGA,EAAE04F,UAAU14F,EAAE04F,SAASpxC,cAAc,MAAM,UAAUrnD,IAAIi4F,GAAGl4F,EAAEwG,MAAM,aAAavG,EACxc,SAAS04F,GAAG34F,GAA6F,OAA1FA,EAAEA,EAAEvC,QAAQuC,EAAE2gF,YAAYjgF,QAASk4F,0BAA0B54F,EAAEA,EAAE44F,yBAAgC,IAAI54F,EAAE8O,SAAS9O,EAAEoxB,WAAWpxB,EAAE,SAAS64F,GAAG74F,GAAG,IAAIszF,EAAG,OAAM,EAAY,IAAIrzF,GAAbD,EAAE,KAAKA,KAAaW,SAAqG,OAA5FV,KAAIA,EAAEU,SAASC,cAAc,QAAS84B,aAAa15B,EAAE,WAAWC,EAAE,mBAAoBA,EAAED,IAAWC,EAAE,SAAS64F,GAAG94F,GAAG,IAAIC,EAAED,EAAEwG,KAAK,OAAOxG,EAAEA,EAAE04F,WAAW,UAAU14F,EAAEsnD,gBAAgB,aAAarnD,GAAG,UAAUA,GAEnY,SAAS84F,GAAG/4F,GAAGA,EAAEg5F,gBAAgBh5F,EAAEg5F,cADvD,SAAYh5F,GAAG,IAAIC,EAAE64F,GAAG94F,GAAG,UAAU,QAAQrE,EAAEK,OAAOi+E,yBAAyBj6E,EAAEV,YAAYpC,UAAU+C,GAAGrE,EAAE,GAAGoE,EAAEC,GAAG,IAAID,EAAE7C,eAAe8C,SAAI,IAAqBtE,GAAG,mBAAoBA,EAAEQ,KAAK,mBAAoBR,EAAEu+E,IAAI,CAAC,IAAIh6E,EAAEvE,EAAEQ,IAAIgE,EAAExE,EAAEu+E,IAAiL,OAA7Kl+E,OAAOC,eAAe+D,EAAEC,EAAE,CAAC05E,cAAa,EAAGx9E,IAAI,WAAW,OAAO+D,EAAEzE,KAAKqC,OAAOo8E,IAAI,SAASl6E,GAAGpE,EAAE,GAAGoE,EAAEG,EAAE1E,KAAKqC,KAAKkC,MAAMhE,OAAOC,eAAe+D,EAAEC,EAAE,CAAC/D,WAAWP,EAAEO,aAAmB,CAAC0hC,SAAS,WAAW,OAAOhiC,GAAG+1C,SAAS,SAAS3xC,GAAGpE,EAAE,GAAGoE,GAAGi5F,aAAa,WAAWj5F,EAAEg5F,cACxf,YAAYh5F,EAAEC,MAAuDi5F,CAAGl5F,IAAI,SAASm5F,GAAGn5F,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEg5F,cAAc,IAAI/4F,EAAE,OAAM,EAAG,IAAItE,EAAEsE,EAAE29B,WAAehiC,EAAE,GAAqD,OAAlDoE,IAAIpE,EAAEk9F,GAAG94F,GAAGA,EAAEuX,QAAQ,OAAO,QAAQvX,EAAEzD,QAAOyD,EAAEpE,KAAaD,IAAGsE,EAAE0xC,SAAS3xC,IAAG,GAAO,IAAIo5F,GAAGrO,EAAG8E,mDAAmDuJ,GAAGj8F,eAAe,4BAA4Bi8F,GAAGtJ,uBAAuB,CAACvwB,QAAQ,OAC9Y,IAAI85B,GAAG,cAAc3vE,GAAE,mBAAoBrtB,QAAQA,OAAOsc,IAAI2gF,GAAG5vE,GAAErtB,OAAOsc,IAAI,iBAAiB,MAAM4gF,GAAG7vE,GAAErtB,OAAOsc,IAAI,gBAAgB,MAAM6gF,GAAG9vE,GAAErtB,OAAOsc,IAAI,kBAAkB,MAAM8gF,GAAG/vE,GAAErtB,OAAOsc,IAAI,qBAAqB,MAAM+gF,GAAGhwE,GAAErtB,OAAOsc,IAAI,kBAAkB,MAAMghF,GAAGjwE,GAAErtB,OAAOsc,IAAI,kBAAkB,MAAMihF,GAAGlwE,GAAErtB,OAAOsc,IAAI,iBAAiB,MAAMkhF,GAAGnwE,GAAErtB,OAAOsc,IAAI,yBAAyB,MAAMmhF,GAAGpwE,GAAErtB,OAAOsc,IAAI,qBAAqB,MAAMohF,GAAGrwE,GAAErtB,OAAOsc,IAAI,kBAAkB,MAAMqhF,GAAGtwE,GAAErtB,OAAOsc,IAAI,cACve,MAAMshF,GAAGvwE,GAAErtB,OAAOsc,IAAI,cAAc,MAAMuhF,GAAG,mBAAoB79F,QAAQA,OAAO+R,SAAS,SAAS+rF,GAAGn6F,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAEk6F,IAAIl6F,EAAEk6F,KAAKl6F,EAAE,eAA0CA,EAAE,KAChN,SAASo6F,GAAGp6F,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEgQ,aAAahQ,EAAEnE,MAAM,KAAK,GAAG,iBAAkBmE,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK65F,GAAG,MAAM,iBAAiB,KAAKL,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAKG,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,aAAa,KAAKM,GAAG,MAAM,WAAW,GAAG,iBAAkB/5F,EAAE,OAAOA,EAAE2sF,UAAU,KAAKiN,GAAG,MAAM,mBAAmB,KAAKD,GAAG,MAAM,mBAAmB,KAAKG,GAAG,IAAI75F,EAAED,EAAE2E,OAAmC,OAA5B1E,EAAEA,EAAE+P,aAAa/P,EAAEpE,MAAM,GAAUmE,EAAEgQ,cAAc,KAAK/P,EAAE,cAAcA,EACnf,IAAI,cAAc,KAAK+5F,GAAG,OAAOI,GAAGp6F,EAAEwG,MAAM,KAAKyzF,GAAG,GAAGj6F,EAAE,IAAIA,EAAE0uF,QAAQ1uF,EAAE2uF,QAAQ,KAAK,OAAOyL,GAAGp6F,GAAG,OAAO,KAAK,SAASq6F,GAAGr6F,GAAG,IAAIC,EAAE,GAAG,EAAE,CAACD,EAAE,OAAOA,EAAEyyF,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAI92F,EAAE,GAAG,MAAMqE,EAAE,QAAQ,IAAIpE,EAAEoE,EAAEs6F,YAAYp6F,EAAEF,EAAEu6F,aAAap6F,EAAEi6F,GAAGp6F,EAAEwG,MAAM7K,EAAE,KAAKC,IAAID,EAAEy+F,GAAGx+F,EAAE4K,OAAO5K,EAAEuE,EAAEA,EAAE,GAAGD,EAAEC,EAAE,QAAQD,EAAEs6F,SAASj6F,QAAQ84F,GAAG,IAAI,IAAIn5F,EAAEu6F,WAAW,IAAI9+F,IAAIwE,EAAE,gBAAgBxE,EAAE,KAAKA,EAAE,aAAaC,GAAG,WAAWuE,EAAEF,GAAGtE,EAAEqE,EAAEA,EAAE8yF,aAAa9yF,GAAG,OAAOC,EACzc,IAAIy6F,GAAG,8VAA8VC,GAAG3+F,OAAOkB,UAAUC,eAAey9F,GAAG,GAAGC,GAAG,GAEzL,SAASvP,GAAEtrF,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAGpC,KAAKg9F,gBAAgB,IAAI76F,GAAG,IAAIA,GAAG,IAAIA,EAAEnC,KAAKihB,cAAcnjB,EAAEkC,KAAKi9F,mBAAmB76F,EAAEpC,KAAKk9F,gBAAgBr/F,EAAEmC,KAAKm9F,aAAaj7F,EAAElC,KAAK0I,KAAKvG,EAAE,IAAI0rF,GAAE,GACnY,uIAAuI99E,MAAM,KAAKxK,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeqD,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAE,GAAG2rF,GAAE1rF,GAAG,IAAIqrF,GAAErrF,EAAE,GAAE,EAAGD,EAAE,GAAG,QAAQ,CAAC,kBAAkB,YAAY,aAAa,SAASqD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QACnd,CAAC,cAAc,4BAA4B,YAAY,iBAAiBjkD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAE,QAAQ,gMAAgM6N,MAAM,KAAKxK,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAAQ,CAAC,UAAU,WAAW,QAAQ,YAAYjkD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAE,QACnd,CAAC,UAAU,YAAYqD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,OAAO,OAAO,OAAO,QAAQqD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,UAAU,SAASqD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAAQ,IAAI4zC,GAAG,gBAAgB,SAASC,GAAGn7F,GAAG,OAAOA,EAAE,GAAGwQ,cAGzR,SAAS4qF,GAAGp7F,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAEyrF,GAAExuF,eAAe8C,GAAG0rF,GAAE1rF,GAAG,MAAW,OAAOC,EAAE,IAAIA,EAAEsG,MAAK5K,IAAO,EAAEqE,EAAEtC,SAAS,MAAMsC,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QANnJ,SAAYD,EAAEC,EAAEtE,EAAEC,GAAG,GAAG,MAAOqE,GADoF,SAAYD,EAAEC,EAAEtE,EAAEC,GAAG,GAAG,OAAOD,GAAG,IAAIA,EAAE6K,KAAK,OAAM,EAAG,cAAcvG,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGrE,IAAc,OAAOD,GAASA,EAAEm/F,gBAAmD,WAAnC96F,EAAEA,EAAEsnD,cAAcnmD,MAAM,EAAE,KAAsB,UAAUnB,GAAE,QAAQ,OAAM,GACnTq7F,CAAGr7F,EAAEC,EAAEtE,EAAEC,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOD,EAAE,OAAOA,EAAE6K,MAAM,KAAK,EAAE,OAAOvG,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO8vB,MAAM9vB,GAAG,KAAK,EAAE,OAAO8vB,MAAM9vB,IAAI,EAAEA,EAAE,OAAM,EAMrDq7F,CAAGr7F,EAAEtE,EAAEuE,EAAEtE,KAAKD,EAAE,MAAMC,GAAG,OAAOsE,EAPhM,SAAYF,GAAG,QAAG26F,GAAGl/F,KAAKo/F,GAAG76F,KAAe26F,GAAGl/F,KAAKm/F,GAAG56F,KAAe06F,GAAGr5F,KAAKrB,GAAU66F,GAAG76F,IAAG,GAAG46F,GAAG56F,IAAG,GAAS,IAOkFu7F,CAAGt7F,KAAK,OAAOtE,EAAEqE,EAAEw7F,gBAAgBv7F,GAAGD,EAAE05B,aAAaz5B,EAAE,GAAGtE,IAAIuE,EAAE86F,gBAAgBh7F,EAAEE,EAAE+6F,cAAc,OAAOt/F,EAAE,IAAIuE,EAAEsG,MAAQ,GAAG7K,GAAGsE,EAAEC,EAAE6e,cAAcnjB,EAAEsE,EAAE66F,mBAAmB,OAAOp/F,EAAEqE,EAAEw7F,gBAAgBv7F,IAAatE,EAAE,KAAXuE,EAAEA,EAAEsG,OAAc,IAAItG,IAAG,IAAKvE,EAAE,GAAG,GAAGA,EAAEC,EAAEoE,EAAEy7F,eAAe7/F,EAAEqE,EAAEtE,GAAGqE,EAAE05B,aAAaz5B,EAAEtE,MAC5d,SAAS+/F,GAAG17F,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAAS27F,GAAG37F,EAAEC,GAAG,IAAItE,EAAEsE,EAAEsX,QAAQ,OAAOxa,EAAE,GAAGkD,EAAE,CAAC27F,oBAAe,EAAOC,kBAAa,EAAOt/F,WAAM,EAAOgb,QAAQ,MAAM5b,EAAEA,EAAEqE,EAAE87F,cAAcC,iBAC9Q,SAASC,GAAGh8F,EAAEC,GAAG,IAAItE,EAAE,MAAMsE,EAAE47F,aAAa,GAAG57F,EAAE47F,aAAajgG,EAAE,MAAMqE,EAAEsX,QAAQtX,EAAEsX,QAAQtX,EAAE27F,eAAejgG,EAAE+/F,GAAG,MAAMz7F,EAAE1D,MAAM0D,EAAE1D,MAAMZ,GAAGqE,EAAE87F,cAAc,CAACC,eAAengG,EAAE6hE,aAAa9hE,EAAEsgG,WAAW,aAAah8F,EAAEuG,MAAM,UAAUvG,EAAEuG,KAAK,MAAMvG,EAAEsX,QAAQ,MAAMtX,EAAE1D,OAAO,SAAS2/F,GAAGl8F,EAAEC,GAAe,OAAZA,EAAEA,EAAEsX,UAAiB6jF,GAAGp7F,EAAE,UAAUC,GAAE,GACjU,SAASk8F,GAAGn8F,EAAEC,GAAGi8F,GAAGl8F,EAAEC,GAAG,IAAItE,EAAE+/F,GAAGz7F,EAAE1D,OAAOX,EAAEqE,EAAEuG,KAAK,GAAG,MAAM7K,EAAK,WAAWC,GAAM,IAAID,GAAG,KAAKqE,EAAEzD,OAAOyD,EAAEzD,OAAOZ,KAAEqE,EAAEzD,MAAM,GAAGZ,GAAOqE,EAAEzD,QAAQ,GAAGZ,IAAIqE,EAAEzD,MAAM,GAAGZ,QAAQ,GAAG,WAAWC,GAAG,UAAUA,EAA8B,YAA3BoE,EAAEw7F,gBAAgB,SAAgBv7F,EAAE9C,eAAe,SAASi/F,GAAGp8F,EAAEC,EAAEuG,KAAK7K,GAAGsE,EAAE9C,eAAe,iBAAiBi/F,GAAGp8F,EAAEC,EAAEuG,KAAKk1F,GAAGz7F,EAAE47F,eAAe,MAAM57F,EAAEsX,SAAS,MAAMtX,EAAE27F,iBAAiB57F,EAAE47F,iBAAiB37F,EAAE27F,gBACnZ,SAASS,GAAGr8F,EAAEC,EAAEtE,GAAG,GAAGsE,EAAE9C,eAAe,UAAU8C,EAAE9C,eAAe,gBAAgB,CAAC,IAAIvB,EAAEqE,EAAEuG,KAAK,KAAK,WAAW5K,GAAG,UAAUA,QAAG,IAASqE,EAAE1D,OAAO,OAAO0D,EAAE1D,OAAO,OAAO0D,EAAE,GAAGD,EAAE87F,cAAcr+B,aAAa9hE,GAAGsE,IAAID,EAAEzD,QAAQyD,EAAEzD,MAAM0D,GAAGD,EAAE67F,aAAa57F,EAAW,MAATtE,EAAEqE,EAAEnE,QAAcmE,EAAEnE,KAAK,IAAImE,EAAE47F,gBAAgB57F,EAAE47F,eAAe57F,EAAE47F,iBAAiB57F,EAAE87F,cAAcC,eAAe,KAAKpgG,IAAIqE,EAAEnE,KAAKF,GAC1X,SAASygG,GAAGp8F,EAAEC,EAAEtE,GAAM,WAAWsE,GAAGD,EAAE6B,cAAcy6F,gBAAgBt8F,IAAE,MAAMrE,EAAEqE,EAAE67F,aAAa,GAAG77F,EAAE87F,cAAcr+B,aAAaz9D,EAAE67F,eAAe,GAAGlgG,IAAIqE,EAAE67F,aAAa,GAAGlgG,IAPvK,0jCAA0jCkS,MAAM,KAAKxK,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQ26F,GACzmCC,IAAIxP,GAAE1rF,GAAG,IAAIqrF,GAAErrF,EAAE,GAAE,EAAGD,EAAE,QAAQ,sFAAsF6N,MAAM,KAAKxK,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQ26F,GAAGC,IAAIxP,GAAE1rF,GAAG,IAAIqrF,GAAErrF,EAAE,GAAE,EAAGD,EAAE,kCAAkC,CAAC,WAAW,WAAW,aAAaqD,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQ26F,GAAGC,IAAIxP,GAAE1rF,GAAG,IAAIqrF,GAAErrF,EAAE,GAAE,EAAGD,EAAE,0CAA0C,CAAC,WAAW,eAAeqD,QAAQ,SAASrD,GAAG2rF,GAAE3rF,GAAG,IAAIsrF,GAAEtrF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAMtR,IAAIi1C,GAAG,CAACC,OAAO,CAAC5L,wBAAwB,CAAC4F,QAAQ,WAAWC,SAAS,mBAAmBxF,aAAa,8DAA8DpjF,MAAM,OAAO,SAAS4uF,GAAGz8F,EAAEC,EAAEtE,GAA8D,OAA3DqE,EAAEspB,GAAE+rE,UAAUkH,GAAGC,OAAOx8F,EAAEC,EAAEtE,IAAK6K,KAAK,SAASmxF,GAAGh8F,GAAG03F,EAAGrzF,GAAUA,EAAE,IAAI08F,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG58F,GAAGoyF,EAAGpyF,GACvd,SAAS68F,GAAG78F,GAAe,GAAGm5F,GAATxG,EAAG3yF,IAAY,OAAOA,EAAE,SAAS88F,GAAG98F,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAI88F,IAAG,EAA2E,SAASC,KAAKN,KAAKA,GAAG7b,YAAY,mBAAmBoc,IAAIN,GAAGD,GAAG,MAAM,SAASO,GAAGj9F,GAAG,UAAUA,EAAEi7F,cAAc4B,GAAGF,KAAuB1E,GAAG2E,GAApB58F,EAAEy8F,GAAGE,GAAG38F,EAAE24F,GAAG34F,KAAc,SAASk9F,GAAGl9F,EAAEC,EAAEtE,GAAG,UAAUqE,GAAGg9F,KAAUL,GAAGhhG,GAAR+gG,GAAGz8F,GAAUygF,YAAY,mBAAmBuc,KAAK,SAASj9F,GAAGg9F,KAAK,SAASG,GAAGn9F,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO68F,GAAGF,IAChf,SAASS,GAAGp9F,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAO68F,GAAG58F,GAAG,SAASo9F,GAAGr9F,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAO68F,GAAG58F,GADJqzF,IAAKyJ,GAAGlE,GAAG,YAAYl4F,SAASu1F,cAAc,EAAEv1F,SAASu1F,eAE1J,IAAIoH,GAAG,CAAC5M,WAAW6L,GAAGgB,uBAAuBR,GAAGtM,cAAc,SAASzwF,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAED,EAAE0yF,EAAG1yF,GAAGS,OAAOP,OAAE,EAAOgrF,OAAE,EAAOC,EAAElrF,EAAEw4F,UAAUx4F,EAAEw4F,SAASpxC,cAAmL,GAArK,WAAW8jC,GAAG,UAAUA,GAAG,SAASlrF,EAAEsG,KAAKrG,EAAE28F,GAAGrE,GAAGv4F,GAAG68F,GAAG58F,EAAEk9F,IAAIl9F,EAAEg9F,GAAGhS,EAAE+R,KAAK9R,EAAElrF,EAAEw4F,WAAW,UAAUtN,EAAE9jC,gBAAgB,aAAapnD,EAAEsG,MAAM,UAAUtG,EAAEsG,QAAQrG,EAAEi9F,IAAOj9F,IAAIA,EAAEA,EAAEH,EAAEC,IAAI,OAAOw8F,GAAGt8F,EAAExE,EAAEC,GAAGuvF,GAAGA,EAAEnrF,EAAEE,EAAED,GAAG,SAASD,IAAIA,EAAEE,EAAE47F,gBAAgB97F,EAAEi8F,YAAY,WAAW/7F,EAAEsG,MAAM41F,GAAGl8F,EAAE,SAASA,EAAE3D,SAASihG,GAAGl0E,GAAEzhB,OAAO,CAAC0zD,KAAK,KAAKy7B,OAAO,OAAOyG,GAAG,CAACC,IAAI,SACzfC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAG99F,GAAG,IAAIC,EAAEnC,KAAK62F,YAAY,OAAO10F,EAAE89F,iBAAiB99F,EAAE89F,iBAAiB/9F,MAAIA,EAAEy9F,GAAGz9F,OAAMC,EAAED,GAAM,SAASg+F,KAAK,OAAOF,GAClL,IAAIG,GAAG,EAAEC,GAAG,EAAEC,IAAG,EAAGC,IAAG,EAAGC,GAAGb,GAAG31F,OAAO,CAACq5D,QAAQ,KAAKka,QAAQ,KAAKkjB,QAAQ,KAAKC,QAAQ,KAAKhsB,MAAM,KAAKwB,MAAM,KAAKzD,QAAQ,KAAKC,SAAS,KAAK6mB,OAAO,KAAKha,QAAQ,KAAK2gB,iBAAiBC,GAAGnoB,OAAO,KAAK2oB,QAAQ,KAAKC,cAAc,SAASz+F,GAAG,OAAOA,EAAEy+F,gBAAgBz+F,EAAE0+F,cAAc1+F,EAAE2gF,WAAW3gF,EAAE2+F,UAAU3+F,EAAE0+F,cAAcE,UAAU,SAAS5+F,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAE4+F,UAAU,IAAI3+F,EAAEg+F,GAAgB,OAAbA,GAAGj+F,EAAEkhE,QAAei9B,GAAG,cAAcn+F,EAAEwG,KAAKxG,EAAEkhE,QAAQjhE,EAAE,GAAGk+F,IAAG,EAAG,IAAIU,UAAU,SAAS7+F,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAE6+F,UAC3f,IAAI5+F,EAAEi+F,GAAgB,OAAbA,GAAGl+F,EAAEo7E,QAAegjB,GAAG,cAAcp+F,EAAEwG,KAAKxG,EAAEo7E,QAAQn7E,EAAE,GAAGm+F,IAAG,EAAG,MAAMU,GAAGT,GAAGx2F,OAAO,CAACk3F,UAAU,KAAKz8F,MAAM,KAAKC,OAAO,KAAKy8F,SAAS,KAAKC,mBAAmB,KAAKC,MAAM,KAAKC,MAAM,KAAKC,MAAM,KAAKC,YAAY,KAAKC,UAAU,OAAOC,GAAG,CAACC,WAAW,CAAC1O,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcwO,WAAW,CAAC3O,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcyO,aAAa,CAAC5O,iBAAiB,iBAAiBG,aAAa,CAAC,aAAa,gBAAgB0O,aAAa,CAAC7O,iBAAiB,iBACjhBG,aAAa,CAAC,aAAa,iBAAiB2O,GAAG,CAAClP,WAAW6O,GAAG9O,cAAc,SAASzwF,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAE,cAAcF,GAAG,gBAAgBA,EAAEG,EAAE,aAAaH,GAAG,eAAeA,EAAE,GAAGE,IAAIvE,EAAE8iG,eAAe9iG,EAAE+iG,eAAev+F,IAAID,EAAE,OAAO,KAA4I,GAAvIA,EAAEtE,EAAE8E,SAAS9E,EAAEA,GAAGsE,EAAEtE,EAAEiG,eAAe3B,EAAE2/F,aAAa3/F,EAAE4/F,aAAap/F,OAAOP,GAAGA,EAAEF,EAAEA,GAAGA,EAAEtE,EAAE8iG,eAAe9iG,EAAEgjG,WAAWnM,EAAGvyF,GAAG,MAAME,EAAE,KAAQA,IAAIF,EAAE,OAAO,KAAK,IAAIkrF,OAAE,EAAOC,OAAE,EAAO7vF,OAAE,EAAO0mB,OAAE,EAAU,aAAajiB,GAAG,cAAcA,GAAEmrF,EAAEkT,GAAGjT,EAAEmU,GAAGE,WAAWlkG,EAAEgkG,GAAGC,WAAWv9E,EAAE,SAC3e,eAAejiB,GAAG,gBAAgBA,IAAEmrF,EAAE2T,GAAG1T,EAAEmU,GAAGI,aAAapkG,EAAEgkG,GAAGG,aAAaz9E,EAAE,WAAU,IAAIvmB,EAAE,MAAMyE,EAAED,EAAEyyF,EAAGxyF,GAAmK,GAAhKD,EAAE,MAAMD,EAAEC,EAAEyyF,EAAG1yF,IAAGD,EAAEmrF,EAAEkK,UAAUjK,EAAEjrF,EAAExE,EAAEC,IAAK4K,KAAKyb,EAAE,QAAQjiB,EAAEvC,OAAO/B,EAAEsE,EAAEy+F,cAAcv+F,GAAEvE,EAAEwvF,EAAEkK,UAAU95F,EAAE0E,EAAEtE,EAAEC,IAAK4K,KAAKyb,EAAE,QAAQtmB,EAAE8B,OAAOyC,EAAEvE,EAAE8iG,cAAc/iG,EAAEE,EAAEqE,EAAKE,GAAGvE,EAAEoE,EAAE,CAAa,IAARE,EAAEtE,EAAEqmB,EAAE,EAAMkpE,EAAhBlrF,EAAEE,EAAkBgrF,EAAEA,EAAE0H,EAAG1H,GAAGlpE,IAAQ,IAAJkpE,EAAE,EAAM5vF,EAAE2E,EAAE3E,EAAEA,EAAEs3F,EAAGt3F,GAAG4vF,IAAI,KAAK,EAAElpE,EAAEkpE,GAAGlrF,EAAE4yF,EAAG5yF,GAAGgiB,IAAI,KAAK,EAAEkpE,EAAElpE,GAAG/hB,EAAE2yF,EAAG3yF,GAAGirF,IAAI,KAAKlpE,KAAK,CAAC,GAAGhiB,IAAIC,GAAGD,IAAIC,EAAE6/F,UAAU,MAAM//F,EAAEC,EAAE4yF,EAAG5yF,GAAGC,EAAE2yF,EAAG3yF,GAAGD,EAAE,UAAUA,EAAE,KAAS,IAAJC,EAAED,EAAMA,EAAE,GAAGE,GAAGA,IAAID,IACne,QADue+hB,EACtf9hB,EAAE4/F,YAAuB99E,IAAI/hB,IAAQD,EAAEtB,KAAKwB,GAAGA,EAAE0yF,EAAG1yF,GAAG,IAAIA,EAAE,GAAGvE,GAAGA,IAAIsE,IAAqB,QAAjB+hB,EAAErmB,EAAEmkG,YAAuB99E,IAAI/hB,IAAQC,EAAExB,KAAK/C,GAAGA,EAAEi3F,EAAGj3F,GAAG,IAAIA,EAAE,EAAEA,EAAEqE,EAAEtC,OAAO/B,IAAIu3F,EAAGlzF,EAAErE,GAAG,UAAUoE,GAAG,IAAIpE,EAAEuE,EAAExC,OAAO,EAAE/B,KAAKu3F,EAAGhzF,EAAEvE,GAAG,WAAWD,GAAG,MAAM,CAACqE,EAAErE,KAAK,SAASqkG,GAAGhgG,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,GAAI,EAAEC,IAAID,GAAIA,GAAGC,GAAIA,EAAE,IAAIggG,GAAGjkG,OAAOkB,UAAUC,eAClU,SAAS+iG,GAAGlgG,EAAEC,GAAG,GAAG+/F,GAAGhgG,EAAEC,GAAG,OAAM,EAAG,GAAG,iBAAkBD,GAAG,OAAOA,GAAG,iBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAItE,EAAEK,OAAOmC,KAAK6B,GAAGpE,EAAEI,OAAOmC,KAAK8B,GAAG,GAAGtE,EAAEgC,SAAS/B,EAAE+B,OAAO,OAAM,EAAG,IAAI/B,EAAE,EAAEA,EAAED,EAAEgC,OAAO/B,IAAI,IAAIqkG,GAAGxkG,KAAKwE,EAAEtE,EAAEC,MAAMokG,GAAGhgG,EAAErE,EAAEC,IAAIqE,EAAEtE,EAAEC,KAAK,OAAM,EAAG,OAAM,EAAG,SAASukG,GAAGngG,GAAG,IAAIC,EAAED,EAAE,GAAGA,EAAE+/F,UAAU,KAAK9/F,EAAE6yF,QAAQ7yF,EAAEA,EAAE6yF,WAAW,CAAC,GAAG,IAAiB,EAAZ7yF,EAAEmgG,WAAa,OAAO,EAAE,KAAKngG,EAAE6yF,QAAQ,GAAc,IAAiB,GAA5B7yF,EAAEA,EAAE6yF,QAAcsN,WAAa,OAAO,EAAE,OAAO,IAAIngG,EAAEwyF,IAAI,EAAE,EAAE,SAAS4N,GAAGrgG,GAAG,IAAImgG,GAAGngG,IAAG+oB,EAAE,OAExW,SAASu3E,GAAGtgG,GAAW,KAARA,EAD7H,SAAYA,GAAG,IAAIC,EAAED,EAAE+/F,UAAU,IAAI9/F,EAAE,OAAe,KAARA,EAAEkgG,GAAGngG,KAAS+oB,EAAE,OAAc,IAAI9oB,EAAE,KAAKD,EAAE,IAAI,IAAIrE,EAAEqE,EAAEpE,EAAEqE,IAAI,CAAC,IAAIC,EAAEvE,EAAEm3F,OAAO3yF,EAAED,EAAEA,EAAE6/F,UAAU,KAAK,IAAI7/F,IAAIC,EAAE,MAAM,GAAGD,EAAEq2D,QAAQp2D,EAAEo2D,MAAM,CAAC,IAAI,IAAI40B,EAAEjrF,EAAEq2D,MAAM40B,GAAG,CAAC,GAAGA,IAAIxvF,EAAE,OAAO0kG,GAAGngG,GAAGF,EAAE,GAAGmrF,IAAIvvF,EAAE,OAAOykG,GAAGngG,GAAGD,EAAEkrF,EAAEA,EAAEoV,QAAQx3E,EAAE,OAAO,GAAGptB,EAAEm3F,SAASl3F,EAAEk3F,OAAOn3F,EAAEuE,EAAEtE,EAAEuE,MAAM,CAACgrF,GAAE,EAAG,IAAI,IAAIC,EAAElrF,EAAEq2D,MAAM60B,GAAG,CAAC,GAAGA,IAAIzvF,EAAE,CAACwvF,GAAE,EAAGxvF,EAAEuE,EAAEtE,EAAEuE,EAAE,MAAM,GAAGirF,IAAIxvF,EAAE,CAACuvF,GAAE,EAAGvvF,EAAEsE,EAAEvE,EAAEwE,EAAE,MAAMirF,EAAEA,EAAEmV,QAAQ,IAAIpV,EAAE,CAAC,IAAIC,EAAEjrF,EAAEo2D,MAAM60B,GAAG,CAAC,GAAGA,IAAIzvF,EAAE,CAACwvF,GAAE,EAAGxvF,EAAEwE,EAAEvE,EAAEsE,EAAE,MAAM,GAAGkrF,IAAIxvF,EAAE,CAACuvF,GAAE,EAAGvvF,EAAEuE,EAAExE,EAAEuE,EAAE,MAAMkrF,EAAEA,EAAEmV,QAAQpV,GAC9epiE,EAAE,QAAQptB,EAAEokG,YAAYnkG,GAAEmtB,EAAE,OAAwC,OAA1B,IAAIptB,EAAE82F,KAAI1pE,EAAE,OAAqBptB,EAAEw2F,UAAU5yB,UAAU5jE,EAAEqE,EAAEC,EAAmBugG,CAAGxgG,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEwyF,KAAK,IAAIxyF,EAAEwyF,IAAI,OAAOxyF,EAAE,GAAGA,EAAEs2D,MAAMt2D,EAAEs2D,MAAMu8B,OAAO7yF,EAAEA,EAAEA,EAAEs2D,UAAU,CAAC,GAAGt2D,IAAID,EAAE,MAAM,MAAMC,EAAEsgG,SAAS,CAAC,IAAItgG,EAAE6yF,QAAQ7yF,EAAE6yF,SAAS9yF,EAAE,OAAO,KAAKC,EAAEA,EAAE6yF,OAAO7yF,EAAEsgG,QAAQzN,OAAO7yF,EAAE6yF,OAAO7yF,EAAEA,EAAEsgG,SAAS,OAAO,KACnX,IAAI5qF,GAAG2T,GAAEzhB,OAAO,CAAC25E,cAAc,KAAKif,YAAY,KAAKC,cAAc,OAAOC,GAAGr3E,GAAEzhB,OAAO,CAAC+nD,cAAc,SAAS5vD,GAAG,MAAM,kBAAkBA,EAAEA,EAAE4vD,cAAclvD,OAAOkvD,iBAAiBgxC,GAAGpD,GAAG31F,OAAO,CAAC42F,cAAc,OAAO,SAASoC,GAAG7gG,GAAG,IAAIC,EAAED,EAAEi9D,QAA+E,MAAvE,aAAaj9D,EAAgB,KAAbA,EAAEA,EAAE8gG,WAAgB,KAAK7gG,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EACnV,IAAI+gG,GAAG,CAACC,IAAI,SAASC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAACC,EAAE,YAAYC,EAAE,MAAMC,GAAG,QAAQC,GAAG,QAAQC,GAAG,QAAQC,GAAG,UAAUC,GAAG,MAAMC,GAAG,QAAQC,GAAG,WAAWC,GAAG,SAASC,GAAG,IAAIC,GAAG,SAASC,GAAG,WAAWC,GAAG,MAAMC,GAAG,OAAOC,GAAG,YAAYC,GAAG,UAAUC,GAAG,aAAaC,GAAG,YAAYC,GAAG,SAASC,GAAG,SAASC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAChfC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,MAAMC,IAAI,MAAMC,IAAI,MAAMC,IAAI,UAAUC,IAAI,aAAaC,IAAI,QAAQC,GAAGzG,GAAG31F,OAAO,CAAChL,IAAI,SAASmD,GAAG,GAAGA,EAAEnD,IAAI,CAAC,IAAIoD,EAAE8gG,GAAG/gG,EAAEnD,MAAMmD,EAAEnD,IAAI,GAAG,iBAAiBoD,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAEwG,KAAc,MAARxG,EAAE6gG,GAAG7gG,IAAU,QAAQwN,OAAOG,aAAa3N,GAAI,YAAYA,EAAEwG,MAAM,UAAUxG,EAAEwG,KAAKo7F,GAAG5hG,EAAEi9D,UAAU,eAAe,IAAIxuD,SAAS,KAAK6hE,QAAQ,KAAKC,SAAS,KAAK6mB,OAAO,KAAKha,QAAQ,KAAKkM,OAAO,KAAKxxC,OAAO,KAAKimD,iBAAiBC,GAAG8C,SAAS,SAAS9gG,GAAG,MAAM,aAC9eA,EAAEwG,KAAKq6F,GAAG7gG,GAAG,GAAGi9D,QAAQ,SAASj9D,GAAG,MAAM,YAAYA,EAAEwG,MAAM,UAAUxG,EAAEwG,KAAKxG,EAAEi9D,QAAQ,GAAGuV,MAAM,SAASxyE,GAAG,MAAM,aAAaA,EAAEwG,KAAKq6F,GAAG7gG,GAAG,YAAYA,EAAEwG,MAAM,UAAUxG,EAAEwG,KAAKxG,EAAEi9D,QAAQ,KAAKinC,GAAG7F,GAAGx2F,OAAO,CAACs8F,aAAa,OAAOC,GAAG5G,GAAG31F,OAAO,CAACyqE,QAAQ,KAAK+xB,cAAc,KAAKC,eAAe,KAAKlN,OAAO,KAAKha,QAAQ,KAAK9M,QAAQ,KAAKC,SAAS,KAAKwtB,iBAAiBC,KAAKre,GAAGr2D,GAAEzhB,OAAO,CAACozF,aAAa,KAAKwF,YAAY,KAAKC,cAAc,OAAO6D,GAAGlG,GAAGx2F,OAAO,CAAC28F,OAAO,SAASxkG,GAAG,MAAM,WAAWA,EAAEA,EAAEwkG,OAAO,gBAClfxkG,GAAGA,EAAEykG,YAAY,GAAGC,OAAO,SAAS1kG,GAAG,MAAM,WAAWA,EAAEA,EAAE0kG,OAAO,gBAAgB1kG,GAAGA,EAAE2kG,YAAY,eAAe3kG,GAAGA,EAAE4kG,WAAW,GAAGC,OAAO,KAAKC,UAAU,OAAOC,GAAG,CAAC,CAAC,QAAQ,SAAS,CAAC9Q,EAAG,gBAAgB,CAACC,EAAG,sBAAsB,CAACC,EAAG,kBAAkB,CAAC,UAAU,WAAW,CAAC,iBAAiB,kBAAkB,CAAC,OAAO,QAAQ,CAAC,YAAY,aAAa,CAAC,WAAW,YAAY,CAAC,YAAY,aAAa,CAAC,WAAW,YAAY,CAAC,iBAAiB,kBAAkB,CAAC,UAAU,WAAW,CAAC,YAAY,aAClf,CAAC,QAAQ,SAAS,CAAC,QAAQ,SAAS,CAAC,oBAAoB,qBAAqB,CAAC,OAAO,QAAQ,CAAC,aAAa,cAAc,CAAC,iBAAiB,kBAAkB,CAAC,YAAY,aAAa,CAAC,qBAAqB,sBAAsB,CAAC,YAAY,aAAa,CAAC,WAAW,YAAY,CAAC,YAAY,aAAa,CAAC,UAAU,WAAW,CAAC,cAAc,eAAe,CAAC,aAAa,cAAc,CAAC,cAAc,eAAe,CAAC,WAAW,YAAY,CAAC,SAAS,UAAU,CAAC,UAAU,WAAW,CAAC,UAAU,WAC3e,CAAC,UAAU,WAAW,CAAC,aAAa,cAAc,CAAC,SAAS,UAAU,CAAC,YAAY,aAAa,CAACC,GAAG,iBAAiB,CAAC,UAAU,WAAW,CAAC,QAAQ,UAAU4Q,GAAG,GAAGC,GAAG,GAAG,SAASC,GAAGllG,EAAEC,GAAG,IAAItE,EAAEqE,EAAE,GAAcpE,EAAE,OAAboE,EAAEA,EAAE,IAAiB,GAAGwQ,cAAcxQ,EAAEmB,MAAM,IAAIlB,EAAE,CAAC2wF,wBAAwB,CAAC4F,QAAQ56F,EAAE66F,SAAS76F,EAAE,WAAWq1F,aAAa,CAACt1F,GAAGwpG,cAAcllG,GAAG+kG,GAAGhlG,GAAGC,EAAEglG,GAAGtpG,GAAGsE,EACpW,CAAC,CAAC,OAAO,QAAQ,CAAC,SAAS,UAAU,CAAC,QAAQ,SAAS,CAAC,QAAQ,SAAS,CAAC,cAAc,eAAe,CAAC,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,WAAW,YAAY,CAAC,WAAW,eAAe,CAAC,UAAU,WAAW,CAAC,YAAY,aAAa,CAAC,OAAO,QAAQ,CAAC,QAAQ,SAAS,CAAC,QAAQ,SAAS,CAAC,UAAU,WAAW,CAAC,UAAU,WAAW,CAAC,WAAW,YAAY,CAAC,QAAQ,SAAS,CAAC,YAAY,aAAa,CAAC,UAAU,WAAW,CAAC,QAAQ,SAAS,CAAC,QAAQ,SAAS,CAAC,OAAO,QAAQ,CAAC,gBAAgB,iBACve,CAAC,cAAc,eAAe,CAAC,YAAY,aAAa,CAAC,aAAa,cAAc,CAAC,QAAQ,SAAS,CAAC,SAAS,UAAU,CAAC,SAAS,UAAU,CAAC,cAAc,eAAe,CAAC,WAAW,YAAY,CAAC,aAAa,cAAc,CAAC,eAAe,iBAAiBoD,QAAQ,SAASrD,GAAGklG,GAAGllG,GAAE,KAAM+kG,GAAG1hG,QAAQ,SAASrD,GAAGklG,GAAGllG,GAAE,KAC5T,IAAIolG,GAAG,CAAC1U,WAAWsU,GAAGK,+BAA+B,SAASrlG,GAAW,YAAO,KAAfA,EAAEilG,GAAGjlG,MAAsB,IAAKA,EAAEmlG,eAAe1U,cAAc,SAASzwF,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAE+kG,GAAGjlG,GAAG,IAAIE,EAAE,OAAO,KAAK,OAAOF,GAAG,IAAK,WAAW,GAAG,IAAI6gG,GAAGllG,GAAG,OAAO,KAAK,IAAK,UAAU,IAAK,QAAQqE,EAAEikG,GAAG,MAAM,IAAK,OAAO,IAAK,QAAQjkG,EAAE4gG,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIjlG,EAAEk6E,OAAO,OAAO,KAAK,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc71E,EAAEq+F,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOr+F,EACjmBkkG,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAalkG,EAAEokG,GAAG,MAAM,KAAKnQ,EAAG,KAAKC,EAAG,KAAKC,EAAGn0F,EAAE2V,GAAG,MAAM,KAAKy+E,GAAGp0F,EAAE2/E,GAAG,MAAM,IAAK,SAAS3/E,EAAEw9F,GAAG,MAAM,IAAK,QAAQx9F,EAAEukG,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQvkG,EAAE2gG,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY3gG,EAAE8+F,GAAG,MAAM,QAAQ9+F,EAAEspB,GAA+B,OAAN+pE,EAAvBpzF,EAAED,EAAEq1F,UAAUn1F,EAAED,EAAEtE,EAAEC,IAAgBqE,IAAIqlG,GAAGF,GAAGC,+BACzdE,GAAG,GAAG,SAASC,GAAGxlG,GAAG,IAAIC,EAAED,EAAEylG,WAAW9pG,EAAEsE,EAAE,EAAE,CAAC,IAAItE,EAAE,CAACqE,EAAE0lG,UAAU/mG,KAAKhD,GAAG,MAAM,IAAIC,EAAE,IAAIA,EAAED,EAAEC,EAAEk3F,QAAQl3F,EAAEA,EAAEk3F,OAAkD,KAA3Cl3F,EAAE,IAAIA,EAAE62F,IAAI,KAAK72F,EAAEu2F,UAAUwT,eAAoB,MAAM3lG,EAAE0lG,UAAU/mG,KAAKhD,GAAGA,EAAE62F,EAAG52F,SAASD,GAAG,IAAIA,EAAE,EAAEA,EAAEqE,EAAE0lG,UAAU/nG,OAAOhC,IAAI,CAACsE,EAAED,EAAE0lG,UAAU/pG,GAAG,IAAIuE,EAAEy4F,GAAG34F,EAAE20F,aAAa/4F,EAAEoE,EAAE4lG,aAAa,IAAI,IAAIzlG,EAAEH,EAAE20F,YAAYxJ,EAAE,KAAKC,EAAE,EAAEA,EAAEoF,EAAG7yF,OAAOytF,IAAI,CAAC,IAAI7vF,EAAEi1F,EAAGpF,GAAG7vF,IAAIA,EAAEA,EAAEk1F,cAAc70F,EAAEqE,EAAEE,EAAED,MAAMirF,EAAEmG,EAAGnG,EAAE5vF,IAAI62F,EAAGjH,IAAI,IAAI0a,IAAG,EACta,SAASja,GAAE5rF,EAAEC,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAItE,GAAG2pG,GAAGtlG,GAAG8lG,GAAGC,IAAIjpG,KAAK,KAAKkD,GAAGC,EAAEq7B,iBAAiBt7B,EAAErE,GAAE,GAAI,SAASqqG,GAAGhmG,EAAEC,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAItE,GAAG2pG,GAAGtlG,GAAG8lG,GAAGC,IAAIjpG,KAAK,KAAKkD,GAAGC,EAAEq7B,iBAAiBt7B,EAAErE,GAAE,GAAI,SAASmqG,GAAG9lG,EAAEC,GAAG63F,GAAGiO,GAAG/lG,EAAEC,GACtN,SAAS8lG,GAAG/lG,EAAEC,GAAG,GAAG4lG,GAAG,CAAC,IAAIlqG,EAAEg9F,GAAG14F,GAAkE,GAAvD,QAARtE,EAAE62F,EAAG72F,KAAa,iBAAkBA,EAAE82F,KAAK,IAAI0N,GAAGxkG,KAAKA,EAAE,MAAS4pG,GAAG5nG,OAAO,CAAC,IAAI/B,EAAE2pG,GAAG3rB,MAAMh+E,EAAEgqG,aAAa5lG,EAAEpE,EAAE+4F,YAAY10F,EAAErE,EAAE6pG,WAAW9pG,EAAEqE,EAAEpE,OAAOoE,EAAE,CAAC4lG,aAAa5lG,EAAE20F,YAAY10F,EAAEwlG,WAAW9pG,EAAE+pG,UAAU,IAAI,IAAIzN,GAAGuN,GAAGxlG,GAAV,QAAqBA,EAAE4lG,aAAa,KAAK5lG,EAAE20F,YAAY,KAAK30F,EAAEylG,WAAW,KAAKzlG,EAAE0lG,UAAU/nG,OAAO,EAAE,GAAG4nG,GAAG5nG,QAAQ4nG,GAAG5mG,KAAKqB,KAAK,IAAIimG,GAAG,GAAGC,GAAG,EAAEC,GAAG,qBAAqB,GAAGlyF,KAAKE,UAAUhT,MAAM,GACjb,SAASilG,GAAGpmG,GAAyE,OAAtEhE,OAAOkB,UAAUC,eAAe1B,KAAKuE,EAAEmmG,MAAMnmG,EAAEmmG,IAAID,KAAKD,GAAGjmG,EAAEmmG,KAAK,IAAWF,GAAGjmG,EAAEmmG,KAAK,SAASE,GAAGrmG,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqBW,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOX,EAAEs8F,eAAet8F,EAAEyC,KAAK,MAAMxC,GAAG,OAAOD,EAAEyC,MAAM,SAAS6jG,GAAGtmG,GAAG,KAAKA,GAAGA,EAAE2uB,YAAY3uB,EAAEA,EAAE2uB,WAAW,OAAO3uB,EACtU,SAASumG,GAAGvmG,EAAEC,GAAG,IAAwBrE,EAApBD,EAAE2qG,GAAGtmG,GAAO,IAAJA,EAAE,EAAYrE,GAAG,CAAC,GAAG,IAAIA,EAAEmT,SAAS,CAA0B,GAAzBlT,EAAEoE,EAAErE,EAAEyyE,YAAYzwE,OAAUqC,GAAGC,GAAGrE,GAAGqE,EAAE,MAAM,CAAC2B,KAAKjG,EAAE0nB,OAAOpjB,EAAED,GAAGA,EAAEpE,EAAEoE,EAAE,CAAC,KAAKrE,GAAG,CAAC,GAAGA,EAAE01B,YAAY,CAAC11B,EAAEA,EAAE01B,YAAY,MAAMrxB,EAAErE,EAAEA,EAAEy1B,WAAWz1B,OAAE,EAAOA,EAAE2qG,GAAG3qG,IAC1N,SAAS6qG,KAAK,IAAI,IAAIxmG,EAAEU,OAAOT,EAAEomG,KAAKpmG,aAAaD,EAAEymG,mBAAmB,CAAC,IAAI,IAAI9qG,EAAE,iBAAkBsE,EAAEymG,cAAcj4F,SAAS6K,KAAK,MAAM1d,GAAGD,GAAE,EAAG,IAAGA,EAAyB,MAAMsE,EAAEomG,IAA/BrmG,EAAEC,EAAEymG,eAAgC/lG,UAAU,OAAOV,EAAE,SAAS0mG,GAAG3mG,GAAG,IAAIC,EAAED,GAAGA,EAAE04F,UAAU14F,EAAE04F,SAASpxC,cAAc,OAAOrnD,IAAI,UAAUA,IAAI,SAASD,EAAEwG,MAAM,WAAWxG,EAAEwG,MAAM,QAAQxG,EAAEwG,MAAM,QAAQxG,EAAEwG,MAAM,aAAaxG,EAAEwG,OAAO,aAAavG,GAAG,SAASD,EAAE8X,iBAGxZ,SAAS8uF,GAAG5mG,GAAG,IAAIC,EAAEumG,KAAK7qG,EAAEqE,EAAE6mG,YAAYjrG,EAAEoE,EAAE8mG,eAAe,GAAG7mG,IAAItE,GAAGA,GAAGA,EAAEkG,eAJkJ,SAASklG,EAAG/mG,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE8O,YAAY7O,GAAG,IAAIA,EAAE6O,SAASi4F,EAAG/mG,EAAEC,EAAEmxB,YAAY,aAAapxB,EAAEA,EAAEs8D,SAASr8D,KAAGD,EAAE+gF,4BAAwD,GAA7B/gF,EAAE+gF,wBAAwB9gF,MAIvT8mG,CAAGprG,EAAEkG,cAAc4iD,gBAAgB9oD,GAAG,CAAC,GAAG,OAAOC,GAAG+qG,GAAGhrG,GAAG,GAAGsE,EAAErE,EAAEihB,WAAc,KAAR7c,EAAEpE,EAAE2kB,OAAiBvgB,EAAEC,GAAG,mBAAmBtE,EAAEA,EAAEqrG,eAAe/mG,EAAEtE,EAAEsrG,aAAahzF,KAAK2G,IAAI5a,EAAErE,EAAEY,MAAMoB,aAAa,IAAGqC,GAAGC,EAAEtE,EAAEkG,eAAelB,WAAWV,EAAE4/F,aAAan/F,QAASwyC,aAAa,CAAClzC,EAAEA,EAAEkzC,eAAe,IAAIhzC,EAAEvE,EAAEyyE,YAAYzwE,OAAOwC,EAAE8T,KAAK2G,IAAIhf,EAAEihB,MAAM3c,GAAGtE,OAAE,IAASA,EAAE2kB,IAAIpgB,EAAE8T,KAAK2G,IAAIhf,EAAE2kB,IAAIrgB,IAAIF,EAAE6H,QAAQ1H,EAAEvE,IAAIsE,EAAEtE,EAAEA,EAAEuE,EAAEA,EAAED,GAAGA,EAAEqmG,GAAG5qG,EAAEwE,GAAG,IAAIgrF,EAAEob,GAAG5qG,EACvfC,GAAGsE,GAAGirF,IAAI,IAAInrF,EAAEknG,YAAYlnG,EAAEmnG,aAAajnG,EAAE0B,MAAM5B,EAAEonG,eAAelnG,EAAEmjB,QAAQrjB,EAAEqnG,YAAYlc,EAAEvpF,MAAM5B,EAAEsnG,cAAcnc,EAAE9nE,WAAUpjB,EAAEA,EAAEkzC,eAAgBo0D,SAASrnG,EAAE0B,KAAK1B,EAAEmjB,QAAQrjB,EAAEqzC,kBAAkBlzC,EAAEvE,GAAGoE,EAAEszC,SAASrzC,GAAGD,EAAE6H,OAAOsjF,EAAEvpF,KAAKupF,EAAE9nE,UAAUpjB,EAAEunG,OAAOrc,EAAEvpF,KAAKupF,EAAE9nE,QAAQrjB,EAAEszC,SAASrzC,KAAU,IAALA,EAAE,GAAOD,EAAErE,EAAEqE,EAAEA,EAAEoxB,YAAY,IAAIpxB,EAAE8O,UAAU7O,EAAEtB,KAAK,CAACkC,QAAQb,EAAEovB,KAAKpvB,EAAEyuB,WAAWpsB,IAAIrC,EAAE0gC,YAAmD,IAAvC,mBAAoB/kC,EAAEuhC,OAAOvhC,EAAEuhC,QAAYvhC,EAAE,EAAEA,EAAEsE,EAAEtC,OAAOhC,KAAIqE,EAAEC,EAAEtE,IAAKkF,QAAQ4tB,WAAWzuB,EAAEovB,KAAKpvB,EAAEa,QAAQ6/B,UAAU1gC,EAAEqC,KACrf,IAAIolG,GAAGnU,GAAI,iBAAiB3yF,UAAU,IAAIA,SAASu1F,aAAawR,GAAG,CAAC16D,OAAO,CAAC4jD,wBAAwB,CAAC4F,QAAQ,WAAWC,SAAS,mBAAmBxF,aAAa,iFAAiFpjF,MAAM,OAAO85F,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC1R,SAASC,GAAG/nG,EAAEC,GAAG,IAAItE,EAAEsE,EAAES,SAAST,EAAEA,EAAEU,SAAS,IAAIV,EAAE6O,SAAS7O,EAAEA,EAAE4B,cAAc,OAAGimG,IAAI,MAAMH,IAAIA,KAAKtB,GAAG1qG,GAAU,MAAU,mBAALA,EAAEgsG,KAAyBhB,GAAGhrG,GAAGA,EAAE,CAACkhB,MAAMlhB,EAAEqrG,eAAezmF,IAAI5kB,EAAEsrG,cAAuFtrG,EAAE,CAACwrG,YAA3ExrG,GAAGA,EAAEkG,eAAelG,EAAEkG,cAAcg+F,aAAan/F,QAAQwyC,gBAA+Bi0D,WAAWC,aAAazrG,EAAEyrG,aAAaC,UAAU1rG,EAAE0rG,UAAUC,YAAY3rG,EAAE2rG,aAAqBO,IAAI3H,GAAG2H,GAAGlsG,GAAG,MAAMksG,GAAGlsG,GAAEqE,EAAEspB,GAAE+rE,UAAUqS,GAAG16D,OAAO46D,GAAG5nG,EAAEC,IAAKuG,KAAK,SAASxG,EAAEvC,OAAOkqG,GAAGtU,EAAGrzF,GAAGA,IAC1d,IAAIgoG,GAAG,CAACtX,WAAWgX,GAAGjX,cAAc,SAASzwF,EAAEC,EAAEtE,EAAEC,GAAG,IAA+DuE,EAA3DD,EAAEtE,EAAE8E,SAAS9E,EAAEA,EAAE+E,SAAS,IAAI/E,EAAEkT,SAASlT,EAAEA,EAAEiG,cAAgB,KAAK1B,GAAGD,GAAG,CAACF,EAAE,CAACE,EAAEkmG,GAAGlmG,GAAGC,EAAE6wF,EAAGiX,SAAS,IAAI,IAAI9c,EAAE,EAAEA,EAAEhrF,EAAExC,OAAOwtF,IAAI,CAAC,IAAIC,EAAEjrF,EAAEgrF,GAAG,IAAIjrF,EAAE/C,eAAeiuF,KAAKlrF,EAAEkrF,GAAG,CAAClrF,GAAE,EAAG,MAAMF,GAAGE,GAAE,EAAGC,GAAGD,EAAE,GAAGC,EAAE,OAAO,KAAsB,OAAjBD,EAAED,EAAE0yF,EAAG1yF,GAAGS,OAAcV,GAAG,IAAK,SAAWy4F,GAAGv4F,IAAI,SAASA,EAAE4X,mBAAgB6vF,GAAGznG,EAAE0nG,GAAG3nG,EAAE4nG,GAAG,MAAK,MAAM,IAAK,OAAOA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAU,OAAOA,IAAG,EAAGC,GAAGpsG,EAAEC,GAAG,IAAK,kBAAkB,GAAG6rG,GAAG,MACjhB,IAAK,UAAU,IAAK,QAAQ,OAAOM,GAAGpsG,EAAEC,GAAG,OAAO,OAClD,SAASssG,GAAGloG,EAAEC,GAA6D,OAA1DD,EAAEjD,EAAE,CAACiJ,cAAS,GAAQ/F,IAAMA,EAD+U,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApD8qF,EAAG8C,SAASxqF,QAAQrD,EAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,KAAYC,EAChakoG,CAAGloG,EAAE+F,aAAUhG,EAAEgG,SAAS/F,GAASD,EAAE,SAASooG,GAAGpoG,EAAEC,EAAEtE,EAAEC,GAAe,GAAZoE,EAAEA,EAAE2F,QAAW1F,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEvE,EAAEgC,OAAOuC,IAAID,EAAE,IAAItE,EAAEuE,KAAI,EAAG,IAAIvE,EAAE,EAAEA,EAAEqE,EAAErC,OAAOhC,IAAIuE,EAAED,EAAE9C,eAAe,IAAI6C,EAAErE,GAAGY,OAAOyD,EAAErE,GAAGygB,WAAWlc,IAAIF,EAAErE,GAAGygB,SAASlc,GAAGA,GAAGtE,IAAIoE,EAAErE,GAAG0sG,iBAAgB,OAAQ,CAAmB,IAAlB1sG,EAAE,GAAG+/F,GAAG//F,GAAGsE,EAAE,KAASC,EAAE,EAAEA,EAAEF,EAAErC,OAAOuC,IAAI,CAAC,GAAGF,EAAEE,GAAG3D,QAAQZ,EAAiD,OAA9CqE,EAAEE,GAAGkc,UAAS,OAAGxgB,IAAIoE,EAAEE,GAAGmoG,iBAAgB,IAAW,OAAOpoG,GAAGD,EAAEE,GAAGoY,WAAWrY,EAAED,EAAEE,IAAI,OAAOD,IAAIA,EAAEmc,UAAS,IACxd,SAASksF,GAAGtoG,EAAEC,GAAkD,OAA/C,MAAMA,EAAEsoG,yBAAwBx/E,EAAE,MAAoBhsB,EAAE,GAAGkD,EAAE,CAAC1D,WAAM,EAAOs/F,kBAAa,EAAO71F,SAAS,GAAGhG,EAAE87F,cAAcr+B,eAAe,SAAS+qC,GAAGxoG,EAAEC,GAAG,IAAItE,EAAEsE,EAAE1D,MAAM,MAAMZ,IAAIA,EAAEsE,EAAE47F,aAA0B,OAAb57F,EAAEA,EAAE+F,YAAmB,MAAMrK,GAAEotB,EAAE,MAAanqB,MAAMC,QAAQoB,KAAK,GAAGA,EAAEtC,QAAcorB,EAAE,MAAM9oB,EAAEA,EAAE,IAAItE,EAAEsE,GAAG,MAAMtE,IAAIA,EAAE,KAAKqE,EAAE87F,cAAc,CAACr+B,aAAai+B,GAAG//F,IAChX,SAAS8sG,GAAGzoG,EAAEC,GAAG,IAAItE,EAAE+/F,GAAGz7F,EAAE1D,OAAOX,EAAE8/F,GAAGz7F,EAAE47F,cAAc,MAAMlgG,KAAIA,EAAE,GAAGA,KAAMqE,EAAEzD,QAAQyD,EAAEzD,MAAMZ,GAAG,MAAMsE,EAAE47F,cAAc77F,EAAE67F,eAAelgG,IAAIqE,EAAE67F,aAAalgG,IAAI,MAAMC,IAAIoE,EAAE67F,aAAa,GAAGjgG,GAAG,SAAS8sG,GAAG1oG,GAAG,IAAIC,EAAED,EAAEouE,YAAYnuE,IAAID,EAAE87F,cAAcr+B,eAAez9D,EAAEzD,MAAM0D,GAHpN8xF,EAAGC,uBAAuB,0HAA0HnkF,MAAM,MAAMqjF,EAAG0B,EAAG/0C,EAAG60C,EAAGvB,EAAGwB,EAAGZ,EAAGE,yBAAyB,CAAC0W,kBAAkBvD,GAAGwD,sBAAsBhJ,GAAGiJ,kBAAkBvL,GAAGwL,kBAAkBd,GAAGe,uBAAuB7R,KAGvG,IAAI8R,GAAG,CAACtjC,KAAK,+BAA+BujC,OAAO,qCAAqCC,IAAI,8BAC5W,SAASC,GAAGnpG,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASopG,GAAGppG,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEmpG,GAAGlpG,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAIqpG,QAAG,EAAOC,GAAG,SAAStpG,GAAG,MAAM,oBAAqBupG,OAAOA,MAAMC,wBAAwB,SAASvpG,EAAEtE,EAAEC,EAAEsE,GAAGqpG,MAAMC,wBAAwB,WAAW,OAAOxpG,EAAEC,EAAEtE,MAAUqE,EAA5J,CAA+J,SAASA,EAAEC,GAAG,GAAGD,EAAEypG,eAAeT,GAAGE,KAAK,cAAclpG,EAAEA,EAAE+9B,UAAU99B,MAAM,CAAsE,KAArEopG,GAAGA,IAAI1oG,SAASC,cAAc,QAAUm9B,UAAU,QAAQ99B,EAAE,SAAaA,EAAEopG,GAAG16E,WAAW3uB,EAAE2uB,YAAY3uB,EAAE6C,YAAY7C,EAAE2uB,YAAY,KAAK1uB,EAAE0uB,YAAY3uB,EAAE0C,YAAYzC,EAAE0uB,eACna,SAAS+6E,GAAG1pG,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAItE,EAAEqE,EAAE2uB,WAAW,GAAGhzB,GAAGA,IAAIqE,EAAE2pG,WAAW,IAAIhuG,EAAEmT,SAAwB,YAAdnT,EAAEiuG,UAAU3pG,GAAUD,EAAEouE,YAAYnuE,EACrH,IAAI4pG,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGz1F,SAAQ,EAAG01F,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGngF,YAAW,EAAGogF,WAAU,EAAGC,YAAW,EAAG1/E,SAAQ,EAAGlH,OAAM,EAAG6mF,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGhhF,aAAY,EAC1fG,cAAa,EAAGkB,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGG,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIq/E,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG7rG,EAAEC,EAAEtE,GAAG,OAAO,MAAMsE,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGtE,GAAG,iBAAkBsE,GAAG,IAAIA,GAAG4pG,GAAG1sG,eAAe6C,IAAI6pG,GAAG7pG,IAAI,GAAGC,GAAGqqD,OAAOrqD,EAAE,KAC9Z,SAAS6rG,GAAG9rG,EAAEC,GAAa,IAAI,IAAItE,KAAlBqE,EAAEA,EAAEmC,MAAmBlC,EAAE,GAAGA,EAAE9C,eAAexB,GAAG,CAAC,IAAIC,EAAE,IAAID,EAAEyC,QAAQ,MAAM8B,EAAE2rG,GAAGlwG,EAAEsE,EAAEtE,GAAGC,GAAG,UAAUD,IAAIA,EAAE,YAAYC,EAAEoE,EAAE+rG,YAAYpwG,EAAEuE,GAAGF,EAAErE,GAAGuE,GADTlE,OAAOmC,KAAK0rG,IAAIxmG,QAAQ,SAASrD,GAAG4rG,GAAGvoG,QAAQ,SAASpD,GAAGA,EAAEA,EAAED,EAAEspD,OAAO,GAAG94C,cAAcxQ,EAAEgsG,UAAU,GAAGnC,GAAG5pG,GAAG4pG,GAAG7pG,OACrG,IAAIisG,GAAGlvG,EAAE,CAACmvG,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGx8E,KAAI,EAAGy8E,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGruD,OAAM,EAAGsuD,QAAO,EAAG73D,MAAK,EAAG83D,MAAK,EAAGC,OAAM,EAAG/uG,QAAO,EAAGgvG,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG9sG,EAAEC,GAAGA,IAAIgsG,GAAGjsG,KAAK,MAAMC,EAAE+F,UAAU,MAAM/F,EAAEsoG,0BAAwBx/E,EAAE,MAAM/oB,EAAE,IAAY,MAAMC,EAAEsoG,0BAA0B,MAAMtoG,EAAE+F,UAAS+iB,EAAE,MAAa,iBAAkB9oB,EAAEsoG,yBAAyB,WAAWtoG,EAAEsoG,yBAA+Bx/E,EAAE,OAAO,MAAM9oB,EAAEkC,OAAO,iBAAkBlC,EAAEkC,OAAM4mB,EAAE,KAAK,KACzT,SAASmhE,GAAGlqF,EAAEC,GAAG,IAAI,IAAID,EAAE5B,QAAQ,KAAK,MAAM,iBAAkB6B,EAAEgM,GAAG,OAAOjM,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAC/Q,SAAS+sG,GAAG/sG,EAAEC,GAAuD,IAAItE,EAAEyqG,GAA1DpmG,EAAE,IAAIA,EAAE8O,UAAU,KAAK9O,EAAE8O,SAAS9O,EAAEA,EAAE6B,eAA0B5B,EAAE+wF,EAAG/wF,GAAG,IAAI,IAAIrE,EAAE,EAAEA,EAAEqE,EAAEtC,OAAO/B,IAAI,CAAC,IAAIsE,EAAED,EAAErE,GAAG,IAAID,EAAEwB,eAAe+C,KAAKvE,EAAEuE,GAAG,CAAC,OAAOA,GAAG,IAAK,SAAS8lG,GAAG,SAAShmG,GAAG,MAAM,IAAK,QAAQ,IAAK,OAAOgmG,GAAG,QAAQhmG,GAAGgmG,GAAG,OAAOhmG,GAAGrE,EAAEghE,MAAK,EAAGhhE,EAAEuhC,OAAM,EAAG,MAAM,IAAK,SAAS,IAAK,QAAQ27D,GAAG34F,IAAI8lG,GAAG9lG,EAAEF,GAAG,MAAM,IAAK,UAAU,IAAK,SAAS,IAAK,QAAQ,MAAM,SAAS,IAAIq0F,GAAGj2F,QAAQ8B,IAAI0rF,GAAE1rF,EAAEF,GAAGrE,EAAEuE,IAAG,IAAK,SAAS8sG,MAAM,IAAIC,GAAG,KAAKC,GAAG,KACvc,SAASC,GAAGntG,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEgX,UAAU,OAAM,EAAG,SAASm2F,GAAGptG,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,iBAAkBC,EAAE+F,UAAU,iBAAkB/F,EAAE+F,UAAU,iBAAkB/F,EAAEsoG,yBAAyB,OAAOtoG,EAAEsoG,yBAAyB,MAAMtoG,EAAEsoG,wBAAwB8E,OACjW,IAAIC,GAAG,mBAAoBnjG,WAAWA,gBAAW,EAAOojG,GAAG,mBAAoB5hG,aAAaA,kBAAa,EAAO6hG,GAAGpxG,EAAEqxG,0BAA0BC,GAAGtxG,EAAEuxG,wBAEvG,SAASC,GAAG5tG,GAAG,IAAIA,EAAEA,EAAEqxB,YAAYrxB,GAAG,IAAIA,EAAE8O,UAAU,IAAI9O,EAAE8O,UAAU9O,EAAEA,EAAEqxB,YAAY,OAAOrxB,EAAE,SAAS6tG,GAAG7tG,GAAG,IAAIA,EAAEA,EAAE2uB,WAAW3uB,GAAG,IAAIA,EAAE8O,UAAU,IAAI9O,EAAE8O,UAAU9O,EAAEA,EAAEqxB,YAAY,OAAOrxB,EAAE,IAAI8tG,IAAI,IAAIC,GAAG,GAAGC,IAAI,EAAE,SAASjiB,GAAE/rF,GAAG,EAAEguG,KAAKhuG,EAAEu/D,QAAQwuC,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAAM,SAAShiB,GAAEhsF,EAAEC,GAAQ8tG,KAALC,IAAYhuG,EAAEu/D,QAAQv/D,EAAEu/D,QAAQt/D,EAAE,IAAIguG,GAAG,GAAG9hB,GAAE,CAAC5sB,QAAQ0uC,IAAI5hB,GAAE,CAAC9sB,SAAQ,GAAI2uC,GAAGD,GACvZ,SAASE,GAAGnuG,EAAEC,GAAG,IAAItE,EAAEqE,EAAEwG,KAAK4nG,aAAa,IAAIzyG,EAAE,OAAOsyG,GAAG,IAAIryG,EAAEoE,EAAEmyF,UAAU,GAAGv2F,GAAGA,EAAEyyG,8CAA8CpuG,EAAE,OAAOrE,EAAE0yG,0CAA0C,IAASnuG,EAALD,EAAE,GAAK,IAAIC,KAAKxE,EAAEuE,EAAEC,GAAGF,EAAEE,GAAoH,OAAjHvE,KAAIoE,EAAEA,EAAEmyF,WAAYkc,4CAA4CpuG,EAAED,EAAEsuG,0CAA0CpuG,GAAUA,EAAE,SAASosF,GAAEtsF,GAAyB,OAAO,OAA7BA,EAAEA,EAAEuuG,mBAA8C,SAASC,GAAGxuG,GAAG+rF,GAAEM,IAAKN,GAAEI,IAAK,SAASsiB,GAAGzuG,GAAG+rF,GAAEM,IAAKN,GAAEI,IACvc,SAASuiB,GAAG1uG,EAAEC,EAAEtE,GAAGwwF,GAAE5sB,UAAU0uC,IAAGllF,EAAE,OAAcijE,GAAEG,GAAElsF,GAAK+rF,GAAEK,GAAE1wF,GAAK,SAASgzG,GAAG3uG,EAAEC,EAAEtE,GAAG,IAAIC,EAAEoE,EAAEmyF,UAAgC,GAAtBnyF,EAAEC,EAAEsuG,kBAAqB,mBAAoB3yG,EAAEgzG,gBAAgB,OAAOjzG,EAAwB,IAAI,IAAIuE,KAA9BtE,EAAEA,EAAEgzG,kBAAiC1uG,KAAKF,GAAS+oB,EAAE,MAAMqxE,GAAGn6F,IAAI,UAAUC,GAAG,OAAOnD,EAAE,GAAGpB,EAAEC,GAAG,SAASizG,GAAG7uG,GAAG,IAAIC,EAAED,EAAEmyF,UAAsG,OAA5FlyF,EAAEA,GAAGA,EAAE6uG,2CAA2Cb,GAAGC,GAAG/hB,GAAE5sB,QAAQysB,GAAEG,GAAElsF,GAAK+rF,GAAEK,GAAEA,GAAE9sB,UAAiB,EACpZ,SAASwvC,GAAG/uG,EAAEC,EAAEtE,GAAG,IAAIC,EAAEoE,EAAEmyF,UAAUv2F,GAASmtB,EAAE,OAAOptB,GAAGsE,EAAE0uG,GAAG3uG,EAAEC,EAAEiuG,IAAItyG,EAAEkzG,0CAA0C7uG,EAAE8rF,GAAEM,IAAKN,GAAEI,IAAKH,GAAEG,GAAElsF,IAAM8rF,GAAEM,IAAKL,GAAEK,GAAE1wF,GAAK,IAAIqzG,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGlvG,GAAG,OAAO,SAASC,GAAG,IAAI,OAAOD,EAAEC,GAAG,MAAMtE,MAEzO,SAASwzG,GAAGnvG,EAAEC,EAAEtE,EAAEC,GAAGkC,KAAK20F,IAAIzyF,EAAElC,KAAKjB,IAAIlB,EAAEmC,KAAKyiG,QAAQziG,KAAKy4D,MAAMz4D,KAAKg1F,OAAOh1F,KAAKq0F,UAAUr0F,KAAK0I,KAAK1I,KAAKsxG,YAAY,KAAKtxG,KAAKizB,MAAM,EAAEjzB,KAAKmS,IAAI,KAAKnS,KAAKuxG,aAAapvG,EAAEnC,KAAKwxG,oBAAoBxxG,KAAKyxG,cAAczxG,KAAK0xG,YAAY1xG,KAAK2xG,cAAc,KAAK3xG,KAAKrB,KAAKb,EAAEkC,KAAKsiG,UAAU,EAAEtiG,KAAK4xG,WAAW5xG,KAAK6xG,YAAY7xG,KAAK8xG,WAAW,KAAK9xG,KAAK+xG,oBAAoB/xG,KAAKgyG,eAAe,EAAEhyG,KAAKiiG,UAAU,KAAK,SAASxT,GAAEvsF,EAAEC,EAAEtE,EAAEC,GAAG,OAAO,IAAIuzG,GAAGnvG,EAAEC,EAAEtE,EAAEC,GAChc,SAASm0G,GAAG/vG,GAAiB,UAAdA,EAAEA,EAAE9C,aAAuB8C,EAAEisF,kBAC5C,SAAS+jB,GAAGhwG,EAAEC,GAAG,IAAItE,EAAEqE,EAAE+/F,UACG,OADO,OAAOpkG,IAAGA,EAAE4wF,GAAEvsF,EAAEyyF,IAAIxyF,EAAED,EAAEnD,IAAImD,EAAEvD,OAAQ2yG,YAAYpvG,EAAEovG,YAAYzzG,EAAE6K,KAAKxG,EAAEwG,KAAK7K,EAAEw2F,UAAUnyF,EAAEmyF,UAAUx2F,EAAEokG,UAAU//F,EAAEA,EAAE+/F,UAAUpkG,IAAIA,EAAE0zG,aAAapvG,EAAEtE,EAAEykG,UAAU,EAAEzkG,EAAEi0G,WAAW,KAAKj0G,EAAEg0G,YAAY,KAAKh0G,EAAE+zG,WAAW,MAAM/zG,EAAEk0G,oBAAoB7vG,EAAE6vG,oBAAoBl0G,EAAEm0G,eAAe9vG,EAAE8vG,eAAen0G,EAAE46D,MAAMv2D,EAAEu2D,MAAM56D,EAAE8zG,cAAczvG,EAAEyvG,cAAc9zG,EAAE4zG,cAAcvvG,EAAEuvG,cAAc5zG,EAAE6zG,YAAYxvG,EAAEwvG,YAAY7zG,EAAE2zG,oBAAoBtvG,EAAEsvG,oBAAoB3zG,EAAE4kG,QAAQvgG,EAAEugG,QAChf5kG,EAAEo1B,MAAM/wB,EAAE+wB,MAAMp1B,EAAEsU,IAAIjQ,EAAEiQ,IAAWtU,EACnC,SAASs0G,GAAGjwG,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAG,IAAIgrF,EAAE,EAAM,GAAJvvF,EAAEoE,EAAK,mBAAoBA,EAAE+vG,GAAG/vG,KAAKmrF,EAAE,QAAQ,GAAG,iBAAkBnrF,EAAEmrF,EAAE,OAAOnrF,EAAE,OAAOA,GAAG,KAAKw5F,GAAG,OAAO0W,GAAGv0G,EAAEqK,SAAS9F,EAAEC,EAAEF,GAAG,KAAK45F,GAAG,OAAOsW,GAAGx0G,EAAI,EAAFuE,EAAIC,EAAEF,GAAG,KAAKw5F,GAAG,OAAO0W,GAAGx0G,EAAI,EAAFuE,EAAIC,EAAEF,GAAG,KAAKy5F,GAAG,OAAO15F,EAAEusF,GAAE,GAAG5wF,EAAEsE,EAAI,EAAFC,IAAOkvG,YAAY1V,GAAG15F,EAAEwG,KAAKkzF,GAAG15F,EAAE8vG,eAAe3vG,EAAEH,EAAE,KAAK+5F,GAAG,OAAO/5F,EAAEusF,GAAE,GAAG5wF,EAAEsE,EAAEC,IAAKkvG,YAAYrV,GAAG/5F,EAAEwG,KAAKuzF,GAAG/5F,EAAE8vG,eAAe3vG,EAAEH,EAAE,QAAQ,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,OAAOA,EAAE2sF,UAAU,KAAKgN,GAAGxO,EAAE,GAAG,MAAMnrF,EAAE,KAAK45F,GAAGzO,EAAE,EAAE,MAAMnrF,EAAE,KAAK85F,GAAG3O,EAAE,GAAG,MAAMnrF,EAAE,KAAKg6F,GAAG7O,EACxf,GAAG,MAAMnrF,EAAE,KAAKi6F,GAAG9O,EAAE,GAAGvvF,EAAE,KAAK,MAAMoE,EAAE+oB,EAAE,MAAM,MAAM/oB,EAAEA,SAASA,EAAE,IAA6D,OAAzDC,EAAEssF,GAAEpB,EAAExvF,EAAEsE,EAAEC,IAAKkvG,YAAYpvG,EAAEC,EAAEuG,KAAK5K,EAAEqE,EAAE6vG,eAAe3vG,EAASF,EAAE,SAASiwG,GAAGlwG,EAAEC,EAAEtE,EAAEC,GAAmC,OAAhCoE,EAAEusF,GAAE,EAAEvsF,EAAEpE,EAAEqE,IAAK6vG,eAAen0G,EAASqE,EAAE,SAASmwG,GAAGnwG,EAAEC,EAAEtE,EAAEC,GAA8E,OAA3EoE,EAAEusF,GAAE,EAAEvsF,EAAEpE,EAAEqE,GAAGA,EAAE,IAAO,EAAFA,GAAKw5F,GAAGI,GAAG75F,EAAEovG,YAAYnvG,EAAED,EAAEwG,KAAKvG,EAAED,EAAE8vG,eAAen0G,EAASqE,EAAE,SAASowG,GAAGpwG,EAAEC,EAAEtE,GAAsC,OAAnCqE,EAAEusF,GAAE,EAAEvsF,EAAE,KAAKC,IAAK6vG,eAAen0G,EAASqE,EAC5W,SAASqwG,GAAGrwG,EAAEC,EAAEtE,GAAsK,OAAnKsE,EAAEssF,GAAE,EAAE,OAAOvsF,EAAEgG,SAAShG,EAAEgG,SAAS,GAAGhG,EAAEnD,IAAIoD,IAAK6vG,eAAen0G,EAAEsE,EAAEkyF,UAAU,CAACwT,cAAc3lG,EAAE2lG,cAAc2K,gBAAgB,KAAKC,eAAevwG,EAAEuwG,gBAAuBtwG,EAAE,SAASuwG,GAAGxwG,EAAEC,GAAGD,EAAEywG,UAAS,EAAG,IAAI90G,EAAEqE,EAAE0wG,oBAAoB,IAAI/0G,EAAEqE,EAAE0wG,oBAAoB1wG,EAAE2wG,kBAAkB1wG,EAAEtE,EAAEsE,EAAED,EAAE0wG,oBAAoBzwG,EAAED,EAAE2wG,kBAAkB1wG,IAAID,EAAE2wG,kBAAkB1wG,GAAG2wG,GAAG3wG,EAAED,GAEvW,SAAS6wG,GAAG7wG,EAAEC,GAAGD,EAAEywG,UAAS,EAAGzwG,EAAE8wG,kBAAkB7wG,IAAID,EAAE8wG,iBAAiB,GAAG,IAAIn1G,EAAEqE,EAAE0wG,oBAAoB90G,EAAEoE,EAAE2wG,kBAAkBh1G,IAAIsE,EAAED,EAAE0wG,oBAAoB90G,IAAIqE,EAAED,EAAE2wG,kBAAkB,EAAE/0G,EAAEA,IAAIqE,IAAID,EAAE2wG,kBAAkBh1G,GAAGA,EAAEqE,EAAE+wG,sBAAsBn1G,EAAEoE,EAAEgxG,oBAAoB,IAAIr1G,EAAEqE,EAAE+wG,sBAAsB/wG,EAAEgxG,oBAAoB/wG,EAAEtE,EAAEsE,EAAED,EAAE+wG,sBAAsB9wG,EAAErE,EAAEqE,IAAID,EAAEgxG,oBAAoB/wG,GAAG2wG,GAAG3wG,EAAED,GACvZ,SAASixG,GAAGjxG,EAAEC,GAAG,IAAItE,EAAEqE,EAAE0wG,oBAAoE,OAAtB/0G,EAAEsE,IAAIA,EAAEtE,IAAlCqE,EAAEA,EAAE+wG,uBAAmC9wG,IAAIA,EAAED,GAAUC,EAAE,SAAS2wG,GAAG5wG,EAAEC,GAAG,IAAItE,EAAEsE,EAAE8wG,sBAAsBn1G,EAAEqE,EAAE+wG,oBAAoB9wG,EAAED,EAAEywG,oBAAoBvwG,EAAEF,EAAE6wG,iBAA6B,KAAZ5wG,EAAE,IAAIA,EAAEA,EAAEC,KAAU,IAAIH,GAAGpE,EAAEoE,KAAKE,EAAEtE,GAAO,KAAJoE,EAAEE,IAASvE,EAAEqE,IAAIA,EAAErE,GAAGsE,EAAEixG,2BAA2BhxG,EAAED,EAAE6vG,eAAe9vG,EAAE,SAAS0/E,GAAE1/E,EAAEC,GAAG,GAAGD,GAAGA,EAAE4P,aAAyC,IAAI,IAAIjU,KAAnCsE,EAAElD,EAAE,GAAGkD,GAAGD,EAAEA,EAAE4P,kBAA4B,IAAS3P,EAAEtE,KAAKsE,EAAEtE,GAAGqE,EAAErE,IAAI,OAAOsE,EAChG,IAAIkxG,IAAI,IAAIpmB,EAAGr1E,WAAWm2E,KACrX,SAASulB,GAAGpxG,EAAEC,EAAEtE,EAAEC,GAA8BD,EAAE,OAAXA,EAAEA,EAAEC,EAAtBqE,EAAED,EAAEuvG,gBAA8CtvG,EAAElD,EAAE,GAAGkD,EAAEtE,GAAGqE,EAAEuvG,cAAc5zG,EAAkB,QAAhBC,EAAEoE,EAAEwvG,cAAsB,IAAIxvG,EAAE8vG,iBAAiBl0G,EAAEy1G,UAAU11G,GAClK,IAAI21G,GAAG,CAAC/lB,UAAU,SAASvrF,GAAG,SAAOA,EAAEA,EAAEuxG,sBAAqB,IAAIpR,GAAGngG,IAAO0rF,gBAAgB,SAAS1rF,EAAEC,EAAEtE,GAAGqE,EAAEA,EAAEuxG,oBAAoB,IAAI31G,EAAE41G,KAAmBtxG,EAAEuxG,GAAhB71G,EAAE81G,GAAG91G,EAAEoE,IAAeE,EAAEyxG,QAAQ1xG,EAAE,MAAStE,IAAcuE,EAAE0G,SAASjL,GAAGi2G,KAAKC,GAAG7xG,EAAEE,GAAG4xG,GAAG9xG,EAAEpE,IAAI6vF,oBAAoB,SAASzrF,EAAEC,EAAEtE,GAAGqE,EAAEA,EAAEuxG,oBAAoB,IAAI31G,EAAE41G,KAAmBtxG,EAAEuxG,GAAhB71G,EAAE81G,GAAG91G,EAAEoE,IAAeE,EAAEuyF,IAAIsf,GAAG7xG,EAAEyxG,QAAQ1xG,EAAE,MAAStE,IAAcuE,EAAE0G,SAASjL,GAAGi2G,KAAKC,GAAG7xG,EAAEE,GAAG4xG,GAAG9xG,EAAEpE,IAAI4vF,mBAAmB,SAASxrF,EAAEC,GAAGD,EAAEA,EAAEuxG,oBAAoB,IAAI51G,EAAE61G,KAAmB51G,EAAE61G,GAAhB91G,EAAE+1G,GAAG/1G,EAAEqE,IAAepE,EAAE62F,IACrfuf,GAAG,MAAS/xG,IAAcrE,EAAEgL,SAAS3G,GAAG2xG,KAAKC,GAAG7xG,EAAEpE,GAAGk2G,GAAG9xG,EAAErE,KAAK,SAASs2G,GAAGjyG,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,EAAEgrF,GAAiB,MAAM,mBAApBnrF,EAAEA,EAAEmyF,WAAsC+f,sBAAsBlyG,EAAEkyG,sBAAsBt2G,EAAEuE,EAAEgrF,IAAGlrF,EAAE/C,YAAW+C,EAAE/C,UAAUkvF,wBAAsB8T,GAAGvkG,EAAEC,KAAKskG,GAAGhgG,EAAEC,IACvP,SAASgyG,GAAGnyG,EAAEC,EAAEtE,GAAG,IAAIC,GAAE,EAAGsE,EAAE+tG,GAAO9tG,EAAEF,EAAEmyG,YAA6W,MAAjW,iBAAkBjyG,GAAG,OAAOA,EAAEA,EAAEusF,GAAEvsF,IAAID,EAAEosF,GAAErsF,GAAGiuG,GAAG/hB,GAAE5sB,QAAyBp/D,GAAGvE,EAAE,OAAtBA,EAAEqE,EAAEmuG,eAAwCD,GAAGnuG,EAAEE,GAAG+tG,IAAIhuG,EAAE,IAAIA,EAAEtE,EAAEwE,GAAGH,EAAEuvG,cAAc,OAAOtvG,EAAEyI,YAAO,IAASzI,EAAEyI,MAAMzI,EAAEyI,MAAM,KAAKzI,EAAE6rF,QAAQwlB,GAAGtxG,EAAEmyF,UAAUlyF,EAAEA,EAAEsxG,oBAAoBvxG,EAAEpE,KAAIoE,EAAEA,EAAEmyF,WAAYkc,4CAA4CnuG,EAAEF,EAAEsuG,0CAA0CnuG,GAAUF,EAC7Z,SAASoyG,GAAGryG,EAAEC,EAAEtE,EAAEC,GAAGoE,EAAEC,EAAEyI,MAAM,mBAAoBzI,EAAEqyG,2BAA2BryG,EAAEqyG,0BAA0B32G,EAAEC,GAAG,mBAAoBqE,EAAEsyG,kCAAkCtyG,EAAEsyG,iCAAiC52G,EAAEC,GAAGqE,EAAEyI,QAAQ1I,GAAGsxG,GAAG7lB,oBAAoBxrF,EAAEA,EAAEyI,MAAM,MAC/P,SAAS8pG,GAAGxyG,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAEF,EAAEmyF,UAAUjyF,EAAE8C,MAAMrH,EAAEuE,EAAEwI,MAAM1I,EAAEuvG,cAAcrvG,EAAE2rF,KAAKslB,GAAG,IAAIhxG,EAAEF,EAAEmyG,YAAY,iBAAkBjyG,GAAG,OAAOA,EAAED,EAAE4gF,QAAQ4L,GAAEvsF,IAAIA,EAAEmsF,GAAErsF,GAAGiuG,GAAG/hB,GAAE5sB,QAAQr/D,EAAE4gF,QAAQqtB,GAAGnuG,EAAEG,IAAoB,QAAhBA,EAAEH,EAAEwvG,eAAuBiD,GAAGzyG,EAAEG,EAAExE,EAAEuE,EAAEtE,GAAGsE,EAAEwI,MAAM1I,EAAEuvG,eAA4C,mBAA7BpvG,EAAEF,EAAEoV,4BAAiD+7F,GAAGpxG,EAAEC,EAAEE,EAAExE,GAAGuE,EAAEwI,MAAM1I,EAAEuvG,eAAe,mBAAoBtvG,EAAEoV,0BAA0B,mBAAoBnV,EAAEqlF,yBAAyB,mBAAoBrlF,EAAEwyG,2BAA2B,mBACjexyG,EAAEyyG,qBAAqB1yG,EAAEC,EAAEwI,MAAM,mBAAoBxI,EAAEyyG,oBAAoBzyG,EAAEyyG,qBAAqB,mBAAoBzyG,EAAEwyG,2BAA2BxyG,EAAEwyG,4BAA4BzyG,IAAIC,EAAEwI,OAAO4oG,GAAG7lB,oBAAoBvrF,EAAEA,EAAEwI,MAAM,MAAsB,QAAhBvI,EAAEH,EAAEwvG,eAAuBiD,GAAGzyG,EAAEG,EAAExE,EAAEuE,EAAEtE,GAAGsE,EAAEwI,MAAM1I,EAAEuvG,gBAAgB,mBAAoBrvG,EAAEqU,oBAAoBvU,EAAEogG,WAAW,GAAG,IAAIwS,GAAGh0G,MAAMC,QACtX,SAASg0G,GAAG7yG,EAAEC,EAAEtE,GAAW,GAAG,QAAXqE,EAAErE,EAAEsU,MAAiB,mBAAoBjQ,GAAG,iBAAkBA,EAAE,CAAC,GAAGrE,EAAEixF,OAAO,CAACjxF,EAAEA,EAAEixF,OAAO,IAAIhxF,OAAE,EAAOD,IAAI,IAAIA,EAAE82F,KAAI1pE,EAAE,OAAcntB,EAAED,EAAEw2F,WAAWv2F,GAASmtB,EAAE,MAAM/oB,GAAG,IAAIE,EAAE,GAAGF,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAEgQ,KAAK,mBAAoBhQ,EAAEgQ,KAAKhQ,EAAEgQ,IAAI6iG,aAAa5yG,EAASD,EAAEgQ,MAAIhQ,EAAE,SAASD,GAAG,IAAIC,EAAErE,EAAEiwF,KAAK5rF,IAAIkxG,KAAKlxG,EAAErE,EAAEiwF,KAAK,IAAI,OAAO7rF,SAASC,EAAEC,GAAGD,EAAEC,GAAGF,IAAK8yG,WAAW5yG,EAASD,GAAE,iBAAkBD,GAAE+oB,EAAE,OAAcptB,EAAEixF,QAAc7jE,EAAE,MAAM/oB,GAAG,OAAOA,EACzc,SAAS+yG,GAAG/yG,EAAEC,GAAG,aAAaD,EAAEwG,MAAMuiB,EAAE,KAAK,oBAAoB/sB,OAAOkB,UAAU2gB,SAASpiB,KAAKwE,GAAG,qBAAqBjE,OAAOmC,KAAK8B,GAAGlB,KAAK,MAAM,IAAIkB,EAAE,IACxJ,SAAS+yG,GAAGhzG,GAAG,SAASC,EAAEA,EAAEtE,GAAG,GAAGqE,EAAE,CAAC,IAAIpE,EAAEqE,EAAEyvG,WAAW,OAAO9zG,GAAGA,EAAEg0G,WAAWj0G,EAAEsE,EAAEyvG,WAAW/zG,GAAGsE,EAAE0vG,YAAY1vG,EAAEyvG,WAAW/zG,EAAEA,EAAEi0G,WAAW,KAAKj0G,EAAEykG,UAAU,GAAG,SAASzkG,EAAEA,EAAEC,GAAG,IAAIoE,EAAE,OAAO,KAAK,KAAK,OAAOpE,GAAGqE,EAAEtE,EAAEC,GAAGA,EAAEA,EAAE2kG,QAAQ,OAAO,KAAK,SAAS3kG,EAAEoE,EAAEC,GAAG,IAAID,EAAE,IAAIizG,IAAI,OAAOhzG,GAAG,OAAOA,EAAEpD,IAAImD,EAAEk6E,IAAIj6E,EAAEpD,IAAIoD,GAAGD,EAAEk6E,IAAIj6E,EAAE8wB,MAAM9wB,GAAGA,EAAEA,EAAEsgG,QAAQ,OAAOvgG,EAAE,SAASE,EAAEF,EAAEC,EAAEtE,GAAwC,OAArCqE,EAAEgwG,GAAGhwG,EAAEC,IAAO8wB,MAAM,EAAE/wB,EAAEugG,QAAQ,KAAYvgG,EAAE,SAASG,EAAEF,EAAEtE,EAAEC,GAAa,OAAVqE,EAAE8wB,MAAMn1B,EAAMoE,EAA4B,QAAjBpE,EAAEqE,EAAE8/F,YAA6BnkG,EAAEA,EAAEm1B,OAAQp1B,GAAGsE,EAAEmgG,UACtf,EAAEzkG,GAAGC,GAAEqE,EAAEmgG,UAAU,EAASzkG,GADsaA,EACpa,SAASwvF,EAAElrF,GAA0C,OAAvCD,GAAG,OAAOC,EAAE8/F,YAAY9/F,EAAEmgG,UAAU,GAAUngG,EAAE,SAASmrF,EAAEprF,EAAEC,EAAEtE,EAAEC,GAAG,OAAG,OAAOqE,GAAG,IAAIA,EAAEwyF,MAAWxyF,EAAEmwG,GAAGz0G,EAAEqE,EAAEvD,KAAKb,IAAKk3F,OAAO9yF,EAAEC,KAAEA,EAAEC,EAAED,EAAEtE,IAAOm3F,OAAO9yF,EAASC,GAAE,SAAS1E,EAAEyE,EAAEC,EAAEtE,EAAEC,GAAG,OAAG,OAAOqE,GAAGA,EAAEmvG,cAAczzG,EAAE6K,OAAY5K,EAAEsE,EAAED,EAAEtE,EAAEqH,QAAWiN,IAAI4iG,GAAG7yG,EAAEC,EAAEtE,GAAGC,EAAEk3F,OAAO9yF,EAAEpE,KAAEA,EAAEq0G,GAAGt0G,EAAE6K,KAAK7K,EAAEkB,IAAIlB,EAAEqH,MAAM,KAAKhD,EAAEvD,KAAKb,IAAKqU,IAAI4iG,GAAG7yG,EAAEC,EAAEtE,GAAGC,EAAEk3F,OAAO9yF,EAASpE,GAAE,SAASqmB,EAAEjiB,EAAEC,EAAEtE,EAAEC,GAAG,OAAG,OAAOqE,GAAG,IAAIA,EAAEwyF,KAAKxyF,EAAEkyF,UAAUwT,gBAAgBhqG,EAAEgqG,eAAe1lG,EAAEkyF,UAAUoe,iBAC1e50G,EAAE40G,iBAAsBtwG,EAAEowG,GAAG10G,EAAEqE,EAAEvD,KAAKb,IAAKk3F,OAAO9yF,EAAEC,KAAEA,EAAEC,EAAED,EAAEtE,EAAEqK,UAAU,KAAQ8sF,OAAO9yF,EAASC,GAAE,SAASvE,EAAEsE,EAAEC,EAAEtE,EAAEC,EAAEuE,GAAG,OAAG,OAAOF,GAAG,IAAIA,EAAEwyF,MAAWxyF,EAAEiwG,GAAGv0G,EAAEqE,EAAEvD,KAAKb,EAAEuE,IAAK2yF,OAAO9yF,EAAEC,KAAEA,EAAEC,EAAED,EAAEtE,IAAOm3F,OAAO9yF,EAASC,GAAE,SAAS7C,EAAE4C,EAAEC,EAAEtE,GAAG,GAAG,iBAAkBsE,GAAG,iBAAkBA,EAAE,OAAOA,EAAEmwG,GAAG,GAAGnwG,EAAED,EAAEvD,KAAKd,IAAKm3F,OAAO9yF,EAAEC,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE0sF,UAAU,KAAK2M,GAAG,OAAO39F,EAAEs0G,GAAGhwG,EAAEuG,KAAKvG,EAAEpD,IAAIoD,EAAE+C,MAAM,KAAKhD,EAAEvD,KAAKd,IAAKsU,IAAI4iG,GAAG7yG,EAAE,KAAKC,GAAGtE,EAAEm3F,OAAO9yF,EAAErE,EAAE,KAAK49F,GAAG,OAAOt5F,EAAEowG,GAAGpwG,EAAED,EAAEvD,KAAKd,IAAKm3F,OAAO9yF,EAAEC,EAAE,GAAG2yG,GAAG3yG,IAC3fk6F,GAAGl6F,GAAG,OAAOA,EAAEiwG,GAAGjwG,EAAED,EAAEvD,KAAKd,EAAE,OAAQm3F,OAAO9yF,EAAEC,EAAE8yG,GAAG/yG,EAAEC,GAAG,OAAO,KAAK,SAASzD,EAAEwD,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAE,OAAOD,EAAEA,EAAEpD,IAAI,KAAK,GAAG,iBAAkBlB,GAAG,iBAAkBA,EAAE,OAAO,OAAOuE,EAAE,KAAKkrF,EAAEprF,EAAEC,EAAE,GAAGtE,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEgxF,UAAU,KAAK2M,GAAG,OAAO39F,EAAEkB,MAAMqD,EAAEvE,EAAE6K,OAAOgzF,GAAG99F,EAAEsE,EAAEC,EAAEtE,EAAEqH,MAAMgD,SAASpK,EAAEsE,GAAG3E,EAAEyE,EAAEC,EAAEtE,EAAEC,GAAG,KAAK,KAAK29F,GAAG,OAAO59F,EAAEkB,MAAMqD,EAAE+hB,EAAEjiB,EAAEC,EAAEtE,EAAEC,GAAG,KAAK,GAAGg3G,GAAGj3G,IAAIw+F,GAAGx+F,GAAG,OAAO,OAAOuE,EAAE,KAAKxE,EAAEsE,EAAEC,EAAEtE,EAAEC,EAAE,MAAMm3G,GAAG/yG,EAAErE,GAAG,OAAO,KAAK,SAASsvF,EAAEjrF,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,GAAG,iBAAkBtE,GAAG,iBAAkBA,EAAE,OAC5ewvF,EAAEnrF,EADifD,EAClgBA,EAAE7D,IAAIR,IAAI,KAAW,GAAGC,EAAEsE,GAAG,GAAG,iBAAkBtE,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+wF,UAAU,KAAK2M,GAAG,OAAOt5F,EAAEA,EAAE7D,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAKjB,EAAE4K,OAAOgzF,GAAG99F,EAAEuE,EAAED,EAAEpE,EAAEoH,MAAMgD,SAAS9F,EAAEtE,EAAEiB,KAAKtB,EAAE0E,EAAED,EAAEpE,EAAEsE,GAAG,KAAKq5F,GAAG,OAA2Ct3E,EAAEhiB,EAAtCD,EAAEA,EAAE7D,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAWjB,EAAEsE,GAAG,GAAG0yG,GAAGh3G,IAAIu+F,GAAGv+F,GAAG,OAAwBF,EAAEuE,EAAnBD,EAAEA,EAAE7D,IAAIR,IAAI,KAAWC,EAAEsE,EAAE,MAAM6yG,GAAG9yG,EAAErE,GAAG,OAAO,KAAK,SAASivF,EAAE3qF,EAAEirF,EAAEC,EAAEnpE,GAAG,IAAI,IAAI1mB,EAAE,KAAKG,EAAE,KAAKivF,EAAEQ,EAAEP,EAAEO,EAAE,EAAED,EAAE,KAAK,OAAOP,GAAGC,EAAEQ,EAAEztF,OAAOitF,IAAI,CAACD,EAAE55D,MAAM65D,GAAGM,EAAEP,EAAEA,EAAE,MAAMO,EAAEP,EAAE4V,QAAQ,IAAIzV,EAAEtuF,EAAE0D,EAAEyqF,EAAES,EAAER,GAAG3oE,GAAG,GAAG,OAAO6oE,EAAE,CAAC,OAAOH,IAAIA,EAAEO,GAAG,MAAMlrF,GACrf2qF,GAAG,OAAOG,EAAEiV,WAAW9/F,EAAEC,EAAEyqF,GAAGQ,EAAEhrF,EAAE2qF,EAAEK,EAAEP,GAAG,OAAOlvF,EAAEH,EAAEuvF,EAAEpvF,EAAE6kG,QAAQzV,EAAEpvF,EAAEovF,EAAEH,EAAEO,EAAE,GAAGN,IAAIQ,EAAEztF,OAAO,OAAOhC,EAAEuE,EAAEyqF,GAAGpvF,EAAE,GAAG,OAAOovF,EAAE,CAAC,KAAKC,EAAEQ,EAAEztF,OAAOitF,KAAOD,EAAEvtF,EAAE8C,EAAEkrF,EAAER,GAAG3oE,MAAGkpE,EAAEhrF,EAAEwqF,EAAEQ,EAAEP,GAAG,OAAOlvF,EAAEH,EAAEovF,EAAEjvF,EAAE6kG,QAAQ5V,EAAEjvF,EAAEivF,GAAE,OAAOpvF,EAAE,IAAIovF,EAAE/uF,EAAEsE,EAAEyqF,GAAGC,EAAEQ,EAAEztF,OAAOitF,KAAOM,EAAED,EAAEN,EAAEzqF,EAAE0qF,EAAEQ,EAAER,GAAG3oE,MAAGjiB,GAAG,OAAOkrF,EAAE6U,WAAWpV,EAAEn0D,OAAO,OAAO00D,EAAEruF,IAAI+tF,EAAEM,EAAEruF,KAAKsuF,EAAEhrF,EAAE+qF,EAAEC,EAAEP,GAAG,OAAOlvF,EAAEH,EAAE2vF,EAAExvF,EAAE6kG,QAAQrV,EAAExvF,EAAEwvF,GAA2C,OAAzClrF,GAAG2qF,EAAEtnF,QAAQ,SAASrD,GAAG,OAAOC,EAAEC,EAAEF,KAAYzE,EAAE,SAAS0xF,EAAE/sF,EAAEirF,EAAEC,EAAEnpE,GAAG,IAAI1mB,EAAE4+F,GAAG/O,GAAG,mBAAoB7vF,GAAEwtB,EAAE,OAA0B,OAAZqiE,EAAE7vF,EAAEE,KAAK2vF,KAAWriE,EAAE,OAC1e,IAAI,IAAIrtB,EAAEH,EAAE,KAAKovF,EAAEQ,EAAEP,EAAEO,EAAE,EAAED,EAAE,KAAKJ,EAAEM,EAAEn3C,OAAO,OAAO02C,IAAIG,EAAE/D,KAAK6D,IAAIE,EAAEM,EAAEn3C,OAAO,CAAC02C,EAAE55D,MAAM65D,GAAGM,EAAEP,EAAEA,EAAE,MAAMO,EAAEP,EAAE4V,QAAQ,IAAI1V,EAAEruF,EAAE0D,EAAEyqF,EAAEG,EAAEvuF,MAAM0lB,GAAG,GAAG,OAAO4oE,EAAE,CAACF,IAAIA,EAAEO,GAAG,MAAMlrF,GAAG2qF,GAAG,OAAOE,EAAEkV,WAAW9/F,EAAEC,EAAEyqF,GAAGQ,EAAEhrF,EAAE0qF,EAAEM,EAAEP,GAAG,OAAOlvF,EAAEH,EAAEsvF,EAAEnvF,EAAE6kG,QAAQ1V,EAAEnvF,EAAEmvF,EAAEF,EAAEO,EAAE,GAAGJ,EAAE/D,KAAK,OAAOprF,EAAEuE,EAAEyqF,GAAGpvF,EAAE,GAAG,OAAOovF,EAAE,CAAC,MAAMG,EAAE/D,KAAK6D,IAAIE,EAAEM,EAAEn3C,OAAwB,QAAjB62C,EAAE1tF,EAAE8C,EAAE4qF,EAAEvuF,MAAM0lB,MAAckpE,EAAEhrF,EAAE2qF,EAAEK,EAAEP,GAAG,OAAOlvF,EAAEH,EAAEuvF,EAAEpvF,EAAE6kG,QAAQzV,EAAEpvF,EAAEovF,GAAG,OAAOvvF,EAAE,IAAIovF,EAAE/uF,EAAEsE,EAAEyqF,IAAIG,EAAE/D,KAAK6D,IAAIE,EAAEM,EAAEn3C,OAA4B,QAArB62C,EAAEG,EAAEN,EAAEzqF,EAAE0qF,EAAEE,EAAEvuF,MAAM0lB,MAAcjiB,GAAG,OAAO8qF,EAAEiV,WAAWpV,EAAEn0D,OAAO,OAAOs0D,EAAEjuF,IAAI+tF,EACpfE,EAAEjuF,KAAKsuF,EAAEhrF,EAAE2qF,EAAEK,EAAEP,GAAG,OAAOlvF,EAAEH,EAAEuvF,EAAEpvF,EAAE6kG,QAAQzV,EAAEpvF,EAAEovF,GAA4C,OAAzC9qF,GAAG2qF,EAAEtnF,QAAQ,SAASrD,GAAG,OAAOC,EAAEC,EAAEF,KAAYzE,EAAE,OAAO,SAASyE,EAAEpE,EAAEuE,EAAEirF,GAAG,IAAInpE,EAAE,iBAAkB9hB,GAAG,OAAOA,GAAGA,EAAEqG,OAAOgzF,IAAI,OAAOr5F,EAAEtD,IAAIolB,IAAI9hB,EAAEA,EAAE6C,MAAMgD,UAAU,IAAIzK,EAAE,iBAAkB4E,GAAG,OAAOA,EAAE,GAAG5E,EAAE,OAAO4E,EAAEwsF,UAAU,KAAK2M,GAAGt5F,EAAE,CAAS,IAARzE,EAAE4E,EAAEtD,IAAQolB,EAAErmB,EAAE,OAAOqmB,GAAG,CAAC,GAAGA,EAAEplB,MAAMtB,EAAX,CAAa,GAAG,IAAI0mB,EAAEwwE,IAAItyF,EAAEqG,OAAOgzF,GAAGv3E,EAAEmtF,cAAcjvG,EAAEqG,KAAK,CAAC7K,EAAEqE,EAAEiiB,EAAEs+E,UAAS3kG,EAAEsE,EAAE+hB,EAAE9hB,EAAEqG,OAAOgzF,GAAGr5F,EAAE6C,MAAMgD,SAAS7F,EAAE6C,QAAWiN,IAAI4iG,GAAG7yG,EAAEiiB,EAAE9hB,GAAGvE,EAAEk3F,OAAO9yF,EAAEA,EAAEpE,EAAE,MAAMoE,EAAOrE,EAAEqE,EAAEiiB,GAAG,MAAWhiB,EAAED,EAAEiiB,GAAGA,EACpfA,EAAEs+E,QAAQpgG,EAAEqG,OAAOgzF,KAAI59F,EAAEs0G,GAAG/vG,EAAE6C,MAAMgD,SAAShG,EAAEvD,KAAK2uF,EAAEjrF,EAAEtD,MAAOi2F,OAAO9yF,EAAEA,EAAEpE,KAAIwvF,EAAE6kB,GAAG9vG,EAAEqG,KAAKrG,EAAEtD,IAAIsD,EAAE6C,MAAM,KAAKhD,EAAEvD,KAAK2uF,IAAKn7E,IAAI4iG,GAAG7yG,EAAEpE,EAAEuE,GAAGirF,EAAE0H,OAAO9yF,EAAEA,EAAEorF,GAAG,OAAOD,EAAEnrF,GAAG,KAAKu5F,GAAGv5F,EAAE,CAAC,IAAIiiB,EAAE9hB,EAAEtD,IAAI,OAAOjB,GAAG,CAAC,GAAGA,EAAEiB,MAAMolB,EAAX,CAAa,GAAG,IAAIrmB,EAAE62F,KAAK72F,EAAEu2F,UAAUwT,gBAAgBxlG,EAAEwlG,eAAe/pG,EAAEu2F,UAAUoe,iBAAiBpwG,EAAEowG,eAAe,CAAC50G,EAAEqE,EAAEpE,EAAE2kG,UAAS3kG,EAAEsE,EAAEtE,EAAEuE,EAAE6F,UAAU,KAAQ8sF,OAAO9yF,EAAEA,EAAEpE,EAAE,MAAMoE,EAAOrE,EAAEqE,EAAEpE,GAAG,MAAWqE,EAAED,EAAEpE,GAAGA,EAAEA,EAAE2kG,SAAQ3kG,EAAEy0G,GAAGlwG,EAAEH,EAAEvD,KAAK2uF,IAAK0H,OAAO9yF,EAAEA,EAAEpE,EAAE,OAAOuvF,EAAEnrF,GAAG,GAAG,iBAAkBG,GAAG,iBAAkBA,EAAE,OAAOA,EACngB,GAAGA,EAAE,OAAOvE,GAAG,IAAIA,EAAE62F,KAAK92F,EAAEqE,EAAEpE,EAAE2kG,UAAS3kG,EAAEsE,EAAEtE,EAAEuE,IAAO2yF,OAAO9yF,EAAEA,EAAEpE,IAAID,EAAEqE,EAAEpE,IAAGA,EAAEw0G,GAAGjwG,EAAEH,EAAEvD,KAAK2uF,IAAK0H,OAAO9yF,EAAEA,EAAEpE,GAAGuvF,EAAEnrF,GAAG,GAAG4yG,GAAGzyG,GAAG,OAAO0qF,EAAE7qF,EAAEpE,EAAEuE,EAAEirF,GAAG,GAAG+O,GAAGh6F,GAAG,OAAO8sF,EAAEjtF,EAAEpE,EAAEuE,EAAEirF,GAAc,GAAX7vF,GAAGw3G,GAAG/yG,EAAEG,QAAM,IAAqBA,IAAI8hB,EAAE,OAAOjiB,EAAEyyF,KAAK,KAAK,EAAE,KAAK,EAAW1pE,EAAE,OAAXqiE,EAAEprF,EAAEwG,MAAewJ,aAAao7E,EAAEvvF,MAAM,aAAa,OAAOF,EAAEqE,EAAEpE,IAAI,IAAIs3G,GAAGF,IAAG,GAAIG,GAAGH,IAAG,GAAII,GAAG,GAAGvmB,GAAE,CAACttB,QAAQ6zC,IAAIC,GAAG,CAAC9zC,QAAQ6zC,IAAIE,GAAG,CAAC/zC,QAAQ6zC,IAAI,SAASG,GAAGvzG,GAA0B,OAAvBA,IAAIozG,IAAGrqF,EAAE,OAAqB/oB,EAC3a,SAASwzG,GAAGxzG,EAAEC,GAAG+rF,GAAEsnB,GAAGrzG,GAAK+rF,GAAEqnB,GAAGrzG,GAAKgsF,GAAEa,GAAEumB,IAAM,IAAIz3G,EAAEsE,EAAE6O,SAAS,OAAOnT,GAAG,KAAK,EAAE,KAAK,GAAGsE,GAAGA,EAAEA,EAAEwkD,iBAAiBxkD,EAAEwpG,aAAaL,GAAG,KAAK,IAAI,MAAM,QAAkEnpG,EAAEmpG,GAArCnpG,GAAvBtE,EAAE,IAAIA,EAAEsE,EAAEmxB,WAAWnxB,GAAMwpG,cAAc,KAAK9tG,EAAEA,EAAE+gD,SAAkBqvC,GAAEc,IAAKb,GAAEa,GAAE5sF,GAAK,SAASwzG,GAAGzzG,GAAG+rF,GAAEc,IAAKd,GAAEsnB,IAAMtnB,GAAEunB,IAAM,SAASI,GAAG1zG,GAAGuzG,GAAGD,GAAG/zC,SAAS,IAAIt/D,EAAEszG,GAAG1mB,GAAEttB,SAAa5jE,EAAEytG,GAAGnpG,EAAED,EAAEwG,MAAMvG,IAAItE,IAAIqwF,GAAEqnB,GAAGrzG,GAAKgsF,GAAEa,GAAElxF,IAAM,SAASg4G,GAAG3zG,GAAGqzG,GAAG9zC,UAAUv/D,IAAI+rF,GAAEc,IAAKd,GAAEsnB,KAC9Z,IAAIO,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,IAAIC,GAAGhb,GAAGtJ,uBAAuBukB,GAAG,EAAEC,GAAG,KAAKtyB,GAAE,KAAK8K,GAAE,KAAKynB,GAAG,KAAKxnB,GAAE,KAAKynB,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAE,SAASC,KAAKhsF,EAAE,OAAO,SAASisF,GAAGh1G,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAItE,EAAE,EAAEA,EAAEsE,EAAEtC,QAAQhC,EAAEqE,EAAErC,OAAOhC,IAAI,IAAIqkG,GAAGhgG,EAAErE,GAAGsE,EAAEtE,IAAI,OAAM,EAAG,OAAM,EAC1S,SAASs5G,GAAGj1G,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAgF,GAA7Ek0G,GAAGl0G,EAAEm0G,GAAGr0G,EAAE6sF,GAAE,OAAO9sF,EAAEA,EAAEuvG,cAAc,KAAK6E,GAAG70C,QAAQ,OAAOutB,GAAEooB,GAAGC,GAAGl1G,EAAEtE,EAAEC,EAAEsE,GAAM00G,GAAG,CAAC,GAAGA,IAAG,EAAGE,IAAI,EAAEhoB,GAAE,OAAO9sF,EAAEA,EAAEuvG,cAAc,KAAKiF,GAAGD,GAAGG,GAAG3nB,GAAE/K,GAAE,KAAKoyB,GAAG70C,QAAQ41C,GAAGl1G,EAAEtE,EAAEC,EAAEsE,SAAS00G,IAAIC,GAAG,KAAKC,GAAG,EAAoL,OAAlLV,GAAG70C,QAAQ61C,IAAGp1G,EAAEs0G,IAAK/E,cAAcgF,GAAGv0G,EAAE8vG,eAAe2E,GAAGz0G,EAAEwvG,YAAYkF,GAAG10G,EAAEogG,WAAWuU,GAAG30G,EAAE,OAAOgiF,IAAG,OAAOA,GAAE/tC,KAAKogE,GAAG,EAAEG,GAAGznB,GAAEwnB,GAAGznB,GAAE9K,GAAEsyB,GAAG,KAAKG,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAE30G,GAAE+oB,EAAE,OAAqB9oB,EAAE,SAASo1G,KAAKjB,GAAG70C,QAAQ61C,GAAGf,GAAG,EAAEG,GAAGznB,GAAEwnB,GAAGznB,GAAE9K,GAAEsyB,GAAG,KAAKG,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAC/e,SAASQ,KAAK,IAAIt1G,EAAE,CAACuvG,cAAc,KAAK8B,UAAU,KAAKkE,MAAM,KAAKC,WAAW,KAAKvhE,KAAK,MAAiC,OAA3B,OAAO84C,GAAEwnB,GAAGxnB,GAAE/sF,EAAE+sF,GAAEA,GAAE94C,KAAKj0C,EAAS+sF,GAAE,SAAS0oB,KAAK,GAAG,OAAOjB,GAAQA,IAALznB,GAAEynB,IAAQvgE,KAAS64C,GAAE,QAAN9K,GAAE8K,IAAa9K,GAAE/tC,KAAK,SAAS,CAAC,OAAO64C,IAAE/jE,EAAE,OAAkB,IAAI/oB,EAAE,CAACuvG,eAAXvtB,GAAE8K,IAAyByiB,cAAc8B,UAAUrvB,GAAEqvB,UAAUkE,MAAMvzB,GAAEuzB,MAAMC,WAAWxzB,GAAEwzB,WAAWvhE,KAAK,MAAM84C,GAAE,OAAOA,GAAEwnB,GAAGv0G,EAAE+sF,GAAE94C,KAAKj0C,EAAE8sF,GAAE9K,GAAE/tC,KAAK,OAAO84C,GAAE,SAAS2oB,GAAG11G,EAAEC,GAAG,MAAM,mBAAoBA,EAAEA,EAAED,GAAGC,EACjb,SAAS01G,GAAG31G,GAAG,IAAIC,EAAEw1G,KAAK95G,EAAEsE,EAAEs1G,MAAuD,GAAjD,OAAO55G,GAAEotB,EAAE,OAAcptB,EAAEi6G,oBAAoB51G,EAAK,EAAE80G,GAAG,CAAC,IAAIl5G,EAAED,EAAEk6G,SAAS,GAAG,OAAOhB,GAAG,CAAC,IAAI30G,EAAE20G,GAAG14G,IAAIR,GAAG,QAAG,IAASuE,EAAE,CAAC20G,GAAGr+E,OAAO76B,GAAG,IAAIwE,EAAEF,EAAEsvG,cAAc,GAAGpvG,EAAEH,EAAEG,EAAED,EAAEyW,QAAQzW,EAAEA,EAAE+zC,WAAW,OAAO/zC,GAAiH,OAA9G8/F,GAAG7/F,EAAEF,EAAEsvG,iBAAiBuG,IAAG,GAAI71G,EAAEsvG,cAAcpvG,EAAEF,EAAEu1G,aAAa75G,EAAE6sD,OAAOvoD,EAAEoxG,UAAUlxG,GAAGxE,EAAEo6G,kBAAkB51G,EAAQ,CAACA,EAAEvE,IAAI,MAAM,CAACqE,EAAEsvG,cAAc3zG,GAAGA,EAAED,EAAE6sD,KAAK,IAAI2iC,EAAElrF,EAAEu1G,WAA4F,GAAjFr1G,EAAEF,EAAEoxG,UAAU,OAAOlmB,GAAG,OAAOvvF,IAAIA,EAAEq4C,KAAK,MAAMr4C,EAAEuvF,EAAEl3C,MAAMr4C,EAAE,OAAOA,EAAEA,EAAEq4C,KAAK,KAAQ,OAChfr4C,EAAE,CAAC,IAAIwvF,EAAElrF,EAAE,KAAK3E,EAAEK,EAAEqmB,GAAE,EAAG,EAAE,CAAC,IAAIvmB,EAAEH,EAAEu0G,eAAep0G,EAAE24G,IAAIpyF,IAAIA,GAAE,EAAGmpE,EAAED,EAAEjrF,EAAEC,GAAGzE,EAAE+4G,KAAKA,GAAG/4G,IAAIyE,EAAE5E,EAAEy6G,eAAeh2G,EAAEzE,EAAE06G,WAAWj2G,EAAEG,EAAE5E,EAAEob,QAAQw0E,EAAE5vF,EAAEA,EAAEA,EAAE04C,WAAW,OAAO14C,GAAGA,IAAIK,GAAGqmB,IAAImpE,EAAED,EAAEjrF,EAAEC,GAAG6/F,GAAG7/F,EAAEF,EAAEsvG,iBAAiBuG,IAAG,GAAI71G,EAAEsvG,cAAcpvG,EAAEF,EAAEu1G,WAAWpqB,EAAEnrF,EAAEoxG,UAAUnxG,EAAEvE,EAAEo6G,kBAAkB51G,EAAE,MAAM,CAACF,EAAEsvG,cAAc5zG,EAAEk6G,UACvT,SAASK,GAAGl2G,EAAEC,EAAEtE,EAAEC,GAAwM,OAArMoE,EAAE,CAACyyF,IAAIzyF,EAAEpD,OAAOqD,EAAEmV,QAAQzZ,EAAEw6G,KAAKv6G,EAAEq4C,KAAK,MAAM,OAAOygE,IAAIA,GAAG,CAAChF,WAAW,OAASA,WAAW1vG,EAAEi0C,KAAKj0C,EAAoB,QAAhBC,EAAEy0G,GAAGhF,YAAoBgF,GAAGhF,WAAW1vG,EAAEi0C,KAAKj0C,GAAGrE,EAAEsE,EAAEg0C,KAAKh0C,EAAEg0C,KAAKj0C,EAAEA,EAAEi0C,KAAKt4C,EAAE+4G,GAAGhF,WAAW1vG,GAAWA,EAAE,SAASo2G,GAAGp2G,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAEo1G,KAAKX,IAAI30G,EAAEE,EAAEqvG,cAAc2G,GAAGj2G,EAAEtE,OAAE,OAAO,IAASC,EAAE,KAAKA,GACvT,SAASy6G,GAAGr2G,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAEu1G,KAAK75G,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuE,OAAE,EAAO,GAAG,OAAO6hF,GAAE,CAAC,IAAImJ,EAAEnJ,GAAEutB,cAA0B,GAAZpvG,EAAEgrF,EAAE/1E,QAAW,OAAOxZ,GAAGo5G,GAAGp5G,EAAEuvF,EAAEgrB,MAAoB,YAAbD,GAAGtC,GAAGj4G,EAAEwE,EAAEvE,GAAW+4G,IAAI30G,EAAEE,EAAEqvG,cAAc2G,GAAGj2G,EAAEtE,EAAEwE,EAAEvE,GAAG,SAAS06G,GAAGt2G,EAAEC,GAAG,MAAG,mBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,MAAOA,GAAqBD,EAAEA,IAAIC,EAAEs/D,QAAQv/D,EAAE,WAAWC,EAAEs/D,QAAQ,YAAtE,EAA4E,SAASg3C,MACvW,SAASC,GAAGx2G,EAAEC,EAAEtE,GAAG,GAAGm5G,IAAU/rF,EAAE,OAAO,IAAIntB,EAAEoE,EAAE+/F,UAAU,GAAG//F,IAAIs0G,IAAI,OAAO14G,GAAGA,IAAI04G,GAAG,GAAGM,IAAG,EAAG50G,EAAE,CAAC8vG,eAAeuE,GAAG19F,OAAOhb,EAAEq6G,aAAa,KAAKC,WAAW,KAAKhiE,KAAK,MAAM,OAAO4gE,KAAKA,GAAG,IAAI5B,UAAiB,KAAZt3G,EAAEk5G,GAAG14G,IAAI8D,IAAc40G,GAAG36B,IAAIj6E,EAAED,OAAO,CAAC,IAAIC,EAAEtE,EAAE,OAAOsE,EAAEg0C,MAAMh0C,EAAEA,EAAEg0C,KAAKh0C,EAAEg0C,KAAKj0C,MAAM,CAAC4xG,KAAK,IAAI1xG,EAAEsxG,KAAmBrxG,EAAE,CAAC2vG,eAAjB5vG,EAAEwxG,GAAGxxG,EAAEF,GAA2B2W,OAAOhb,EAAEq6G,aAAa,KAAKC,WAAW,KAAKhiE,KAAK,MAAMk3C,EAAElrF,EAAEuoD,KAAK,GAAG,OAAO2iC,EAAEhrF,EAAE8zC,KAAK9zC,MAAM,CAAC,IAAIirF,EAAED,EAAEl3C,KAAK,OAAOm3C,IAAIjrF,EAAE8zC,KAAKm3C,GAAGD,EAAEl3C,KAAK9zC,EAAW,GAATF,EAAEuoD,KAAKroD,EAAK,IAAIH,EAAE8vG,iBAAiB,OAClfl0G,GAAG,IAAIA,EAAEk0G,iBAA0C,QAAxBl0G,EAAEqE,EAAE21G,qBAA8B,IAAI,IAAIr6G,EAAE0E,EAAE81G,kBAAkB9zF,EAAErmB,EAAEL,EAAEI,GAAmC,GAAhCwE,EAAE61G,aAAap6G,EAAEuE,EAAE81G,WAAWh0F,EAAK+9E,GAAG/9E,EAAE1mB,GAAG,OAAO,MAAMG,IAAao2G,GAAG9xG,EAAEE,IAC9K,IAAIk1G,GAAG,CAACqB,YAAY/pB,GAAEoC,YAAYimB,GAAGhmB,WAAWgmB,GAAG/lB,UAAU+lB,GAAG9lB,oBAAoB8lB,GAAG5lB,gBAAgB4lB,GAAG3lB,QAAQ2lB,GAAG1lB,WAAW0lB,GAAGzlB,OAAOylB,GAAGxlB,SAASwlB,GAAG7lB,cAAc6lB,IAAIG,GAAG,CAACuB,YAAY/pB,GAAEoC,YAAY,SAAS9uF,EAAEC,GAA4C,OAAzCq1G,KAAK/F,cAAc,CAACvvG,OAAE,IAASC,EAAE,KAAKA,GAAUD,GAAG+uF,WAAWrC,GAAEsC,UAAU,SAAShvF,EAAEC,GAAG,OAAOm2G,GAAG,IAAIjC,GAAGD,GAAGl0G,EAAEC,IAAIgvF,oBAAoB,SAASjvF,EAAEC,EAAEtE,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE2T,OAAO,CAACtP,IAAI,KAAYo2G,GAAG,EAAEtC,GAAGG,GAAGqC,GAAGx5G,KAAK,KAAKmD,EAAED,GAAGrE,IAAIwzF,gBAAgB,SAASnvF,EAAEC,GAAG,OAAOm2G,GAAG,EAAEtC,GAAGG,GAAGj0G,EAAEC,IACjfmvF,QAAQ,SAASpvF,EAAEC,GAAG,IAAItE,EAAE25G,KAAqD,OAAhDr1G,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIrE,EAAE4zG,cAAc,CAACvvG,EAAEC,GAAUD,GAAGqvF,WAAW,SAASrvF,EAAEC,EAAEtE,GAAG,IAAIC,EAAE05G,KAAqK,OAAhKr1G,OAAE,IAAStE,EAAEA,EAAEsE,GAAGA,EAAErE,EAAE2zG,cAAc3zG,EAAEy1G,UAAUpxG,EAAgFD,GAA9EA,EAAEpE,EAAE25G,MAAM,CAAC/sD,KAAK,KAAKqtD,SAAS,KAAKD,oBAAoB51G,EAAE+1G,kBAAkB91G,IAAO41G,SAASW,GAAG15G,KAAK,KAAKw3G,GAAGt0G,GAAS,CAACpE,EAAE2zG,cAAcvvG,IAAIsvF,OAAO,SAAStvF,GAA4B,OAAdA,EAAE,CAACu/D,QAAQv/D,GAAhBs1G,KAA4B/F,cAAcvvG,GAAGuvF,SAAS,SAASvvF,GAAG,IAAIC,EAAEq1G,KACjV,MADsV,mBAAoBt1G,IAAIA,EAAEA,KAAKC,EAAEsvG,cAActvG,EAAEoxG,UAAUrxG,EACjbA,GADmbA,EAAEC,EAAEs1G,MAAM,CAAC/sD,KAAK,KAAKqtD,SAAS,KAC7fD,oBAAoBF,GAAGK,kBAAkB/1G,IAAO61G,SAASW,GAAG15G,KAAK,KAAKw3G,GAAGt0G,GAAS,CAACC,EAAEsvG,cAAcvvG,IAAIkvF,cAAcqnB,IAAIpB,GAAG,CAACsB,YAAY/pB,GAAEoC,YAAY,SAAS9uF,EAAEC,GAAG,IAAItE,EAAE85G,KAAKx1G,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIrE,EAAED,EAAE4zG,cAAc,OAAG,OAAO3zG,GAAG,OAAOqE,GAAG+0G,GAAG/0G,EAAErE,EAAE,IAAWA,EAAE,IAAGD,EAAE4zG,cAAc,CAACvvG,EAAEC,GAAUD,IAAG+uF,WAAWrC,GAAEsC,UAAU,SAAShvF,EAAEC,GAAG,OAAOo2G,GAAG,IAAIlC,GAAGD,GAAGl0G,EAAEC,IAAIgvF,oBAAoB,SAASjvF,EAAEC,EAAEtE,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE2T,OAAO,CAACtP,IAAI,KAAYq2G,GAAG,EAAEvC,GAAGG,GAAGqC,GAAGx5G,KAAK,KAAKmD,EAAED,GAAGrE,IAAIwzF,gBAAgB,SAASnvF,EACtfC,GAAG,OAAOo2G,GAAG,EAAEvC,GAAGG,GAAGj0G,EAAEC,IAAImvF,QAAQ,SAASpvF,EAAEC,GAAG,IAAItE,EAAE85G,KAAKx1G,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIrE,EAAED,EAAE4zG,cAAc,OAAG,OAAO3zG,GAAG,OAAOqE,GAAG+0G,GAAG/0G,EAAErE,EAAE,IAAWA,EAAE,IAAGoE,EAAEA,IAAIrE,EAAE4zG,cAAc,CAACvvG,EAAEC,GAAUD,IAAGqvF,WAAWsmB,GAAGrmB,OAAO,WAAW,OAAOmmB,KAAKlG,eAAehgB,SAAS,SAASvvF,GAAG,OAAO21G,GAAGD,KAAOxmB,cAAcqnB,IAAIG,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAChU,SAASC,GAAG72G,EAAEC,GAAG,IAAItE,EAAE4wF,GAAE,EAAE,KAAK,KAAK,GAAG5wF,EAAEyzG,YAAY,UAAUzzG,EAAE6K,KAAK,UAAU7K,EAAEw2F,UAAUlyF,EAAEtE,EAAEm3F,OAAO9yF,EAAErE,EAAEykG,UAAU,EAAE,OAAOpgG,EAAE0vG,YAAY1vG,EAAE0vG,WAAWE,WAAWj0G,EAAEqE,EAAE0vG,WAAW/zG,GAAGqE,EAAE2vG,YAAY3vG,EAAE0vG,WAAW/zG,EAAE,SAASm7G,GAAG92G,EAAEC,GAAG,OAAOD,EAAEyyF,KAAK,KAAK,EAAE,IAAI92F,EAAEqE,EAAEwG,KAAyE,OAAO,QAA3EvG,EAAE,IAAIA,EAAE6O,UAAUnT,EAAE2rD,gBAAgBrnD,EAAEy4F,SAASpxC,cAAc,KAAKrnD,KAAmBD,EAAEmyF,UAAUlyF,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAEqvG,cAAc,IAAIpvG,EAAE6O,SAAS,KAAK7O,KAAYD,EAAEmyF,UAAUlyF,GAAE,GAAO,KAAK,GAAY,QAAQ,OAAM,GAC1e,SAAS82G,GAAG/2G,GAAG,GAAG42G,GAAG,CAAC,IAAI32G,EAAE02G,GAAG,GAAG12G,EAAE,CAAC,IAAItE,EAAEsE,EAAE,IAAI62G,GAAG92G,EAAEC,GAAG,CAAS,KAARA,EAAE2tG,GAAGjyG,MAAWm7G,GAAG92G,EAAEC,GAA8B,OAA1BD,EAAEogG,WAAW,EAAEwW,IAAG,OAAGF,GAAG12G,GAAS62G,GAAGH,GAAG/6G,GAAG+6G,GAAG12G,EAAE22G,GAAG9I,GAAG5tG,QAAQD,EAAEogG,WAAW,EAAEwW,IAAG,EAAGF,GAAG12G,GAAG,SAASg3G,GAAGh3G,GAAG,IAAIA,EAAEA,EAAE8yF,OAAO,OAAO9yF,GAAG,IAAIA,EAAEyyF,KAAK,IAAIzyF,EAAEyyF,KAAK,KAAKzyF,EAAEyyF,KAAKzyF,EAAEA,EAAE8yF,OAAO4jB,GAAG12G,EAAE,SAASi3G,GAAGj3G,GAAG,GAAGA,IAAI02G,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOI,GAAGh3G,GAAG42G,IAAG,GAAG,EAAG,IAAI32G,EAAED,EAAEwG,KAAK,GAAG,IAAIxG,EAAEyyF,KAAK,SAASxyF,GAAG,SAASA,IAAImtG,GAAGntG,EAAED,EAAEyvG,eAAe,IAAIxvG,EAAE02G,GAAG12G,GAAG42G,GAAG72G,EAAEC,GAAGA,EAAE2tG,GAAG3tG,GAAoC,OAAjC+2G,GAAGh3G,GAAG22G,GAAGD,GAAG9I,GAAG5tG,EAAEmyF,WAAW,MAAW,EAAG,SAAS+kB,KAAKP,GAAGD,GAAG,KAAKE,IAAG,EAChf,IAAIO,GAAG/d,GAAGrJ,kBAAkB+lB,IAAG,EAAG,SAAS3oB,GAAEntF,EAAEC,EAAEtE,EAAEC,GAAGqE,EAAEs2D,MAAM,OAAOv2D,EAAEmzG,GAAGlzG,EAAE,KAAKtE,EAAEC,GAAGs3G,GAAGjzG,EAAED,EAAEu2D,MAAM56D,EAAEC,GAAG,SAASw7G,GAAGp3G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAGvE,EAAEA,EAAEgJ,OAAO,IAAIxE,EAAEF,EAAEgQ,IAA8B,OAA1BonG,GAAGp3G,EAAEC,GAAGtE,EAAEq5G,GAAGj1G,EAAEC,EAAEtE,EAAEC,EAAEuE,EAAED,GAAM,OAAOF,GAAI81G,IAA4G71G,EAAEmgG,WAAW,EAAEjT,GAAEntF,EAAEC,EAAErE,EAAEsE,GAAUD,EAAEs2D,QAArIt2D,EAAEuvG,YAAYxvG,EAAEwvG,YAAYvvG,EAAEmgG,YAAY,IAAIpgG,EAAE8vG,gBAAgB5vG,IAAIF,EAAE8vG,eAAe,GAAGwH,GAAGt3G,EAAEC,EAAEC,IACvS,SAASq3G,GAAGv3G,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAG,GAAG,OAAOH,EAAE,CAAC,IAAImrF,EAAExvF,EAAE6K,KAAK,MAAG,mBAAoB2kF,GAAI4kB,GAAG5kB,SAAI,IAASA,EAAEv7E,cAAc,OAAOjU,EAAEkzF,cAAS,IAASlzF,EAAEiU,eAAsD5P,EAAEiwG,GAAGt0G,EAAE6K,KAAK,KAAK5K,EAAE,KAAKqE,EAAExD,KAAK0D,IAAK8P,IAAIhQ,EAAEgQ,IAAIjQ,EAAE8yF,OAAO7yF,EAASA,EAAEs2D,MAAMv2D,IAA1GC,EAAEwyF,IAAI,GAAGxyF,EAAEuG,KAAK2kF,EAAEqsB,GAAGx3G,EAAEC,EAAEkrF,EAAEvvF,EAAEsE,EAAEC,IAAuF,OAAVgrF,EAAEnrF,EAAEu2D,MAASr2D,EAAEC,IAAID,EAAEirF,EAAEskB,eAA0B9zG,EAAE,QAAdA,EAAEA,EAAEkzF,SAAmBlzF,EAAEukG,IAAKhgG,EAAEtE,IAAIoE,EAAEiQ,MAAMhQ,EAAEgQ,KAAYqnG,GAAGt3G,EAAEC,EAAEE,IAAGF,EAAEmgG,WAAW,GAAEpgG,EAAEgwG,GAAG7kB,EAAEvvF,IAAOqU,IAAIhQ,EAAEgQ,IAAIjQ,EAAE8yF,OAAO7yF,EAASA,EAAEs2D,MAAMv2D,GACrb,SAASw3G,GAAGx3G,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAG,OAAO,OAAOH,GAAGkgG,GAAGlgG,EAAEyvG,cAAc7zG,IAAIoE,EAAEiQ,MAAMhQ,EAAEgQ,MAAM6lG,IAAG,EAAG51G,EAAEC,GAAGm3G,GAAGt3G,EAAEC,EAAEE,GAAGs3G,GAAGz3G,EAAEC,EAAEtE,EAAEC,EAAEuE,GAAG,SAASu3G,GAAG13G,EAAEC,GAAG,IAAItE,EAAEsE,EAAEgQ,KAAO,OAAOjQ,GAAG,OAAOrE,GAAG,OAAOqE,GAAGA,EAAEiQ,MAAMtU,KAAEsE,EAAEmgG,WAAW,KAAI,SAASqX,GAAGz3G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,IAAIC,EAAEmsF,GAAE3wF,GAAGuyG,GAAG/hB,GAAE5sB,QAA4C,OAApCp/D,EAAEguG,GAAGluG,EAAEE,GAAGk3G,GAAGp3G,EAAEC,GAAGvE,EAAEs5G,GAAGj1G,EAAEC,EAAEtE,EAAEC,EAAEuE,EAAED,GAAM,OAAOF,GAAI81G,IAA4G71G,EAAEmgG,WAAW,EAAEjT,GAAEntF,EAAEC,EAAEtE,EAAEuE,GAAUD,EAAEs2D,QAArIt2D,EAAEuvG,YAAYxvG,EAAEwvG,YAAYvvG,EAAEmgG,YAAY,IAAIpgG,EAAE8vG,gBAAgB5vG,IAAIF,EAAE8vG,eAAe,GAAGwH,GAAGt3G,EAAEC,EAAEC,IACvZ,SAASy3G,GAAG33G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,GAAGosF,GAAE3wF,GAAG,CAAC,IAAIwE,GAAE,EAAG0uG,GAAG5uG,QAAQE,GAAE,EAAW,GAARk3G,GAAGp3G,EAAEC,GAAM,OAAOD,EAAEkyF,UAAU,OAAOnyF,IAAIA,EAAE+/F,UAAU,KAAK9/F,EAAE8/F,UAAU,KAAK9/F,EAAEmgG,WAAW,GAAG+R,GAAGlyG,EAAEtE,EAAEC,GAAK42G,GAAGvyG,EAAEtE,EAAEC,EAAEsE,GAAGtE,GAAE,OAAQ,GAAG,OAAOoE,EAAE,CAAC,IAAImrF,EAAElrF,EAAEkyF,UAAU/G,EAAEnrF,EAAEwvG,cAActkB,EAAEnoF,MAAMooF,EAAE,IAAI7vF,EAAE4vF,EAAErK,QAAQ7+D,EAAEtmB,EAAEy2G,YAAY,iBAAkBnwF,GAAG,OAAOA,EAAEA,EAAEyqE,GAAEzqE,GAAwBA,EAAEksF,GAAGluG,EAAzBgiB,EAAEqqE,GAAE3wF,GAAGuyG,GAAG/hB,GAAE5sB,SAAmB,IAAI7jE,EAAEC,EAAE0Z,yBAAyBjY,EAAE,mBAAoB1B,GAAG,mBAAoByvF,EAAE5F,wBAAwBnoF,GAAG,mBAAoB+tF,EAAEonB,kCACvd,mBAAoBpnB,EAAEmnB,4BAA4BlnB,IAAIxvF,GAAGL,IAAI0mB,IAAIowF,GAAGpyG,EAAEkrF,EAAEvvF,EAAEqmB,GAAG21F,IAAG,EAAG,IAAIp7G,EAAEyD,EAAEsvG,cAAch0G,EAAE4vF,EAAEziF,MAAMlM,EAAE,IAAIyuF,EAAEhrF,EAAEuvG,YAAY,OAAOvkB,IAAIwnB,GAAGxyG,EAAEgrF,EAAErvF,EAAEuvF,EAAEjrF,GAAG3E,EAAE0E,EAAEsvG,eAAenkB,IAAIxvF,GAAGY,IAAIjB,GAAG8wF,GAAE9sB,SAASq4C,IAAI,mBAAoBl8G,IAAI01G,GAAGnxG,EAAEtE,EAAED,EAAEE,GAAGL,EAAE0E,EAAEsvG,gBAAgBnkB,EAAEwsB,IAAI3F,GAAGhyG,EAAEtE,EAAEyvF,EAAExvF,EAAEY,EAAEjB,EAAE0mB,KAAK7kB,GAAG,mBAAoB+tF,EAAEunB,2BAA2B,mBAAoBvnB,EAAEwnB,qBAAqB,mBAAoBxnB,EAAEwnB,oBAAoBxnB,EAAEwnB,qBAAqB,mBAAoBxnB,EAAEunB,2BAC1dvnB,EAAEunB,6BAA6B,mBAAoBvnB,EAAE52E,oBAAoBtU,EAAEmgG,WAAW,KAAK,mBAAoBjV,EAAE52E,oBAAoBtU,EAAEmgG,WAAW,GAAGngG,EAAEwvG,cAAc7zG,EAAEqE,EAAEsvG,cAAch0G,GAAG4vF,EAAEnoF,MAAMpH,EAAEuvF,EAAEziF,MAAMnN,EAAE4vF,EAAErK,QAAQ7+D,EAAErmB,EAAEwvF,IAAI,mBAAoBD,EAAE52E,oBAAoBtU,EAAEmgG,WAAW,GAAGxkG,GAAE,QAASuvF,EAAElrF,EAAEkyF,UAAU/G,EAAEnrF,EAAEwvG,cAActkB,EAAEnoF,MAAM/C,EAAEuG,OAAOvG,EAAEmvG,YAAYhkB,EAAE1L,GAAEz/E,EAAEuG,KAAK4kF,GAAG7vF,EAAE4vF,EAAErK,QAAwB,iBAAhB7+D,EAAEtmB,EAAEy2G,cAAiC,OAAOnwF,EAAEA,EAAEyqE,GAAEzqE,GAAwBA,EAAEksF,GAAGluG,EAAzBgiB,EAAEqqE,GAAE3wF,GAAGuyG,GAAG/hB,GAAE5sB,UAAiDniE,EAAE,mBAAhC1B,EAAEC,EAAE0Z,2BAC7c,mBAAoB81E,EAAE5F,0BAA0B,mBAAoB4F,EAAEonB,kCAAkC,mBAAoBpnB,EAAEmnB,4BAA4BlnB,IAAIxvF,GAAGL,IAAI0mB,IAAIowF,GAAGpyG,EAAEkrF,EAAEvvF,EAAEqmB,GAAG21F,IAAG,EAAGr8G,EAAE0E,EAAEsvG,cAAc/yG,EAAE2uF,EAAEziF,MAAMnN,EAAkB,QAAhB0vF,EAAEhrF,EAAEuvG,eAAuBiD,GAAGxyG,EAAEgrF,EAAErvF,EAAEuvF,EAAEjrF,GAAG1D,EAAEyD,EAAEsvG,eAAenkB,IAAIxvF,GAAGL,IAAIiB,GAAG6vF,GAAE9sB,SAASq4C,IAAI,mBAAoBl8G,IAAI01G,GAAGnxG,EAAEtE,EAAED,EAAEE,GAAGY,EAAEyD,EAAEsvG,gBAAgB7zG,EAAEk8G,IAAI3F,GAAGhyG,EAAEtE,EAAEyvF,EAAExvF,EAAEL,EAAEiB,EAAEylB,KAAK7kB,GAAG,mBAAoB+tF,EAAE0sB,4BAA4B,mBAAoB1sB,EAAE2sB,sBAAsB,mBACxe3sB,EAAE2sB,qBAAqB3sB,EAAE2sB,oBAAoBl8G,EAAEY,EAAEylB,GAAG,mBAAoBkpE,EAAE0sB,4BAA4B1sB,EAAE0sB,2BAA2Bj8G,EAAEY,EAAEylB,IAAI,mBAAoBkpE,EAAE51E,qBAAqBtV,EAAEmgG,WAAW,GAAG,mBAAoBjV,EAAE5F,0BAA0BtlF,EAAEmgG,WAAW,OAAO,mBAAoBjV,EAAE51E,oBAAoB61E,IAAIprF,EAAEyvG,eAAel0G,IAAIyE,EAAEuvG,gBAAgBtvG,EAAEmgG,WAAW,GAAG,mBAAoBjV,EAAE5F,yBAAyB6F,IAAIprF,EAAEyvG,eAAel0G,IAAIyE,EAAEuvG,gBAAgBtvG,EAAEmgG,WAAW,KAAKngG,EAAEwvG,cAAc7zG,EAAEqE,EAAEsvG,cACtf/yG,GAAG2uF,EAAEnoF,MAAMpH,EAAEuvF,EAAEziF,MAAMlM,EAAE2uF,EAAErK,QAAQ7+D,EAAErmB,EAAEF,IAAI,mBAAoByvF,EAAE51E,oBAAoB61E,IAAIprF,EAAEyvG,eAAel0G,IAAIyE,EAAEuvG,gBAAgBtvG,EAAEmgG,WAAW,GAAG,mBAAoBjV,EAAE5F,yBAAyB6F,IAAIprF,EAAEyvG,eAAel0G,IAAIyE,EAAEuvG,gBAAgBtvG,EAAEmgG,WAAW,KAAKxkG,GAAE,GAAI,OAAOm8G,GAAG/3G,EAAEC,EAAEtE,EAAEC,EAAEuE,EAAED,GACpR,SAAS63G,GAAG/3G,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAGu3G,GAAG13G,EAAEC,GAAG,IAAIkrF,EAAE,IAAiB,GAAZlrF,EAAEmgG,WAAc,IAAIxkG,IAAIuvF,EAAE,OAAOjrF,GAAG6uG,GAAG9uG,EAAEtE,GAAE,GAAI27G,GAAGt3G,EAAEC,EAAEE,GAAGvE,EAAEqE,EAAEkyF,UAAUglB,GAAG53C,QAAQt/D,EAAE,IAAImrF,EAAED,GAAG,mBAAoBxvF,EAAEq8G,yBAAyB,KAAKp8G,EAAE+I,SAA2I,OAAlI1E,EAAEmgG,WAAW,EAAE,OAAOpgG,GAAGmrF,GAAGlrF,EAAEs2D,MAAM28C,GAAGjzG,EAAED,EAAEu2D,MAAM,KAAKp2D,GAAGF,EAAEs2D,MAAM28C,GAAGjzG,EAAE,KAAKmrF,EAAEjrF,IAAIgtF,GAAEntF,EAAEC,EAAEmrF,EAAEjrF,GAAGF,EAAEsvG,cAAc3zG,EAAE8M,MAAMxI,GAAG6uG,GAAG9uG,EAAEtE,GAAE,GAAWsE,EAAEs2D,MAAM,SAAS0hD,GAAGj4G,GAAG,IAAIC,EAAED,EAAEmyF,UAAUlyF,EAAEi4G,eAAexJ,GAAG1uG,EAAEC,EAAEi4G,eAAej4G,EAAEi4G,iBAAiBj4G,EAAE6gF,SAAS7gF,EAAE6gF,SAAS4tB,GAAG1uG,EAAEC,EAAE6gF,SAAQ,GAAI0yB,GAAGxzG,EAAEC,EAAE0lG,eACpe,SAASwS,GAAGn4G,EAAEC,EAAEtE,GAAG,IAAIC,EAAEqE,EAAExD,KAAKyD,EAAED,EAAEovG,aAAalvG,EAAEF,EAAEsvG,cAAc,GAAG,IAAiB,GAAZtvG,EAAEmgG,WAAc,CAACjgG,EAAE,KAAK,IAAIgrF,GAAE,OAAQhrF,EAAE,CAACi4G,WAAW,OAAOj4G,EAAEA,EAAEi4G,WAAW,GAAGjtB,GAAE,EAAGlrF,EAAEmgG,YAAY,GAAG,GAAG,OAAOpgG,EAAE,GAAGmrF,EAAE,CAAC,IAAIC,EAAElrF,EAAE8gF,SAAShhF,EAAEkwG,GAAG,KAAKt0G,EAAE,EAAE,MAAM,IAAY,EAAPqE,EAAExD,QAAUuD,EAAEu2D,MAAM,OAAOt2D,EAAEsvG,cAActvG,EAAEs2D,MAAMA,MAAMt2D,EAAEs2D,OAAO36D,EAAEs0G,GAAG9kB,EAAExvF,EAAED,EAAE,MAAMqE,EAAEugG,QAAQ3kG,GAAED,EAAEqE,GAAI8yF,OAAOl3F,EAAEk3F,OAAO7yF,OAAOtE,EAAEC,EAAEu3G,GAAGlzG,EAAE,KAAKC,EAAE8F,SAASrK,QAAQ,OAAOqE,EAAEuvG,eAAyBnkB,GAAVxvF,EAAEoE,EAAEu2D,OAAUgqC,QAAQpV,GAAGxvF,EAAEuE,EAAE8gF,SAAS9gF,EAAE8vG,GAAGp0G,EAAEA,EAAEyzG,cAAgB,IAAY,EAAPpvG,EAAExD,SAAU0uF,EAAE,OACjflrF,EAAEsvG,cAActvG,EAAEs2D,MAAMA,MAAMt2D,EAAEs2D,SAAU36D,EAAE26D,QAAQr2D,EAAEq2D,MAAM40B,IAAIvvF,EAAEsE,EAAEqgG,QAAQyP,GAAG5kB,EAAEzvF,EAAEyvF,EAAE0kB,gBAAgBn0G,EAAEuE,EAAEA,EAAE2vG,oBAAoB,EAAEl0G,EAAEm3F,OAAOl3F,EAAEk3F,OAAO7yF,GAAGtE,EAAEC,EAAEs3G,GAAGjzG,EAAErE,EAAE26D,MAAMr2D,EAAE8F,SAASrK,KAAKyvF,EAAEprF,EAAEu2D,MAAM40B,GAAGA,EAAEjrF,EAAE8gF,UAAS9gF,EAAEgwG,GAAG,KAAKt0G,EAAE,EAAE,OAAQ26D,MAAM60B,EAAE,IAAY,EAAPnrF,EAAExD,QAAUyD,EAAEq2D,MAAM,OAAOt2D,EAAEsvG,cAActvG,EAAEs2D,MAAMA,MAAMt2D,EAAEs2D,QAAO36D,EAAEsE,EAAEqgG,QAAQ2P,GAAG/kB,EAAEvvF,EAAED,EAAE,OAAQykG,WAAW,EAAEzkG,EAAEuE,EAAEA,EAAE2vG,oBAAoB,EAAEl0G,EAAEm3F,OAAOl3F,EAAEk3F,OAAO7yF,GAAGrE,EAAED,EAAEu3G,GAAGjzG,EAAEmrF,EAAElrF,EAAE8F,SAASrK,IAAIsE,EAAEkyF,UAAUnyF,EAAEmyF,UAAsC,OAA5BlyF,EAAEsvG,cAAcpvG,EAAEF,EAAEs2D,MAAM56D,EAASC,EACte,SAAS07G,GAAGt3G,EAAEC,EAAEtE,GAA2D,GAAxD,OAAOqE,IAAIC,EAAEqvG,oBAAoBtvG,EAAEsvG,qBAAwBrvG,EAAE4vG,oBAAoBl0G,EAAE,OAAO,KAAiD,GAA5C,OAAOqE,GAAGC,EAAEs2D,QAAQv2D,EAAEu2D,OAAMxtC,EAAE,OAAiB,OAAO9oB,EAAEs2D,MAAM,CAA6D,IAAlD56D,EAAEq0G,GAAZhwG,EAAEC,EAAEs2D,MAAav2D,EAAEqvG,aAAarvG,EAAE8vG,gBAAgB7vG,EAAEs2D,MAAM56D,EAAMA,EAAEm3F,OAAO7yF,EAAE,OAAOD,EAAEugG,SAASvgG,EAAEA,EAAEugG,SAAQ5kG,EAAEA,EAAE4kG,QAAQyP,GAAGhwG,EAAEA,EAAEqvG,aAAarvG,EAAE8vG,iBAAkBhd,OAAO7yF,EAAEtE,EAAE4kG,QAAQ,KAAK,OAAOtgG,EAAEs2D,MAC/W,SAAS8hD,GAAGr4G,EAAEC,EAAEtE,GAAG,IAAIC,EAAEqE,EAAE6vG,eAAe,GAAG,OAAO9vG,GAAE,GAAGA,EAAEyvG,gBAAgBxvG,EAAEovG,cAAchjB,GAAE9sB,QAAQu2C,IAAG,OAAQ,GAAGl6G,EAAED,EAAE,CAAO,OAANm6G,IAAG,EAAU71G,EAAEwyF,KAAK,KAAK,EAAEwlB,GAAGh4G,GAAGi3G,KAAK,MAAM,KAAK,EAAExD,GAAGzzG,GAAG,MAAM,KAAK,EAAEqsF,GAAErsF,EAAEuG,OAAOqoG,GAAG5uG,GAAG,MAAM,KAAK,EAAEuzG,GAAGvzG,EAAEA,EAAEkyF,UAAUwT,eAAe,MAAM,KAAK,GAAG2S,GAAGr4G,EAAEA,EAAEwvG,cAAclzG,OAAO,MAAM,KAAK,GAAG,GAAG,OAAO0D,EAAEsvG,cAA6C,OAAG,KAAjC3zG,EAAEqE,EAAEs2D,MAAMs5C,sBAA8Bj0G,GAAGD,EAASw8G,GAAGn4G,EAAEC,EAAEtE,GAAsB,QAAnBsE,EAAEq3G,GAAGt3G,EAAEC,EAAEtE,IAAmBsE,EAAEsgG,QAAQ,KAAM,OAAO+W,GAAGt3G,EAAEC,EAAEtE,SAASm6G,IAAG,EAAsB,OAAnB71G,EAAE6vG,eAAe,EAAS7vG,EAAEwyF,KAAK,KAAK,EAAE72F,EAC9fqE,EAAEmvG,YAAY,OAAOpvG,IAAIA,EAAE+/F,UAAU,KAAK9/F,EAAE8/F,UAAU,KAAK9/F,EAAEmgG,WAAW,GAAGpgG,EAAEC,EAAEovG,aAAa,IAAInvG,EAAEiuG,GAAGluG,EAAEksF,GAAE5sB,SAAqD,GAA5C83C,GAAGp3G,EAAEtE,GAAGuE,EAAE+0G,GAAG,KAAKh1G,EAAErE,EAAEoE,EAAEE,EAAEvE,GAAGsE,EAAEmgG,WAAW,EAAK,iBAAkBlgG,GAAG,OAAOA,GAAG,mBAAoBA,EAAEyE,aAAQ,IAASzE,EAAEysF,SAAS,CAAc,GAAb1sF,EAAEwyF,IAAI,EAAE4iB,KAAQ/oB,GAAE1wF,GAAG,CAAC,IAAIuE,GAAE,EAAG0uG,GAAG5uG,QAAQE,GAAE,EAAGF,EAAEsvG,cAAc,OAAOrvG,EAAEwI,YAAO,IAASxI,EAAEwI,MAAMxI,EAAEwI,MAAM,KAAK,IAAIyiF,EAAEvvF,EAAEyZ,yBAAyB,mBAAoB81E,GAAGimB,GAAGnxG,EAAErE,EAAEuvF,EAAEnrF,GAAGE,EAAE4rF,QAAQwlB,GAAGrxG,EAAEkyF,UAAUjyF,EAAEA,EAAEqxG,oBAAoBtxG,EAAEuyG,GAAGvyG,EAAErE,EAAEoE,EAAErE,GAAGsE,EAAE83G,GAAG,KAAK93G,EAAErE,GAAE,EAAGuE,EACpfxE,QAAQsE,EAAEwyF,IAAI,EAAEtF,GAAE,KAAKltF,EAAEC,EAAEvE,GAAGsE,EAAEA,EAAEs2D,MAAM,OAAOt2D,EAAE,KAAK,GAAkJ,OAA/IC,EAAED,EAAEmvG,YAAY,OAAOpvG,IAAIA,EAAE+/F,UAAU,KAAK9/F,EAAE8/F,UAAU,KAAK9/F,EAAEmgG,WAAW,GAAGjgG,EAAEF,EAAEovG,aAAarvG,EAnDvJ,SAAYA,GAAG,IAAIC,EAAED,EAAE2uF,QAAQ,OAAO3uF,EAAE0uF,SAAS,KAAK,EAAE,OAAOzuF,EAAE,KAAK,EAAU,KAAK,EAAE,MAAMA,EAAE,QAAoK,OAA5JD,EAAE0uF,QAAQ,GAAYzuF,GAAVA,EAAED,EAAEyuF,UAAchnD,KAAK,SAASxnC,GAAG,IAAID,EAAE0uF,UAAUzuF,EAAEA,EAAEjB,QAAQgB,EAAE0uF,QAAQ,EAAE1uF,EAAE2uF,QAAQ1uF,IAAI,SAASA,GAAG,IAAID,EAAE0uF,UAAU1uF,EAAE0uF,QAAQ,EAAE1uF,EAAE2uF,QAAQ1uF,KAAYD,EAAE0uF,SAAS,KAAK,EAAE,OAAO1uF,EAAE2uF,QAAQ,KAAK,EAAE,MAAM3uF,EAAE2uF,QAAqB,MAAZ3uF,EAAE2uF,QAAQ1uF,EAAQA,GAmD9Ls4G,CAAGr4G,GAAGD,EAAEuG,KAAKxG,EAAEE,EAAED,EAAEwyF,IA5D9G,SAAYzyF,GAAG,GAAG,mBAAoBA,EAAE,OAAO+vG,GAAG/vG,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAE2sF,YAAgBmN,GAAG,OAAO,GAAG,GAAG95F,IAAIg6F,GAAG,OAAO,GAAG,OAAO,EA4D5Bwe,CAAGx4G,GAAGG,EAAEu/E,GAAE1/E,EAAEG,GAAGgrF,OAAE,EAAcjrF,GAAG,KAAK,EAAEirF,EAAEssB,GAAG,KAAKx3G,EAAED,EAAEG,EAAExE,GAAG,MAAM,KAAK,EAAEwvF,EAAEwsB,GAAG,KAAK13G,EAAED,EAAEG,EAAExE,GAAG,MAAM,KAAK,GAAGwvF,EAAEisB,GAAG,KAAKn3G,EAAED,EAAEG,EAAExE,GAAG,MAAM,KAAK,GAAGwvF,EAAEosB,GAAG,KAAKt3G,EAAED,EAAE0/E,GAAE1/E,EAAEwG,KAAKrG,GAAGvE,EAAED,GAAG,MAAM,QAAQotB,EAAE,MAAM/oB,EAAE,IAAI,OAAOmrF,EAAE,KAAK,EAAE,OAAOvvF,EAAEqE,EAAEuG,KAAKtG,EAAED,EAAEovG,aAA0CoI,GAAGz3G,EAAEC,EAAErE,EAApCsE,EAAED,EAAEmvG,cAAcxzG,EAAEsE,EAAEw/E,GAAE9jF,EAAEsE,GAAcvE,GAAG,KAAK,EAAE,OAAOC,EAAEqE,EAAEuG,KAAKtG,EAAED,EAAEovG,aAChdsI,GAAG33G,EAAEC,EAAErE,EAApCsE,EAAED,EAAEmvG,cAAcxzG,EAAEsE,EAAEw/E,GAAE9jF,EAAEsE,GAAcvE,GAAG,KAAK,EAAiW,OAA/Vs8G,GAAGh4G,GAAmB,QAAhBrE,EAAEqE,EAAEuvG,cAAqBzmF,EAAE,OAAgC7oB,EAAE,QAApBA,EAAED,EAAEsvG,eAAyBrvG,EAAEW,QAAQ,KAAK4xG,GAAGxyG,EAAErE,EAAEqE,EAAEovG,aAAa,KAAK1zG,IAAGC,EAAEqE,EAAEsvG,cAAc1uG,WAAeX,GAAEg3G,KAAKj3G,EAAEq3G,GAAGt3G,EAAEC,EAAEtE,KAAQuE,EAAED,EAAEkyF,WAAajyF,GAAG,OAAOF,GAAG,OAAOA,EAAEu2D,QAAQr2D,EAAEu4G,WAAQ9B,GAAG9I,GAAG5tG,EAAEkyF,UAAUwT,eAAe+Q,GAAGz2G,EAAEC,EAAE02G,IAAG,GAAG12G,GAAGD,EAAEmgG,WAAW,EAAEngG,EAAEs2D,MAAM48C,GAAGlzG,EAAE,KAAKrE,EAAED,KAAKwxF,GAAEntF,EAAEC,EAAErE,EAAED,GAAGu7G,MAAMj3G,EAAEA,EAAEs2D,OAAat2D,EAAE,KAAK,EAAE,OAAOyzG,GAAGzzG,GAAG,OAAOD,GAAG+2G,GAAG92G,GAAGrE,EAAEqE,EAAEuG,KAAKtG,EAAED,EAAEovG,aAAalvG,EAAE,OAAOH,EAAEA,EAAEyvG,cAAc,KACnftkB,EAAEjrF,EAAE8F,SAASonG,GAAGxxG,EAAEsE,GAAGirF,EAAE,KAAK,OAAOhrF,GAAGitG,GAAGxxG,EAAEuE,KAAKF,EAAEmgG,WAAW,IAAIsX,GAAG13G,EAAEC,GAAG,IAAItE,GAAU,EAAPsE,EAAExD,MAAQyD,EAAEkZ,QAAQnZ,EAAE6vG,eAAe7vG,EAAE4vG,oBAAoB,EAAE5vG,EAAE,OAAOktF,GAAEntF,EAAEC,EAAEkrF,EAAExvF,GAAGsE,EAAEA,EAAEs2D,OAAOt2D,EAAE,KAAK,EAAE,OAAO,OAAOD,GAAG+2G,GAAG92G,GAAG,KAAK,KAAK,GAAG,OAAOk4G,GAAGn4G,EAAEC,EAAEtE,GAAG,KAAK,EAAE,OAAO63G,GAAGvzG,EAAEA,EAAEkyF,UAAUwT,eAAe/pG,EAAEqE,EAAEovG,aAAa,OAAOrvG,EAAEC,EAAEs2D,MAAM28C,GAAGjzG,EAAE,KAAKrE,EAAED,GAAGwxF,GAAEntF,EAAEC,EAAErE,EAAED,GAAGsE,EAAEs2D,MAAM,KAAK,GAAG,OAAO36D,EAAEqE,EAAEuG,KAAKtG,EAAED,EAAEovG,aAA0C+H,GAAGp3G,EAAEC,EAAErE,EAApCsE,EAAED,EAAEmvG,cAAcxzG,EAAEsE,EAAEw/E,GAAE9jF,EAAEsE,GAAcvE,GAAG,KAAK,EAAE,OAAOwxF,GAAEntF,EAAEC,EAAEA,EAAEovG,aAAa1zG,GAAGsE,EAAEs2D,MAAM,KAAK,EACxd,KAAK,GAAG,OAAO42B,GAAEntF,EAAEC,EAAEA,EAAEovG,aAAarpG,SAASrK,GAAGsE,EAAEs2D,MAAM,KAAK,GAAGv2D,EAAE,CAAwE,GAAvEpE,EAAEqE,EAAEuG,KAAK+nF,SAASruF,EAAED,EAAEovG,aAAalkB,EAAElrF,EAAEwvG,cAAwB6I,GAAGr4G,EAAbE,EAAED,EAAE3D,OAAiB,OAAO4uF,EAAE,CAAC,IAAIC,EAAED,EAAE5uF,MAA0G,GAAG,KAAvG4D,EAAE6/F,GAAG5U,EAAEjrF,GAAG,EAAwF,GAArF,mBAAoBvE,EAAEsyF,sBAAsBtyF,EAAEsyF,sBAAsB9C,EAAEjrF,GAAG,cAAwB,GAAGgrF,EAAEnlF,WAAW9F,EAAE8F,WAAWqmF,GAAE9sB,QAAQ,CAACt/D,EAAEq3G,GAAGt3G,EAAEC,EAAEtE,GAAG,MAAMqE,QAAQ,IAAc,QAAVorF,EAAEnrF,EAAEs2D,SAAiB60B,EAAE0H,OAAO7yF,GAAG,OAAOmrF,GAAG,CAAC,IAAI7vF,EAAE6vF,EAAEkkB,oBAAoB,GAAG,OAAO/zG,EAAE,CAAC4vF,EAAEC,EAAE70B,MAAM,IAAI,IAAIt0C,EAAE1mB,EAAE+sD,MAAM,OAAOrmC,GAAG,CAAC,GAAGA,EAAE6+D,UAAUllF,GAAG,IACjfqmB,EAAEy2F,aAAav4G,GAAG,CAAC,IAAIirF,EAAEqH,OAAMxwE,EAAEwvF,GAAG91G,IAAK82F,IAAIuf,GAAGH,GAAGzmB,EAAEnpE,IAAImpE,EAAE0kB,eAAen0G,IAAIyvF,EAAE0kB,eAAen0G,GAAiB,QAAdsmB,EAAEmpE,EAAE2U,YAAoB99E,EAAE6tF,eAAen0G,IAAIsmB,EAAE6tF,eAAen0G,GAAGsmB,EAAEtmB,EAAE,IAAI,IAAID,EAAE0vF,EAAE0H,OAAO,OAAOp3F,GAAG,CAAC,IAAI0B,EAAE1B,EAAEqkG,UAAU,GAAGrkG,EAAEm0G,oBAAoB5tF,EAAEvmB,EAAEm0G,oBAAoB5tF,EAAE,OAAO7kB,GAAGA,EAAEyyG,oBAAoB5tF,IAAI7kB,EAAEyyG,oBAAoB5tF,OAAQ,MAAG,OAAO7kB,GAAGA,EAAEyyG,oBAAoB5tF,GAA+B,MAA7B7kB,EAAEyyG,oBAAoB5tF,EAAavmB,EAAEA,EAAEo3F,OAAOv3F,EAAEu0G,eAAen0G,IAAIJ,EAAEu0G,eAAen0G,GAAG,MAAMsmB,EAAEA,EAAEgyB,WAAWk3C,EAAE,KAAKC,EAAEqH,KAAIrH,EAAE5kF,OAAOvG,EAAEuG,KACtf,KAAa4kF,EAAE70B,MAAM,GAAG,OAAO40B,EAAEA,EAAE2H,OAAO1H,OAAO,IAAID,EAAEC,EAAE,OAAOD,GAAG,CAAC,GAAGA,IAAIlrF,EAAE,CAACkrF,EAAE,KAAK,MAAkB,GAAG,QAAfC,EAAED,EAAEoV,SAAoB,CAACnV,EAAE0H,OAAO3H,EAAE2H,OAAO3H,EAAEC,EAAE,MAAMD,EAAEA,EAAE2H,OAAO1H,EAAED,GAAGgC,GAAEntF,EAAEC,EAAEC,EAAE8F,SAASrK,GAAGsE,EAAEA,EAAEs2D,MAAM,OAAOt2D,EAAE,KAAK,EAAE,OAAOC,EAAED,EAAEuG,KAAsB5K,GAAjBuE,EAAEF,EAAEovG,cAAiBrpG,SAASqxG,GAAGp3G,EAAEtE,GAAkCC,EAAEA,EAAjCsE,EAAEwsF,GAAExsF,EAAEC,EAAEw4G,wBAA8B14G,EAAEmgG,WAAW,EAAEjT,GAAEntF,EAAEC,EAAErE,EAAED,GAAGsE,EAAEs2D,MAAM,KAAK,GAAG,OAAgBp2D,EAAEu/E,GAAXx/E,EAAED,EAAEuG,KAAWvG,EAAEovG,cAA4BkI,GAAGv3G,EAAEC,EAAEC,EAArBC,EAAEu/E,GAAEx/E,EAAEsG,KAAKrG,GAAcvE,EAAED,GAAG,KAAK,GAAG,OAAO67G,GAAGx3G,EAAEC,EAAEA,EAAEuG,KAAKvG,EAAEovG,aAAazzG,EAAED,GAAG,KAAK,GAAG,OAAOC,EAAEqE,EAAEuG,KAAKtG,EAAED,EAAEovG,aAAanvG,EAAED,EAAEmvG,cACtfxzG,EAAEsE,EAAEw/E,GAAE9jF,EAAEsE,GAAG,OAAOF,IAAIA,EAAE+/F,UAAU,KAAK9/F,EAAE8/F,UAAU,KAAK9/F,EAAEmgG,WAAW,GAAGngG,EAAEwyF,IAAI,EAAEnG,GAAE1wF,IAAIoE,GAAE,EAAG6uG,GAAG5uG,IAAID,GAAE,EAAGq3G,GAAGp3G,EAAEtE,GAAGw2G,GAAGlyG,EAAErE,EAAEsE,GAAKsyG,GAAGvyG,EAAErE,EAAEsE,EAAEvE,GAAGo8G,GAAG,KAAK93G,EAAErE,GAAE,EAAGoE,EAAErE,GAAGotB,EAAE,OAAO,IAAI6vF,GAAG,CAACr5C,QAAQ,MAAMs5C,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAAST,GAAGt4G,EAAEC,GAAG,IAAItE,EAAEqE,EAAEwG,KAAK+nF,SAASvC,GAAE4sB,GAAGj9G,EAAEwyF,eAAiBxyF,EAAEwyF,cAAcluF,EAAE,SAAS+4G,GAAGh5G,GAAG,IAAIC,EAAE24G,GAAGr5C,QAAQwsB,GAAE6sB,IAAM54G,EAAEwG,KAAK+nF,SAASJ,cAAcluF,EAAE,SAASo3G,GAAGr3G,EAAEC,GAAG44G,GAAG74G,EAAE+4G,GAAGD,GAAG,KAAK,IAAIn9G,EAAEqE,EAAEsvG,oBAAoB,OAAO3zG,GAAGA,EAAEm0G,gBAAgB7vG,IAAI61G,IAAG,GAAI91G,EAAEsvG,oBAAoB,KACre,SAAS5iB,GAAE1sF,EAAEC,GAAuO,OAAjO84G,KAAK/4G,IAAG,IAAKC,GAAG,IAAIA,IAAM,iBAAkBA,GAAG,aAAaA,IAAE84G,GAAG/4G,EAAEC,EAAE,YAAWA,EAAE,CAAC6gF,QAAQ9gF,EAAE04G,aAAaz4G,EAAEg0C,KAAK,MAAM,OAAO6kE,IAAI,OAAOD,IAAG9vF,EAAE,OAAc+vF,GAAG74G,EAAE44G,GAAGvJ,oBAAoB,CAAChnD,MAAMroD,EAAE6vG,eAAe,IAAIgJ,GAAGA,GAAG7kE,KAAKh0C,GAASD,EAAEmuF,cAAc,IAAI8qB,GAAG,EAAElH,GAAG,EAAEC,GAAG,EAAEkH,GAAG,EAAEtB,IAAG,EAAG,SAASuB,GAAGn5G,GAAG,MAAM,CAACqxG,UAAUrxG,EAAEo5G,YAAY,KAAKC,WAAW,KAAKC,oBAAoB,KAAKC,mBAAmB,KAAK5J,YAAY,KAAKD,WAAW,KAAK8J,oBAAoB,KAAKC,mBAAmB,MAC1e,SAASC,GAAG15G,GAAG,MAAM,CAACqxG,UAAUrxG,EAAEqxG,UAAU+H,YAAYp5G,EAAEo5G,YAAYC,WAAWr5G,EAAEq5G,WAAWC,oBAAoB,KAAKC,mBAAmB,KAAK5J,YAAY,KAAKD,WAAW,KAAK8J,oBAAoB,KAAKC,mBAAmB,MAAM,SAAShI,GAAGzxG,GAAG,MAAM,CAAC8vG,eAAe9vG,EAAEyyF,IAAIwmB,GAAGtH,QAAQ,KAAK/qG,SAAS,KAAKqtC,KAAK,KAAK27D,WAAW,MAAM,SAAS+J,GAAG35G,EAAEC,GAAG,OAAOD,EAAEq5G,WAAWr5G,EAAEo5G,YAAYp5G,EAAEq5G,WAAWp5G,GAAGD,EAAEq5G,WAAWplE,KAAKh0C,EAAED,EAAEq5G,WAAWp5G,GAC1a,SAAS4xG,GAAG7xG,EAAEC,GAAG,IAAItE,EAAEqE,EAAE+/F,UAAU,GAAG,OAAOpkG,EAAE,CAAC,IAAIC,EAAEoE,EAAEwvG,YAAgBtvG,EAAE,KAAK,OAAOtE,IAAIA,EAAEoE,EAAEwvG,YAAY2J,GAAGn5G,EAAEuvG,qBAAqB3zG,EAAEoE,EAAEwvG,YAAYtvG,EAAEvE,EAAE6zG,YAAY,OAAO5zG,EAAE,OAAOsE,GAAGtE,EAAEoE,EAAEwvG,YAAY2J,GAAGn5G,EAAEuvG,eAAervG,EAAEvE,EAAE6zG,YAAY2J,GAAGx9G,EAAE4zG,gBAAgB3zG,EAAEoE,EAAEwvG,YAAYkK,GAAGx5G,GAAG,OAAOA,IAAIA,EAAEvE,EAAE6zG,YAAYkK,GAAG99G,IAAI,OAAOsE,GAAGtE,IAAIsE,EAAEy5G,GAAG/9G,EAAEqE,GAAG,OAAOrE,EAAEy9G,YAAY,OAAOn5G,EAAEm5G,YAAYM,GAAG/9G,EAAEqE,GAAG05G,GAAGz5G,EAAED,KAAK05G,GAAG/9G,EAAEqE,GAAGC,EAAEm5G,WAAWp5G,GACja,SAAS25G,GAAG55G,EAAEC,GAAG,IAAItE,EAAEqE,EAAEwvG,YAAiE,QAArD7zG,EAAE,OAAOA,EAAEqE,EAAEwvG,YAAY2J,GAAGn5G,EAAEuvG,eAAesK,GAAG75G,EAAErE,IAAY49G,mBAAmB59G,EAAE29G,oBAAoB39G,EAAE49G,mBAAmBt5G,GAAGtE,EAAE49G,mBAAmBtlE,KAAKh0C,EAAEtE,EAAE49G,mBAAmBt5G,GAAG,SAAS45G,GAAG75G,EAAEC,GAAG,IAAItE,EAAEqE,EAAE+/F,UAA+D,OAArD,OAAOpkG,GAAGsE,IAAItE,EAAE6zG,cAAcvvG,EAAED,EAAEwvG,YAAYkK,GAAGz5G,IAAWA,EACvT,SAAS65G,GAAG95G,EAAEC,EAAEtE,EAAEC,EAAEsE,EAAEC,GAAG,OAAOxE,EAAE82F,KAAK,KAAKsf,GAAG,MAAmB,mBAAZ/xG,EAAErE,EAAEg2G,SAA8B3xG,EAAEvE,KAAK0E,EAAEvE,EAAEsE,GAAGF,EAAE,KAAKk5G,GAAGl5G,EAAEogG,WAAuB,KAAbpgG,EAAEogG,UAAgB,GAAG,KAAK6Y,GAAuD,GAAG,OAA3C/4G,EAAE,mBAAdF,EAAErE,EAAEg2G,SAAgC3xG,EAAEvE,KAAK0E,EAAEvE,EAAEsE,GAAGF,GAA0B,MAAM,OAAOjD,EAAE,GAAGnB,EAAEsE,GAAG,KAAK8xG,GAAG4F,IAAG,EAAG,OAAOh8G,EACjR,SAAS62G,GAAGzyG,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG03G,IAAG,EAAa,IAAI,IAAIz3G,GAAlBF,EAAE45G,GAAG75G,EAAEC,IAAeoxG,UAAUlmB,EAAE,KAAKC,EAAE,EAAE7vF,EAAE0E,EAAEm5G,YAAYn3F,EAAE9hB,EAAE,OAAO5E,GAAG,CAAC,IAAIG,EAAEH,EAAEu0G,eAAep0G,EAAEwE,GAAG,OAAOirF,IAAIA,EAAE5vF,EAAE4E,EAAE8hB,GAAGmpE,EAAE1vF,IAAI0vF,EAAE1vF,KAAKumB,EAAE63F,GAAG95G,EAAEC,EAAE1E,EAAE0mB,EAAEtmB,EAAEC,GAAG,OAAOL,EAAEqL,WAAW5G,EAAEogG,WAAW,GAAG7kG,EAAEq0G,WAAW,KAAK,OAAO3vG,EAAEyvG,WAAWzvG,EAAE0vG,YAAY1vG,EAAEyvG,WAAWn0G,GAAG0E,EAAEyvG,WAAWE,WAAWr0G,EAAE0E,EAAEyvG,WAAWn0G,KAAKA,EAAEA,EAAE04C,KAAY,IAAPv4C,EAAE,KAASH,EAAE0E,EAAEq5G,oBAAoB,OAAO/9G,GAAG,CAAC,IAAI6B,EAAE7B,EAAEu0G,eAAe1yG,EAAE8C,GAAG,OAAOxE,IAAIA,EAAEH,EAAE,OAAO4vF,IAAIhrF,EAAE8hB,IAAImpE,EAAEhuF,IAAIguF,EAAEhuF,KAAK6kB,EAAE63F,GAAG95G,EAAEC,EAAE1E,EAAE0mB,EAAEtmB,EAAEC,GAAG,OAAOL,EAAEqL,WAAW5G,EAAEogG,WAClf,GAAG7kG,EAAEq0G,WAAW,KAAK,OAAO3vG,EAAEw5G,mBAAmBx5G,EAAEu5G,oBAAoBv5G,EAAEw5G,mBAAmBl+G,GAAG0E,EAAEw5G,mBAAmB7J,WAAWr0G,EAAE0E,EAAEw5G,mBAAmBl+G,KAAKA,EAAEA,EAAE04C,KAAK,OAAOk3C,IAAIlrF,EAAEo5G,WAAW,MAAM,OAAO39G,EAAEuE,EAAEs5G,mBAAmB,KAAKv5G,EAAEogG,WAAW,GAAG,OAAOjV,GAAG,OAAOzvF,IAAIyE,EAAE8hB,GAAGhiB,EAAEoxG,UAAUlxG,EAAEF,EAAEm5G,YAAYjuB,EAAElrF,EAAEq5G,oBAAoB59G,EAAEsE,EAAE8vG,eAAe1kB,EAAEprF,EAAEuvG,cAActtF,EACxW,SAAS83F,GAAG/5G,EAAEC,EAAEtE,GAAG,OAAOsE,EAAEq5G,sBAAsB,OAAOr5G,EAAEo5G,aAAap5G,EAAEo5G,WAAWplE,KAAKh0C,EAAEq5G,oBAAoBr5G,EAAEo5G,WAAWp5G,EAAEs5G,oBAAoBt5G,EAAEq5G,oBAAoBr5G,EAAEs5G,mBAAmB,MAAMS,GAAG/5G,EAAE0vG,YAAYh0G,GAAGsE,EAAE0vG,YAAY1vG,EAAEyvG,WAAW,KAAKsK,GAAG/5G,EAAEu5G,oBAAoB79G,GAAGsE,EAAEu5G,oBAAoBv5G,EAAEw5G,mBAAmB,KAAK,SAASO,GAAGh6G,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIrE,EAAEqE,EAAE4G,SAAS,GAAG,OAAOjL,EAAE,CAACqE,EAAE4G,SAAS,KAAK,IAAIhL,EAAEqE,EAAE,mBAAoBtE,GAAEotB,EAAE,MAAMptB,GAAUA,EAAEF,KAAKG,GAAGoE,EAAEA,EAAE4vG,YACjd,SAASqK,GAAGj6G,EAAEC,GAAG,MAAM,CAAC1D,MAAMyD,EAAEpC,OAAOqC,EAAEi6G,MAAM7f,GAAGp6F,IAAI,SAASk6G,GAAGn6G,GAAGA,EAAEogG,WAAW,EAAE,IAAIga,QAAG,EAAOC,QAAG,EAAOC,QAAG,EAAOC,QAAG,EAAOH,GAAG,SAASp6G,EAAEC,GAAG,IAAI,IAAItE,EAAEsE,EAAEs2D,MAAM,OAAO56D,GAAG,CAAC,GAAG,IAAIA,EAAE82F,KAAK,IAAI92F,EAAE82F,IAAIzyF,EAAE0C,YAAY/G,EAAEw2F,gBAAgB,GAAG,IAAIx2F,EAAE82F,KAAK,OAAO92F,EAAE46D,MAAM,CAAC56D,EAAE46D,MAAMu8B,OAAOn3F,EAAEA,EAAEA,EAAE46D,MAAM,SAAS,GAAG56D,IAAIsE,EAAE,MAAM,KAAK,OAAOtE,EAAE4kG,SAAS,CAAC,GAAG,OAAO5kG,EAAEm3F,QAAQn3F,EAAEm3F,SAAS7yF,EAAE,OAAOtE,EAAEA,EAAEm3F,OAAOn3F,EAAE4kG,QAAQzN,OAAOn3F,EAAEm3F,OAAOn3F,EAAEA,EAAE4kG,UAAU8Z,GAAG,aAC7aC,GAAG,SAASt6G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,IAAIC,EAAEH,EAAEyvG,cAAc,GAAGtvG,IAAIvE,EAAE,CAAC,IAAIuvF,EAAElrF,EAAEkyF,UAA+B,OAArBohB,GAAG1mB,GAAEttB,SAASv/D,EAAE,KAAYrE,GAAG,IAAK,QAAQwE,EAAEw7F,GAAGxQ,EAAEhrF,GAAGvE,EAAE+/F,GAAGxQ,EAAEvvF,GAAGoE,EAAE,GAAG,MAAM,IAAK,SAASG,EAAE+nG,GAAG/c,EAAEhrF,GAAGvE,EAAEssG,GAAG/c,EAAEvvF,GAAGoE,EAAE,GAAG,MAAM,IAAK,SAASG,EAAEpD,EAAE,GAAGoD,EAAE,CAAC5D,WAAM,IAASX,EAAEmB,EAAE,GAAGnB,EAAE,CAACW,WAAM,IAASyD,EAAE,GAAG,MAAM,IAAK,WAAWG,EAAEmoG,GAAGnd,EAAEhrF,GAAGvE,EAAE0sG,GAAGnd,EAAEvvF,GAAGoE,EAAE,GAAG,MAAM,QAAQ,mBAAoBG,EAAEsjB,SAAS,mBAAoB7nB,EAAE6nB,UAAU0nE,EAAEtgF,QAAQmiG,IAAIF,GAAGnxG,EAAEC,GAAGuvF,EAAExvF,OAAE,EAAO,IAAIyvF,EAAE,KAAK,IAAIzvF,KAAKwE,EAAE,IAAIvE,EAAEuB,eAAexB,IAAIwE,EAAEhD,eAAexB,IAAI,MAAMwE,EAAExE,GAAG,GAAG,UACrfA,EAAE,CAAC,IAAIJ,EAAE4E,EAAExE,GAAG,IAAIwvF,KAAK5vF,EAAEA,EAAE4B,eAAeguF,KAAKC,IAAIA,EAAE,IAAIA,EAAED,GAAG,QAAQ,4BAA4BxvF,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIo1F,EAAG5zF,eAAexB,GAAGqE,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIrB,KAAKhD,EAAE,OAAO,IAAIA,KAAKC,EAAE,CAAC,IAAIqmB,EAAErmB,EAAED,GAAyB,GAAtBJ,EAAE,MAAM4E,EAAEA,EAAExE,QAAG,EAAUC,EAAEuB,eAAexB,IAAIsmB,IAAI1mB,IAAI,MAAM0mB,GAAG,MAAM1mB,GAAG,GAAG,UAAUI,EAAE,GAAGJ,EAAE,CAAC,IAAI4vF,KAAK5vF,GAAGA,EAAE4B,eAAeguF,IAAIlpE,GAAGA,EAAE9kB,eAAeguF,KAAKC,IAAIA,EAAE,IAAIA,EAAED,GAAG,IAAI,IAAIA,KAAKlpE,EAAEA,EAAE9kB,eAAeguF,IAAI5vF,EAAE4vF,KAAKlpE,EAAEkpE,KAAKC,IAClfA,EAAE,IAAIA,EAAED,GAAGlpE,EAAEkpE,SAASC,IAAIprF,IAAIA,EAAE,IAAIA,EAAErB,KAAKhD,EAAEyvF,IAAIA,EAAEnpE,MAAM,4BAA4BtmB,GAAGsmB,EAAEA,EAAEA,EAAEorF,YAAO,EAAO9xG,EAAEA,EAAEA,EAAE8xG,YAAO,EAAO,MAAMprF,GAAG1mB,IAAI0mB,IAAIjiB,EAAEA,GAAG,IAAIrB,KAAKhD,EAAE,GAAGsmB,IAAI,aAAatmB,EAAEJ,IAAI0mB,GAAG,iBAAkBA,GAAG,iBAAkBA,IAAIjiB,EAAEA,GAAG,IAAIrB,KAAKhD,EAAE,GAAGsmB,GAAG,mCAAmCtmB,GAAG,6BAA6BA,IAAIo1F,EAAG5zF,eAAexB,IAAI,MAAMsmB,GAAG8qF,GAAG7sG,EAAEvE,GAAGqE,GAAGzE,IAAI0mB,IAAIjiB,EAAE,MAAMA,EAAEA,GAAG,IAAIrB,KAAKhD,EAAEsmB,IAAImpE,IAAIprF,EAAEA,GAAG,IAAIrB,KAAK,QAAQysF,GAAGlrF,EAAEF,GAAGC,EAAEuvG,YAAYtvG,IAAIi6G,GAAGl6G,KAAKs6G,GAAG,SAASv6G,EAAEC,EAAEtE,EAAEC,GAAGD,IAAIC,GAAGu+G,GAAGl6G,IAChf,IAAIu6G,GAAG,mBAAoBC,QAAQA,QAAQ3M,IAAI,SAAS4M,GAAG16G,EAAEC,GAAG,IAAItE,EAAEsE,EAAErC,OAAOhC,EAAEqE,EAAEi6G,MAAM,OAAOt+G,GAAG,OAAOD,IAAIC,EAAEy+F,GAAG1+F,IAAI,OAAOA,GAAGy+F,GAAGz+F,EAAE6K,MAAMvG,EAAEA,EAAE1D,MAAM,OAAOyD,GAAG,IAAIA,EAAEyyF,KAAK2H,GAAGp6F,EAAEwG,MAAM,IAAI7G,QAAQC,MAAMK,GAAG,MAAMC,GAAGiK,WAAW,WAAW,MAAMjK,KAAM,SAASy6G,GAAG36G,GAAG,IAAIC,EAAED,EAAEiQ,IAAI,GAAG,OAAOhQ,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMtE,GAAGi/G,GAAG56G,EAAErE,QAAQsE,EAAEs/D,QAAQ,KAClW,SAASs7C,GAAG76G,EAAEC,EAAEtE,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE6zG,aAAuB7zG,EAAE+zG,WAAW,MAAiB,CAAC,IAAI9zG,EAAED,EAAEA,EAAEs4C,KAAK,EAAE,CAAC,IAAIr4C,EAAE62F,IAAIzyF,KAAK4zG,GAAG,CAAC,IAAI1zG,EAAEtE,EAAEwZ,QAAQxZ,EAAEwZ,aAAQ,OAAO,IAASlV,GAAGA,KAAKtE,EAAE62F,IAAIxyF,KAAK2zG,KAAK1zG,EAAEtE,EAAEgB,OAAOhB,EAAEwZ,QAAQlV,KAAKtE,EAAEA,EAAEq4C,WAAWr4C,IAAID,IAGjO,SAASm/G,GAAG96G,GAAiC,OAA9B,mBAAoBivG,IAAIA,GAAGjvG,GAAUA,EAAEyyF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIxyF,EAAED,EAAEwvG,YAAY,GAAG,OAAOvvG,GAAmB,QAAfA,EAAEA,EAAEyvG,YAAqB,CAAC,IAAI/zG,EAAEsE,EAAEA,EAAEg0C,KAAK,EAAE,CAAC,IAAIr4C,EAAED,EAAEyZ,QAAQ,QAAG,IAASxZ,EAAE,CAAC,IAAIsE,EAAEF,EAAE,IAAIpE,IAAI,MAAMuE,GAAGy6G,GAAG16G,EAAEC,IAAIxE,EAAEA,EAAEs4C,WAAWt4C,IAAIsE,GAAG,MAAM,KAAK,EAAsB,GAApB06G,GAAG36G,GAAoB,mBAAjBC,EAAED,EAAEmyF,WAAmCh9E,qBAAqB,IAAIlV,EAAE+C,MAAMhD,EAAEyvG,cAAcxvG,EAAEyI,MAAM1I,EAAEuvG,cAActvG,EAAEkV,uBAAuB,MAAMhV,GAAGy6G,GAAG56G,EAAEG,GAAG,MAAM,KAAK,EAAEw6G,GAAG36G,GAAG,MAAM,KAAK,EAAE+6G,GAAG/6G,IAC/c,SAASg7G,GAAGh7G,GAAG,OAAO,IAAIA,EAAEyyF,KAAK,IAAIzyF,EAAEyyF,KAAK,IAAIzyF,EAAEyyF,IAClD,SAASwoB,GAAGj7G,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAE8yF,OAAO,OAAO7yF,GAAG,CAAC,GAAG+6G,GAAG/6G,GAAG,CAAC,IAAItE,EAAEsE,EAAE,MAAMD,EAAEC,EAAEA,EAAE6yF,OAAO/pE,EAAE,OAAOptB,OAAE,EAAO,IAAIC,EAAEqE,OAAE,EAAO,OAAOtE,EAAE82F,KAAK,KAAK,EAAExyF,EAAEtE,EAAEw2F,UAAUv2F,GAAE,EAAG,MAAM,KAAK,EAAyC,KAAK,EAAEqE,EAAEtE,EAAEw2F,UAAUwT,cAAc/pG,GAAE,EAAG,MAAM,QAAQmtB,EAAE,OAAmB,GAAZptB,EAAEykG,YAAesJ,GAAGzpG,EAAE,IAAItE,EAAEykG,YAAY,IAAIpgG,EAAEC,EAAE,IAAItE,EAAEqE,IAAI,CAAC,KAAK,OAAOrE,EAAE4kG,SAAS,CAAC,GAAG,OAAO5kG,EAAEm3F,QAAQkoB,GAAGr/G,EAAEm3F,QAAQ,CAACn3F,EAAE,KAAK,MAAMqE,EAAErE,EAAEA,EAAEm3F,OAAiC,IAA1Bn3F,EAAE4kG,QAAQzN,OAAOn3F,EAAEm3F,OAAWn3F,EAAEA,EAAE4kG,QAAQ,IAAI5kG,EAAE82F,KAAK,IAAI92F,EAAE82F,KAAK,KAAK92F,EAAE82F,KAAK,CAAC,GAC7e,EADgf92F,EAAEykG,UAChf,SAASngG,EAAE,GAAG,OAAOtE,EAAE46D,OAAO,IAAI56D,EAAE82F,IAAI,SAASxyF,EAAOtE,EAAE46D,MAAMu8B,OAAOn3F,EAAEA,EAAEA,EAAE46D,MAAM,KAAiB,EAAZ56D,EAAEykG,WAAa,CAACzkG,EAAEA,EAAEw2F,UAAU,MAAMnyF,GAAG,IAAI,IAAIE,EAAEF,IAAI,CAAC,GAAG,IAAIE,EAAEuyF,KAAK,IAAIvyF,EAAEuyF,IAAI,GAAG92F,EAAE,GAAGC,EAAE,CAAC,IAAIuE,EAAEF,EAAEkrF,EAAEjrF,EAAEiyF,UAAU/G,EAAEzvF,EAAE,IAAIwE,EAAE2O,SAAS3O,EAAEixB,WAAW1C,aAAay8D,EAAEC,GAAGjrF,EAAEuuB,aAAay8D,EAAEC,QAAQnrF,EAAEyuB,aAAaxuB,EAAEiyF,UAAUx2F,QAAQC,GAAGuvF,EAAElrF,EAAEmrF,EAAElrF,EAAEiyF,UAAU,IAAIhH,EAAEr8E,UAAU3O,EAAEgrF,EAAE/5D,YAAa1C,aAAa08D,EAAED,IAAKhrF,EAAEgrF,GAAIzoF,YAAY0oF,GAA4B,OAAxBD,EAAEA,EAAE+vB,sBAA0C,OAAO/6G,EAAE0K,UAAU1K,EAAE0K,QAAQmiG,KAAK/sG,EAAEyC,YAAYxC,EAAEiyF,gBAClf,GAAG,IAAIjyF,EAAEuyF,KAAK,OAAOvyF,EAAEq2D,MAAM,CAACr2D,EAAEq2D,MAAMu8B,OAAO5yF,EAAEA,EAAEA,EAAEq2D,MAAM,SAAS,GAAGr2D,IAAIF,EAAE,MAAM,KAAK,OAAOE,EAAEqgG,SAAS,CAAC,GAAG,OAAOrgG,EAAE4yF,QAAQ5yF,EAAE4yF,SAAS9yF,EAAE,OAAOE,EAAEA,EAAE4yF,OAAO5yF,EAAEqgG,QAAQzN,OAAO5yF,EAAE4yF,OAAO5yF,EAAEA,EAAEqgG,SAC/L,SAASwa,GAAG/6G,GAAG,IAAI,IAAIC,EAAED,EAAErE,GAAE,EAAGC,OAAE,EAAOsE,OAAE,IAAS,CAAC,IAAIvE,EAAE,CAACA,EAAEsE,EAAE6yF,OAAO9yF,EAAE,OAAO,CAA0B,OAAzB,OAAOrE,GAAEotB,EAAE,OAAqBptB,EAAE82F,KAAK,KAAK,EAAE72F,EAAED,EAAEw2F,UAAUjyF,GAAE,EAAG,MAAMF,EAAE,KAAK,EAA2C,KAAK,EAAEpE,EAAED,EAAEw2F,UAAUwT,cAAczlG,GAAE,EAAG,MAAMF,EAAErE,EAAEA,EAAEm3F,OAAOn3F,GAAE,EAAG,GAAG,IAAIsE,EAAEwyF,KAAK,IAAIxyF,EAAEwyF,IAAI,CAACzyF,EAAE,IAAI,IAAIG,EAAEF,EAAEkrF,EAAEhrF,IAAI,GAAG26G,GAAG3vB,GAAG,OAAOA,EAAE50B,OAAO,IAAI40B,EAAEsH,IAAItH,EAAE50B,MAAMu8B,OAAO3H,EAAEA,EAAEA,EAAE50B,UAAU,CAAC,GAAG40B,IAAIhrF,EAAE,MAAM,KAAK,OAAOgrF,EAAEoV,SAAS,CAAC,GAAG,OAAOpV,EAAE2H,QAAQ3H,EAAE2H,SAAS3yF,EAAE,MAAMH,EAAEmrF,EAAEA,EAAE2H,OAAO3H,EAAEoV,QAAQzN,OAAO3H,EAAE2H,OAAO3H,EAAEA,EAAEoV,QAAQrgG,GAC1fC,EAAEvE,EAAEuvF,EAAElrF,EAAEkyF,UAAU,IAAIhyF,EAAE2O,SAAS3O,EAAEixB,WAAWvuB,YAAYsoF,GAAGhrF,EAAE0C,YAAYsoF,IAAIvvF,EAAEiH,YAAY5C,EAAEkyF,gBAAgB,GAAG,IAAIlyF,EAAEwyF,KAAK,GAAG,OAAOxyF,EAAEs2D,MAAM,CAAC36D,EAAEqE,EAAEkyF,UAAUwT,cAAczlG,GAAE,EAAGD,EAAEs2D,MAAMu8B,OAAO7yF,EAAEA,EAAEA,EAAEs2D,MAAM,eAAe,GAAGukD,GAAG76G,GAAG,OAAOA,EAAEs2D,MAAM,CAACt2D,EAAEs2D,MAAMu8B,OAAO7yF,EAAEA,EAAEA,EAAEs2D,MAAM,SAAS,GAAGt2D,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEsgG,SAAS,CAAC,GAAG,OAAOtgG,EAAE6yF,QAAQ7yF,EAAE6yF,SAAS9yF,EAAE,OAAkB,KAAXC,EAAEA,EAAE6yF,QAAaL,MAAM92F,GAAE,GAAIsE,EAAEsgG,QAAQzN,OAAO7yF,EAAE6yF,OAAO7yF,EAAEA,EAAEsgG,SACna,SAAS4a,GAAGn7G,EAAEC,GAAG,OAAOA,EAAEwyF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGooB,GAAG/G,GAAGC,GAAG9zG,GAAG,MAAM,KAAK,EAAE,MAAM,KAAK,EAAE,IAAItE,EAAEsE,EAAEkyF,UAAU,GAAG,MAAMx2F,EAAE,CAAC,IAAIC,EAAEqE,EAAEwvG,cAAczvG,EAAE,OAAOA,EAAEA,EAAEyvG,cAAc7zG,EAAE,IAAIsE,EAAED,EAAEuG,KAAKrG,EAAEF,EAAEuvG,YAAYvvG,EAAEuvG,YAAY,KAAK,OAAOrvG,GAjG5O,SAAYH,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAGF,EAAEuyF,GAAIryF,EAAE,UAAUvE,GAAG,UAAUuE,EAAEsG,MAAM,MAAMtG,EAAErE,MAAMqgG,GAAGl8F,EAAEE,GAAGgqF,GAAGvuF,EAAEC,GAAGA,EAAEsuF,GAAGvuF,EAAEuE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEtC,OAAOwC,GAAG,EAAE,CAAC,IAAIgrF,EAAElrF,EAAEE,GAAGirF,EAAEnrF,EAAEE,EAAE,GAAG,UAAUgrF,EAAE2gB,GAAG9rG,EAAEorF,GAAG,4BAA4BD,EAAEme,GAAGtpG,EAAEorF,GAAG,aAAaD,EAAEue,GAAG1pG,EAAEorF,GAAGgQ,GAAGp7F,EAAEmrF,EAAEC,EAAExvF,GAAG,OAAOD,GAAG,IAAK,QAAQwgG,GAAGn8F,EAAEE,GAAG,MAAM,IAAK,WAAWuoG,GAAGzoG,EAAEE,GAAG,MAAM,IAAK,SAASD,EAAED,EAAE87F,cAAcsf,YAAYp7G,EAAE87F,cAAcsf,cAAcl7G,EAAE4a,SAAmB,OAAVnf,EAAEuE,EAAE3D,OAAc6rG,GAAGpoG,IAAIE,EAAE4a,SAASnf,GAAE,GAAIsE,MAAMC,EAAE4a,WAAW,MAAM5a,EAAE27F,aAAauM,GAAGpoG,IAAIE,EAAE4a,SAAS5a,EAAE27F,cAClf,GAAIuM,GAAGpoG,IAAIE,EAAE4a,SAAS5a,EAAE4a,SAAS,GAAG,IAAG,KAgGwMugG,CAAG1/G,EAAEwE,EAAED,EAAEF,EAAEpE,GAAK,MAAM,KAAK,EAAE,OAAOqE,EAAEkyF,WAAUppE,EAAE,OAAc9oB,EAAEkyF,UAAUyX,UAAU3pG,EAAEwvG,cAAc,MAAM,KAAK,EAAQ,KAAK,GAAG,MAAM,KAAK,GAC7W,GADgX9zG,EAAEsE,EAAEsvG,cAAc3zG,OAAE,EAAOoE,EAAEC,EAAE,OAAOtE,EAAEC,GAAE,GAAIA,GAAE,EAAGoE,EAAEC,EAAEs2D,MAAM,IAAI56D,EAAEy8G,aAAaz8G,EAAEy8G,WAAW5G,OAAO,OAAOxxG,GATze,SAAYA,EAAEC,GAAG,IAAI,IAAItE,EAAEqE,IAAI,CAAC,GAAG,IAAIrE,EAAE82F,IAAI,CAAC,IAAI72F,EAAED,EAAEw2F,UAAU,GAAGlyF,EAAErE,EAAEuG,MAAMqoB,QAAQ,WAAW,CAAC5uB,EAAED,EAAEw2F,UAAU,IAAIjyF,EAAEvE,EAAE8zG,cAActtG,MAAMjC,EAAE,MAASA,GAAaA,EAAE/C,eAAe,WAAW+C,EAAEsqB,QAAQ,KAAK5uB,EAAEuG,MAAMqoB,QAAQqhF,GAAG,UAAU3rG,SAAS,GAAG,IAAIvE,EAAE82F,IAAI92F,EAAEw2F,UAAUyX,UAAU3pG,EAAE,GAAGtE,EAAE8zG,kBAAmB,IAAG,KAAK9zG,EAAE82F,KAAK,OAAO92F,EAAE4zG,cAAc,EAAC3zG,EAAED,EAAE46D,MAAMgqC,SAAUzN,OAAOn3F,EAAEA,EAAEC,EAAE,SAAc,GAAG,OAAOD,EAAE46D,MAAM,CAAC56D,EAAE46D,MAAMu8B,OAAOn3F,EAAEA,EAAEA,EAAE46D,MAAM,UAAS,GAAG56D,IAAIqE,EAAE,MAAM,KAAK,OAAOrE,EAAE4kG,SAAS,CAAC,GAAG,OAAO5kG,EAAEm3F,QACjfn3F,EAAEm3F,SAAS9yF,EAAE,OAAOrE,EAAEA,EAAEm3F,OAAOn3F,EAAE4kG,QAAQzN,OAAOn3F,EAAEm3F,OAAOn3F,EAAEA,EAAE4kG,SAQ+a+a,CAAGt7G,EAAEpE,GAChe,QADmeD,EACpfsE,EAAEuvG,aAAwB,CAACvvG,EAAEuvG,YAAY,KAAK,IAAIrkB,EAAElrF,EAAEkyF,UAAU,OAAOhH,IAAIA,EAAElrF,EAAEkyF,UAAU,IAAIqoB,IAAI7+G,EAAE0H,QAAQ,SAASrD,GAAG,IAAIrE,EA+B0L,SAAYqE,EAAEC,GAAG,IAAItE,EAAEqE,EAAEmyF,UAAU,OAAOx2F,GAAGA,EAAE66B,OAAOv2B,GAAUA,EAAEyxG,GAATzxG,EAAEuxG,KAAYxxG,GAAa,QAAVA,EAAEu7G,GAAGv7G,EAAEC,MAAcuwG,GAAGxwG,EAAEC,GAAsB,KAAnBA,EAAED,EAAE8vG,iBAAsB0L,GAAGx7G,EAAEC,KA/B3TnD,KAAK,KAAKmD,EAAED,GAAGmrF,EAAEswB,IAAIz7G,KAAKmrF,EAAE74E,IAAItS,GAAGA,EAAEynC,KAAK9rC,EAAEA,MAAM,MAAM,KAAK,GAAG,MAAM,QAAQotB,EAAE,QAAQ,IAAI2yF,GAAG,mBAAoBC,QAAQA,QAAQ1I,IAAI,SAAS2I,GAAG57G,EAAEC,EAAEtE,IAAGA,EAAE81G,GAAG91G,IAAK82F,IAAIymB,GAAGv9G,EAAEg2G,QAAQ,CAAC9wG,QAAQ,MAAM,IAAIjF,EAAEqE,EAAE1D,MAA2C,OAArCZ,EAAEiL,SAAS,WAAWi1G,GAAGjgH,GAAG8+G,GAAG16G,EAAEC,IAAWtE,EAC9X,SAASmgH,GAAG97G,EAAEC,EAAEtE,IAAGA,EAAE81G,GAAG91G,IAAK82F,IAAIymB,GAAG,IAAIt9G,EAAEoE,EAAEwG,KAAKwxG,yBAAyB,GAAG,mBAAoBp8G,EAAE,CAAC,IAAIsE,EAAED,EAAE1D,MAAMZ,EAAEg2G,QAAQ,WAAW,OAAO/1G,EAAEsE,IAAI,IAAIC,EAAEH,EAAEmyF,UAAkP,OAAxO,OAAOhyF,GAAG,mBAAoBA,EAAE47G,oBAAoBpgH,EAAEiL,SAAS,WAAW,mBAAoBhL,IAAI,OAAOogH,GAAGA,GAAG,IAAIlO,IAAI,CAAChwG,OAAOk+G,GAAG1pG,IAAIxU,OAAO,IAAInC,EAAEsE,EAAE1D,MAAM2D,EAAED,EAAEi6G,MAAMQ,GAAG16G,EAAEC,GAAGnC,KAAKi+G,kBAAkBpgH,EAAE,CAACsgH,eAAe,OAAO/7G,EAAEA,EAAE,OAAcvE,EACrZ,SAASugH,GAAGl8G,GAAG,OAAOA,EAAEyyF,KAAK,KAAK,EAAEnG,GAAEtsF,EAAEwG,OAAOgoG,KAAM,IAAIvuG,EAAED,EAAEogG,UAAU,OAAS,KAAFngG,GAAQD,EAAEogG,WAAa,KAAHngG,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAE,OAAOyzG,KAAMhF,KAAoB,IAAO,IAArBxuG,EAAED,EAAEogG,aAAqBr3E,EAAE,OAAc/oB,EAAEogG,WAAa,KAAHngG,EAAQ,GAAGD,EAAE,KAAK,EAAE,OAAO2zG,GAAG3zG,GAAG,KAAK,KAAK,GAAG,OAAuB,MAAhBC,EAAED,EAAEogG,YAAkBpgG,EAAEogG,WAAa,KAAHngG,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAOyzG,KAAM,KAAK,KAAK,GAAG,OAAOuF,GAAGh5G,GAAG,KAAK,QAAQ,OAAO,MACpY,IAAIm8G,GAAG/iB,GAAGtJ,uBAAuBssB,GAAGhjB,GAAGrJ,kBAAkBssB,GAAG,WAAWC,IAAG,EAAGlvB,GAAE,KAAKmvB,GAAG,KAAKrvB,GAAE,EAAEsvB,IAAI,EAAEC,IAAG,EAAGhvB,GAAE,KAAKivB,IAAG,EAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKb,GAAG,KAAK,SAASc,KAAK,GAAG,OAAO1vB,GAAE,IAAI,IAAIptF,EAAEotF,GAAE0F,OAAO,OAAO9yF,GAAG,CAAC,IAAIC,EAAED,EAAE,OAAOC,EAAEwyF,KAAK,KAAK,EAAE,IAAI92F,EAAEsE,EAAEuG,KAAK+nG,kBAAkB,MAAO5yG,GAAe6yG,KAAM,MAAM,KAAK,EAAEiF,KAAMhF,KAAM,MAAM,KAAK,EAAEkF,GAAG1zG,GAAG,MAAM,KAAK,EAAEwzG,KAAM,MAAM,KAAK,GAAGuF,GAAG/4G,GAAGD,EAAEA,EAAE8yF,OAAOypB,GAAG,KAAKrvB,GAAE,EAAEsvB,IAAI,EAAEC,IAAG,EAAGrvB,GAAE,KACja,SAAS2vB,KAAK,KAAK,OAAOtvB,IAAG,CAAC,IAAIztF,EAAEytF,GAAE2S,UAAmC,GAAvB,GAAFpgG,GAAM0pG,GAAGjc,GAAE0E,UAAU,IAAS,IAAFnyF,EAAM,CAAC,IAAIC,EAAEwtF,GAAEsS,UAAU,OAAO9/F,IAAY,QAARA,EAAEA,EAAEgQ,OAAe,mBAAoBhQ,EAAEA,EAAE,MAAMA,EAAEs/D,QAAQ,OAAO,OAAS,GAAFv/D,GAAM,KAAK,EAAEi7G,GAAGxtB,IAAGA,GAAE2S,YAAY,EAAE,MAAM,KAAK,EAAE6a,GAAGxtB,IAAGA,GAAE2S,YAAY,EAAE+a,GAAG1tB,GAAEsS,UAAUtS,IAAG,MAAM,KAAK,EAAE0tB,GAAG1tB,GAAEsS,UAAUtS,IAAG,MAAM,KAAK,EAAMstB,GAAJ/6G,EAAEytF,IAAQztF,EAAE8yF,OAAO,KAAK9yF,EAAEu2D,MAAM,KAAKv2D,EAAEuvG,cAAc,KAAKvvG,EAAEwvG,YAAY,KAAmB,QAAdxvG,EAAEA,EAAE+/F,aAAqB//F,EAAE8yF,OAAO,KAAK9yF,EAAEu2D,MAAM,KAAKv2D,EAAEuvG,cAAc,KAAKvvG,EAAEwvG,YAAY,MAAM/hB,GAAEA,GAAEmiB,YAC3e,SAASoN,KAAK,KAAK,OAAOvvB,IAAG,CAAC,GAAe,IAAZA,GAAE2S,UAAcpgG,EAAE,CAAC,IAAIA,EAAEytF,GAAEsS,UAAU9/F,EAAEwtF,GAAE,OAAOxtF,EAAEwyF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGooB,GAAGhH,GAAGD,GAAG3zG,GAAG,MAAMD,EAAE,KAAK,EAAE,GAAe,IAAZC,EAAEmgG,WAAe,OAAOpgG,EAAE,CAAC,IAAIrE,EAAEqE,EAAEyvG,cAAc7zG,EAAEoE,EAAEuvG,cAA4BtvG,GAAdD,EAAEC,EAAEkyF,WAAc5M,wBAAwBtlF,EAAEmvG,cAAcnvG,EAAEuG,KAAK7K,EAAE+jF,GAAEz/E,EAAEuG,KAAK7K,GAAGC,GAAGoE,EAAEi9G,oCAAoCh9G,EAAE,MAAMD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAMA,EAAE,QAAQ+oB,EAAE,QAAQ0kE,GAAEA,GAAEmiB,YACpZ,SAASsN,GAAGl9G,EAAEC,GAAG,KAAK,OAAOwtF,IAAG,CAAC,IAAI9xF,EAAE8xF,GAAE2S,UAAU,GAAK,GAAFzkG,EAAK,CAAC,IAAIC,EAAE6xF,GAAEsS,UAAU7/F,EAAEutF,GAAEttF,EAAEF,EAAE,OAAOC,EAAEuyF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGooB,GAAG7G,GAAGC,GAAG/zG,GAAG,MAAM,KAAK,EAAE,IAAIirF,EAAEjrF,EAAEiyF,UAAU,GAAe,EAAZjyF,EAAEkgG,UAAY,GAAG,OAAOxkG,EAAEuvF,EAAE52E,wBAAwB,CAAC,IAAI62E,EAAElrF,EAAEkvG,cAAclvG,EAAEsG,KAAK5K,EAAE6zG,cAAc/vB,GAAEx/E,EAAEsG,KAAK5K,EAAE6zG,eAAetkB,EAAE51E,mBAAmB61E,EAAExvF,EAAE2zG,cAAcpkB,EAAE8xB,qCAAqD,QAAhBrhH,EAAEsE,EAAEsvG,cAAsBuK,GAAG75G,EAAEtE,EAAEuvF,GAAK,MAAM,KAAK,EAAkB,GAAG,QAAnBvvF,EAAEsE,EAAEsvG,aAAwB,CAAQ,GAAPrkB,EAAE,KAAQ,OAAOjrF,EAAEq2D,MAAM,OAAOr2D,EAAEq2D,MAAMk8B,KAAK,KAAK,EAAEtH,EACvfjrF,EAAEq2D,MAAM47B,UAAU,MAAM,KAAK,EAAEhH,EAAEjrF,EAAEq2D,MAAM47B,UAAU4nB,GAAG75G,EAAEtE,EAAEuvF,GAAK,MAAM,KAAK,EAAEhrF,EAAED,EAAEiyF,UAAU,OAAOv2F,GAAe,EAAZsE,EAAEkgG,WAAa+M,GAAGjtG,EAAEsG,KAAKtG,EAAEuvG,gBAAgBtvG,EAAE+8B,QAAQ,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAS,KAAK,GAAS,KAAK,GAAG,MAAM,QAAQnU,EAAE,QAAU,IAAFptB,IAAgB,QAARuE,EAAEutF,GAAEx9E,OAAe9P,EAAEstF,GAAE0E,UAAU,mBAAoBjyF,EAAEA,EAAEC,GAAGD,EAAEq/D,QAAQp/D,IAAM,IAAFxE,IAAQghH,GAAG38G,GAAGytF,GAAEA,GAAEmiB,YACtG,SAASgC,KAAK,OAAOgL,IAAIlP,GAAGkP,IAAI,OAAOC,IAAIA,KAC9R,SAASM,GAAGn9G,EAAEC,GAAGy8G,GAAGJ,IAAG,EAAGt8G,EAAEu/D,UAAUt/D,GAAE8oB,EAAE,OAAc,IAAIptB,EAAEqE,EAAEo9G,4BAA4B,IAAIzhH,GAAEotB,EAAE,OAAc/oB,EAAEo9G,4BAA4B,EAAE,IAAIxhH,EAAEqE,EAAE6vG,eAAe5vG,EAAED,EAAE4vG,oBAAiL,IA9F9V,SAAY7vG,EAAEC,GAAiB,GAAdD,EAAEywG,UAAS,EAAM,IAAIxwG,EAAED,EAAE0wG,oBAAoB,EAAE1wG,EAAE2wG,kBAAkB,EAAE3wG,EAAE+wG,sBAAsB,EAAE/wG,EAAEgxG,oBAAoB,EAAEhxG,EAAE8wG,iBAAiB,MAAM,CAAC7wG,EAAED,EAAE8wG,mBAAmB9wG,EAAE8wG,iBAAiB,GAAG,IAAIn1G,EAAEqE,EAAE2wG,kBAAkB,IAAIh1G,IAAIA,EAAEsE,EAAED,EAAE0wG,oBAAoB1wG,EAAE2wG,kBAAkB,EAAE3wG,EAAE0wG,oBAAoBzwG,IAAID,EAAE0wG,oBAAoB1wG,EAAE2wG,oBAA8C,KAA1Bh1G,EAAEqE,EAAE+wG,uBAA4BP,GAAGxwG,EAAEC,GAAGA,EAAED,EAAEgxG,qBAAqBhxG,EAAE+wG,sBAAsB,EAAE/wG,EAAEgxG,oBAAoB,EAAEhxG,EAAE8wG,iBAAiB,EAAEN,GAAGxwG,EAAEC,IACpfA,EAAEtE,GAAG60G,GAAGxwG,EAAEC,GAAG2wG,GAAG,EAAE5wG,GA6F+Kq9G,CAAGr9G,EAAEE,EAAEtE,EAAEsE,EAAEtE,GAAGwgH,GAAG78C,QAAQ,KAAK3jE,OAAE,EAAO,EAAEqE,EAAEmgG,UAAU,OAAOngG,EAAEyvG,YAAYzvG,EAAEyvG,WAAWE,WAAW3vG,EAAErE,EAAEqE,EAAE0vG,aAAa/zG,EAAEqE,EAAErE,EAAEqE,EAAE0vG,YAAY1C,GAAGpH,GAAGqH,GAjIhV,WAAc,IAAIltG,EAAEwmG,KAAK,GAAGG,GAAG3mG,GAAG,CAAC,GAAG,mBAAmBA,EAAE,IAAIC,EAAE,CAAC4c,MAAM7c,EAAEgnG,eAAezmF,IAAIvgB,EAAEinG,mBAAmBjnG,EAAE,CAA8C,IAAIrE,GAAjDsE,GAAGA,EAAED,EAAE6B,gBAAgB5B,EAAE4/F,aAAan/F,QAAewyC,cAAcjzC,EAAEizC,eAAe,GAAGv3C,GAAG,IAAIA,EAAEurG,WAAW,CAACjnG,EAAEtE,EAAEwrG,WAAW,IAAIvrG,EAAED,EAAEyrG,aAAalnG,EAAEvE,EAAE0rG,UAAU1rG,EAAEA,EAAE2rG,YAAY,IAAIrnG,EAAE6O,SAAS5O,EAAE4O,SAAS,MAAMm8E,GAAGhrF,EAAE,KAAK,MAAMD,EAAE,IAAIG,EAAE,EAAEgrF,GAAG,EAAEC,GAAG,EAAE7vF,EAAE,EAAE0mB,EAAE,EAAEvmB,EAAEsE,EAAE5C,EAAE,KAAK6C,EAAE,OAAO,CAAC,IAAI,IAAIzD,EAAKd,IAAIuE,GAAG,IAAIrE,GAAG,IAAIF,EAAEoT,WAAWq8E,EAAEhrF,EAAEvE,GAAGF,IAAIwE,GAAG,IAAIvE,GAAG,IAAID,EAAEoT,WAAWs8E,EAAEjrF,EAAExE,GAAG,IAAID,EAAEoT,WAAW3O,GAAGzE,EAAEkuG,UAAUjsG,QAC1f,QAAQnB,EAAEd,EAAEizB,aAAkBvxB,EAAE1B,EAAEA,EAAEc,EAAE,OAAO,CAAC,GAAGd,IAAIsE,EAAE,MAAMC,EAA8C,GAA5C7C,IAAI6C,KAAK1E,IAAIK,IAAIuvF,EAAEhrF,GAAG/C,IAAI8C,KAAK+hB,IAAItmB,IAAIyvF,EAAEjrF,GAAM,QAAQ3D,EAAEd,EAAE21B,aAAa,MAAUj0B,GAAJ1B,EAAE0B,GAAMg0B,WAAW11B,EAAEc,EAAEyD,GAAG,IAAIkrF,IAAI,IAAIC,EAAE,KAAK,CAACvuE,MAAMsuE,EAAE5qE,IAAI6qE,QAAQnrF,EAAE,KAAKA,EAAEA,GAAG,CAAC4c,MAAM,EAAE0D,IAAI,QAAQtgB,EAAE,KAAK,MAAM,CAAC4mG,YAAY7mG,EAAE8mG,eAAe7mG,GAgIqDq9G,GAAKzX,IAAG,EAAOpY,GAAE7xF,EAAE,OAAO6xF,IAAG,CAACvtF,GAAE,EAAG,IAAIC,OAAE,EAAO,IAAI68G,KAAK,MAAM5xB,GAAGlrF,GAAE,EAAGC,EAAEirF,EAAElrF,IAAI,OAAOutF,IAAE1kE,EAAE,OAAc6xF,GAAGntB,GAAEttF,GAAG,OAAOstF,KAAIA,GAAEA,GAAEmiB,aAAa,IAAIniB,GAAE7xF,EAAE,OAAO6xF,IAAG,CAACvtF,GAAE,EACpfC,OAAE,EAAO,IAAI48G,KAAK,MAAM3xB,GAAGlrF,GAAE,EAAGC,EAAEirF,EAAElrF,IAAI,OAAOutF,IAAE1kE,EAAE,OAAc6xF,GAAGntB,GAAEttF,GAAG,OAAOstF,KAAIA,GAAEA,GAAEmiB,aAAwD,IAA3ChJ,GAAGsG,IAAIA,GAAG,KAAKrH,KAAKoH,GAAGA,GAAG,KAAKjtG,EAAEu/D,QAAQt/D,EAAMwtF,GAAE7xF,EAAE,OAAO6xF,IAAG,CAACvtF,GAAE,EAAGC,OAAE,EAAO,IAAI+8G,GAAGl9G,EAAErE,GAAG,MAAMyvF,GAAGlrF,GAAE,EAAGC,EAAEirF,EAAElrF,IAAI,OAAOutF,IAAE1kE,EAAE,OAAc6xF,GAAGntB,GAAEttF,GAAG,OAAOstF,KAAIA,GAAEA,GAAEmiB,aAAa,GAAG,OAAOh0G,GAAG,OAAO+gH,GAAG,CAAC,IAAIxxB,EAF5S,SAAYnrF,EAAEC,GAAG48G,GAAGD,GAAGD,GAAG,KAAK,IAAIhhH,EAAEgyF,GAAEA,IAAE,EAAG,EAAE,CAAC,GAAe,IAAZ1tF,EAAEmgG,UAAc,CAAC,IAAIxkG,GAAE,EAAGsE,OAAE,EAAO,IAAI,IAAIC,EAAEF,EAAE46G,GAAG1G,GAAGP,GAAGzzG,GAAG06G,GAAGjH,GAAGM,GAAG/zG,GAAG,MAAMgrF,GAAGvvF,GAAE,EAAGsE,EAAEirF,EAAEvvF,GAAGg/G,GAAG36G,EAAEC,GAAGD,EAAEA,EAAE2vG,iBAAiB,OAAO3vG,GAAG0tF,GAAEhyF,EAAqB,KAAnBA,EAAEqE,EAAE8vG,iBAAsB0L,GAAGx7G,EAAErE,GAAGiyF,IAAGD,IAAG4vB,GAAG,YAAW,IAEkEzgH,KAAK,KAAKkD,EAAEpE,GAAGghH,GAAGxgH,EAAEohH,yBAAyBphH,EAAEqhH,wBAAwB,WAAW,OAAOjQ,GAAGriB,KAAK0xB,GAAG1xB,EAAEmxB,GAAGI,IAAG,EAAG,mBAAoB1N,IAAIA,GAAG/uG,EAAEkyF,WAAWx2F,EAAEsE,EAAE6vG,eACpc,KAD2e7vG,GAAxBA,EAAEA,EAAE4vG,qBAC7dl0G,EAAEsE,EAAEtE,KAAUqgH,GAAG,MAuB8Y,SAAYh8G,EAAEC,GAAGD,EAAE8vG,eAAe7vG,EAAED,EAAE09G,aAAa,KAvB3bC,CAAG39G,EAAEC,GAC9B,SAAS29G,GAAG59G,GAAG,OAAO,CAAC,IAAIC,EAAED,EAAE+/F,UAAUpkG,EAAEqE,EAAE8yF,OAAOl3F,EAAEoE,EAAEugG,QAAQ,GAAG,IAAiB,KAAZvgG,EAAEogG,WAAgB,CAAChT,GAAEptF,EAAEA,EAAE,CAAC,IAAIE,EAAED,EAAUE,EAAE+sF,GAAM/B,GAAhBlrF,EAAED,GAAkBqvG,aAAa,OAAOpvG,EAAEwyF,KAAK,KAAK,EAAQ,KAAK,GAAG,MAAM,KAAK,GAAG,KAAK,EAAE,MAAM,KAAK,EAAEnG,GAAErsF,EAAEuG,OAAOgoG,KAAM,MAAM,KAAK,EAAEiF,KAAMhF,MAAMtjB,EAAElrF,EAAEkyF,WAAY+lB,iBAAiB/sB,EAAErK,QAAQqK,EAAE+sB,eAAe/sB,EAAE+sB,eAAe,MAAS,OAAOh4G,GAAG,OAAOA,EAAEq2D,QAAM0gD,GAAGh3G,GAAGA,EAAEmgG,YAAY,GAAEia,GAAGp6G,GAAG,MAAM,KAAK,EAAE0zG,GAAG1zG,GAAG,IAAImrF,EAAEmoB,GAAGD,GAAG/zC,SAAkB,GAATp/D,EAAEF,EAAEuG,KAAQ,OAAOtG,GAAG,MAAMD,EAAEkyF,UAAUmoB,GAAGp6G,EAAED,EAAEE,EAAEgrF,EAAEC,GAAGlrF,EAAE+P,MAAMhQ,EAAEgQ,MAAMhQ,EAAEmgG,WACrf,UAAU,GAAGjV,EAAE,CAAC,IAAI5vF,EAAEg4G,GAAG1mB,GAAEttB,SAAS,GAAG03C,GAAGh3G,GAAG,CAAKC,GAAJirF,EAAElrF,GAAMkyF,UAAU,IAAIlwE,EAAEkpE,EAAE3kF,KAAK9K,EAAEyvF,EAAEskB,cAAcryG,EAAEguF,EAA+B,OAA7BlrF,EAAEoyF,GAAInH,EAAEjrF,EAAEqyF,GAAI72F,EAAEyE,OAAE,EAAOirF,EAAEnpE,GAAY,IAAK,SAAS,IAAK,SAAS2pE,GAAE,OAAO1rF,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI+hB,EAAE,EAAEA,EAAEoyE,GAAG12F,OAAOskB,IAAI2pE,GAAEyI,GAAGpyE,GAAG/hB,GAAG,MAAM,IAAK,SAAS0rF,GAAE,QAAQ1rF,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO0rF,GAAE,QAAQ1rF,GAAG0rF,GAAE,OAAO1rF,GAAG,MAAM,IAAK,OAAO0rF,GAAE,QAAQ1rF,GAAG0rF,GAAE,SAAS1rF,GAAG,MAAM,IAAK,UAAU0rF,GAAE,SAAS1rF,GAAG,MAAM,IAAK,QAAQ87F,GAAG97F,EAAExE,GAAGkwF,GAAE,UAAU1rF,GAAG6sG,GAAG3vG,EAAE,YAAY,MAAM,IAAK,SAAS8C,EAAE47F,cAC1f,CAACsf,cAAc1/G,EAAEof,UAAU8wE,GAAE,UAAU1rF,GAAG6sG,GAAG3vG,EAAE,YAAY,MAAM,IAAK,WAAWorG,GAAGtoG,EAAExE,GAAGkwF,GAAE,UAAU1rF,GAAG6sG,GAAG3vG,EAAE,YAA2B,IAAI+C,KAAnB2sG,GAAG1hB,EAAE1vF,GAAGumB,EAAE,KAAcvmB,EAAEA,EAAEyB,eAAegD,KAAK5E,EAAEG,EAAEyE,GAAG,aAAaA,EAAE,iBAAkB5E,EAAE2E,EAAEkuE,cAAc7yE,IAAI0mB,EAAE,CAAC,WAAW1mB,IAAI,iBAAkBA,GAAG2E,EAAEkuE,cAAc,GAAG7yE,IAAI0mB,EAAE,CAAC,WAAW,GAAG1mB,IAAIw1F,EAAG5zF,eAAegD,IAAI,MAAM5E,GAAGwxG,GAAG3vG,EAAE+C,IAAI,OAAOirF,GAAG,IAAK,QAAQ2N,GAAG74F,GAAGm8F,GAAGn8F,EAAExE,GAAE,GAAI,MAAM,IAAK,WAAWq9F,GAAG74F,GAAGwoG,GAAGxoG,GAAK,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoBxE,EAAE+nB,UACnfvjB,EAAE2K,QAAQmiG,IAAI7sG,EAAE8hB,EAAEkpE,EAAEqkB,YAAYrvG,GAAEgrF,EAAE,OAAOhrF,IAAWg6G,GAAGl6G,OAAO,CAACvE,EAAEuE,EAAE7C,EAAE+C,EAAED,EAAEirF,EAAElpE,EAAE,IAAImpE,EAAEt8E,SAASs8E,EAAEA,EAAEvpF,cAActG,IAAIytG,GAAGtjC,OAAOnqE,EAAE4tG,GAAG/rG,IAAI7B,IAAIytG,GAAGtjC,KAAK,WAAWtoE,IAAG8C,EAAE+hB,EAAErhB,cAAc,QAASm9B,UAAU,qBAAuB9b,EAAE/hB,EAAE2C,YAAY3C,EAAEyuB,aAAa,iBAAkBzuB,EAAE+L,GAAGgW,EAAEA,EAAErhB,cAAcxD,EAAE,CAAC6O,GAAG/L,EAAE+L,MAAMgW,EAAEA,EAAErhB,cAAcxD,GAAG,WAAWA,IAAIA,EAAE6kB,EAAE/hB,EAAE4a,SAAS1d,EAAE0d,UAAS,EAAG5a,EAAE8B,OAAO5E,EAAE4E,KAAK9B,EAAE8B,QAAQigB,EAAEA,EAAEg+C,gBAAgB1kE,EAAE6B,IAAG8C,EAAE+hB,GAAIqwE,GAAI52F,EAAEwE,EAAEqyF,GAAIpH,EAAEivB,GAAGl6G,EAAED,GAAE,GAAG,GAAI7C,EAAE8C,EAAU,IAAI1D,EAAE4uF,EAAEH,EAAEf,GAAlBjoE,EAAE9hB,EAAEzE,EAAEyvF,GAAoB,OAAOlpE,GAAG,IAAK,SAAS,IAAK,SAAS2pE,GAAE,OAChhBxuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI0vF,EAAE,EAAEA,EAAEiJ,GAAG12F,OAAOytF,IAAIQ,GAAEyI,GAAGjJ,GAAGhuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,SAASkwF,GAAE,QAAQxuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOkwF,GAAE,QAAQxuF,GAAGwuF,GAAE,OAAOxuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,OAAOkwF,GAAE,QAAQxuF,GAAGwuF,GAAE,SAASxuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,UAAUkwF,GAAE,SAASxuF,GAAGguF,EAAE1vF,EAAE,MAAM,IAAK,QAAQsgG,GAAG5+F,EAAE1B,GAAG0vF,EAAEuQ,GAAGv+F,EAAE1B,GAAGkwF,GAAE,UAAUxuF,GAAG2vG,GAAGvwG,EAAE,YAAY,MAAM,IAAK,SAAS4uF,EAAE8c,GAAG9qG,EAAE1B,GAAG,MAAM,IAAK,SAAS0B,EAAE0+F,cAAc,CAACsf,cAAc1/G,EAAEof,UAAUswE,EAAEruF,EAAE,GAAGrB,EAAE,CAACa,WAAM,IAASqvF,GAAE,UAAUxuF,GAAG2vG,GAAGvwG,EAAE,YAAY,MAAM,IAAK,WAAWgsG,GAAGprG,EACtgB1B,GAAG0vF,EAAEkd,GAAGlrG,EAAE1B,GAAGkwF,GAAE,UAAUxuF,GAAG2vG,GAAGvwG,EAAE,YAAY,MAAM,QAAQ4uF,EAAE1vF,EAAEoxG,GAAG7qF,EAAEmpE,GAAG7vF,OAAE,EAAO,IAAIsvF,EAAE5oE,EAAEgrE,EAAE7vF,EAAEwtF,EAAEQ,EAAE,IAAI7vF,KAAKqvF,EAAE,GAAGA,EAAEztF,eAAe5B,GAAG,CAAC,IAAIovF,EAAEC,EAAErvF,GAAG,UAAUA,EAAEuwG,GAAG7e,EAAEtC,GAAG,4BAA4BpvF,EAAuB,OAApBovF,EAAEA,EAAEA,EAAE0iB,YAAO,IAAgB/D,GAAGrc,EAAEtC,GAAI,aAAapvF,EAAE,iBAAkBovF,GAAG,aAAaE,GAAG,KAAKF,IAAI+e,GAAGzc,EAAEtC,GAAG,iBAAkBA,GAAG+e,GAAGzc,EAAE,GAAGtC,GAAG,mCAAmCpvF,GAAG,6BAA6BA,GAAG,cAAcA,IAAIw1F,EAAG5zF,eAAe5B,GAAG,MAAMovF,GAAGoiB,GAAGvwG,EAAEjB,GAAG,MAAMovF,GAAGyQ,GAAGnO,EAAE1xF,EAAEovF,EAAEM,IAAI,OAAOhpE,GAAG,IAAK,QAAQ82E,GAAG37F,GAC1fi/F,GAAGj/F,EAAE1B,GAAE,GAAI,MAAM,IAAK,WAAWq9F,GAAG37F,GAAGsrG,GAAGtrG,GAAK,MAAM,IAAK,SAAS,MAAM1B,EAAEa,OAAOa,EAAEs8B,aAAa,QAAQ,GAAGgiE,GAAGhgG,EAAEa,QAAQ,MAAM,IAAK,UAAS6uF,EAAEhuF,GAAI0d,WAAWpf,EAAEof,SAAmB,OAAV1d,EAAE1B,EAAEa,OAAc6rG,GAAGhd,IAAI1vF,EAAEof,SAAS1d,GAAE,GAAI,MAAM1B,EAAEmgG,cAAcuM,GAAGhd,IAAI1vF,EAAEof,SAASpf,EAAEmgG,cAAa,GAAI,MAAM,QAAQ,mBAAoBzQ,EAAE3nE,UAAUrmB,EAAEyN,QAAQmiG,KAAK7hB,EAAEgiB,GAAGhtG,EAAEgrF,KAAKgvB,GAAGl6G,GAAGA,EAAEkyF,UAAUjyF,EAAE,OAAOD,EAAEgQ,MAAMhQ,EAAEmgG,WAAW,UAAU,OAAOngG,EAAEkyF,WAAUppE,EAAE,OAAc,MAAM,KAAK,EAAE7oB,GAAG,MAAMD,EAAEkyF,UAAUooB,GAAGr6G,EAAED,EAAEC,EAAEuvG,cAActkB,IAAI,iBAC1eA,IAAI,OAAOlrF,EAAEkyF,WAAUppE,EAAE,QAAe7oB,EAAEqzG,GAAGD,GAAG/zC,SAASg0C,GAAG1mB,GAAEttB,SAAS03C,GAAGh3G,IAAQE,GAAJgrF,EAAElrF,GAAMkyF,UAAUjyF,EAAEirF,EAAEskB,cAActvG,EAAEmyF,GAAInH,GAAGA,EAAEhrF,EAAEypG,YAAY1pG,IAAIi6G,GAAGl6G,KAAKE,EAAEF,GAAEkrF,GAAG,IAAIjrF,EAAE4O,SAAS5O,EAAEA,EAAE2B,eAAeg8G,eAAe1yB,IAAKmH,GAAIryF,EAAEE,EAAEgyF,UAAUhH,IAAI,MAAM,KAAK,GAAG,MAAM,KAAK,GAAqB,GAAlBA,EAAElrF,EAAEsvG,cAAiB,IAAiB,GAAZtvG,EAAEmgG,WAAc,CAACngG,EAAE6vG,eAAe3vG,EAAEitF,GAAEntF,EAAE,MAAMD,EAAEmrF,EAAE,OAAOA,EAAEhrF,EAAE,OAAOD,GAAG,OAAOA,EAAEqvG,cAAc,OAAOrvG,IAAIirF,GAAGhrF,IAAsB,QAAlBD,EAAEA,EAAEq2D,MAAMgqC,WAAmC,QAAhBnV,EAAEnrF,EAAE0vG,cAAsB1vG,EAAE0vG,YAAYzvG,EAAEA,EAAE0vG,WAAWxkB,IAAInrF,EAAE0vG,YACjf1vG,EAAEyvG,WAAWxvG,EAAEA,EAAE0vG,WAAW,MAAM1vG,EAAEkgG,UAAU,KAAOjV,GAAGhrF,KAAEF,EAAEmgG,WAAW,GAAE,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAG,MAAM,KAAK,EAAEqT,KAAM4G,GAAGp6G,GAAG,MAAM,KAAK,GAAG+4G,GAAG/4G,GAAG,MAAM,KAAK,EAAQ,KAAK,GAAG,MAAM,KAAK,GAAGqsF,GAAErsF,EAAEuG,OAAOgoG,KAAM,MAAM,KAAK,GAAG,MAAM,QAAQzlF,EAAE,OAAOqkE,GAAE,KAAS,GAAJntF,EAAED,EAAK,IAAIktF,IAAG,IAAIjtF,EAAE4vG,oBAAoB,CAAK,IAAJ1kB,EAAE,EAAMhrF,EAAEF,EAAEs2D,MAAM,OAAOp2D,IAAGD,EAAEC,EAAE2vG,gBAAyC3kB,IAAIA,EAAEjrF,IAAhCkrF,EAAEjrF,EAAE0vG,qBAAiC1kB,IAAIA,EAAEC,GAAGjrF,EAAEA,EAAEogG,QAAQtgG,EAAE4vG,oBAAoB1kB,EAAE,GAAG,OAAOiC,GAAE,OAAOA,GAAE,OAAOzxF,GAAG,IAAiB,KAAZA,EAAEykG,aAAkB,OAAOzkG,EAAEg0G,cAC9eh0G,EAAEg0G,YAAY3vG,EAAE2vG,aAAa,OAAO3vG,EAAE0vG,aAAa,OAAO/zG,EAAE+zG,aAAa/zG,EAAE+zG,WAAWE,WAAW5vG,EAAE2vG,aAAah0G,EAAE+zG,WAAW1vG,EAAE0vG,YAAY,EAAE1vG,EAAEogG,YAAY,OAAOzkG,EAAE+zG,WAAW/zG,EAAE+zG,WAAWE,WAAW5vG,EAAErE,EAAEg0G,YAAY3vG,EAAErE,EAAE+zG,WAAW1vG,QAAQ,CAAW,GAAG,QAAbA,EAAEk8G,GAAGl8G,IAAiB,OAAOA,EAAEogG,WAAW,KAAKpgG,EAAE,OAAOrE,IAAIA,EAAEg0G,YAAYh0G,EAAE+zG,WAAW,KAAK/zG,EAAEykG,WAAW,MAAM,GAAG,OAAOxkG,EAAE,OAAOA,EAAE,GAAG,OAAOD,EAAW,MAATqE,EAAErE,EAAa,OAAO,KACtZ,SAASmiH,GAAG99G,GAAG,IAAIC,EAAEo4G,GAAGr4G,EAAE+/F,UAAU//F,EAAEktF,IAAsE,OAAnEltF,EAAEyvG,cAAczvG,EAAEqvG,aAAa,OAAOpvG,IAAIA,EAAE29G,GAAG59G,IAAIo8G,GAAG78C,QAAQ,KAAYt/D,EACnH,SAAS89G,GAAG/9G,EAAEC,GAAGq8G,IAAGvzF,EAAE,OAAc6oF,KAAK0K,IAAG,EAAG,IAAI3gH,EAAEwgH,GAAG58C,QAAQ48C,GAAG58C,QAAQ61C,GAAG,IAAIx5G,EAAEoE,EAAEkxG,2BAA8Bt1G,IAAIsxF,IAAGltF,IAAIu8G,IAAI,OAAOnvB,KAAE0vB,KAAU5vB,GAAEtxF,EAAEwxF,GAAE4iB,IAAXuM,GAAGv8G,GAAcu/D,QAAQ,MAAQv/D,EAAEo9G,4BAA4B,GAAW,IAAT,IAAIl9G,GAAE,IAAK,CAAC,IAAI,GAAGD,EAAE,KAAK,OAAOmtF,KAAI4wB,MAAM5wB,GAAE0wB,GAAG1wB,SAAQ,KAAK,OAAOA,IAAGA,GAAE0wB,GAAG1wB,IAAG,MAAMxC,GAAG,GAAGmuB,GAAGD,GAAGD,GAAG,KAAKxD,KAAK,OAAOjoB,GAAEltF,GAAE,EAAG27G,GAAGjxB,OAAO,CAAC,OAAOwC,IAAErkE,EAAE,OAAc,IAAI5oB,EAAEitF,GAAEjC,EAAEhrF,EAAE2yF,OAAO,GAAG,OAAO3H,EAAiB,CAACnrF,EAAE,CAAC,IAAIorF,EAAEprF,EAAEzE,EAAE4vF,EAAElpE,EAAE9hB,EAAEzE,EAAEkvF,EAAwD,GAAtDO,EAAE+B,GAAEjrE,EAAEm+E,WAAW,KAAKn+E,EAAE0tF,YAAY1tF,EAAEytF,WAAW,KAAQ,OACjfh0G,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAE+rC,KAAK,CAAC,IAAIrqC,EAAE1B,EAAEA,EAAEH,EAAE,IAAIiB,GAAG,EAAEyuF,GAAG,EAAE,EAAE,CAAC,GAAG,KAAKvvF,EAAE+2F,IAAI,CAAC,IAAI5H,EAAEnvF,EAAEqkG,UAAU,GAAG,OAAOlV,GAAsB,QAAlBA,EAAEA,EAAE0kB,eAAwB,CAACtkB,EAAE,IAAI,WAAWJ,EAAEutB,YAAY,MAAsC,iBAAhCvtB,EAAEnvF,EAAE2zG,aAAa4O,eAAsC,GAAGpzB,EAAEruF,EAAE,IAAW,IAAIA,GAAGquF,EAAEruF,KAAEA,EAAEquF,IAAEnvF,EAAEA,EAAEo3F,aAAa,OAAOp3F,GAAGA,EAAEH,EAAE,EAAE,CAA+E,IAA3EsvF,EAAE,KAAKnvF,EAAE+2F,OAAI5H,OAAE,IAASnvF,EAAE+zG,cAAczuB,UAAY,OAAOtlF,EAAE6zG,eAAiB1kB,EAAE,CAAwE,GAAvD,QAAhBtvF,EAAEG,EAAE8zG,eAAsBj0G,EAAE,IAAIuyG,KAAMx7F,IAAIlV,GAAG1B,EAAE8zG,YAAYj0G,GAAGA,EAAE+W,IAAIlV,GAAM,IAAY,EAAP1B,EAAEe,MAAQ,CAACf,EAAE0kG,WAC5e,GAAGn+E,EAAEm+E,YAAY,KAAK,IAAIn+E,EAAEwwE,MAAM,OAAOxwE,EAAE89E,UAAU99E,EAAEwwE,IAAI,KAAItH,EAAEsmB,GAAG,aAAchf,IAAIuf,GAAGH,GAAG5vF,EAAEkpE,KAAKlpE,EAAE6tF,eAAe,WAAW,MAAM9vG,EAAMzE,EAAE4vF,EAAE,IAAI8B,GAAZhrE,EAAEmpE,GAAc8yB,UAAU,OAAOjxB,GAAGA,EAAEhrE,EAAEi8F,UAAU,IAAIxC,GAAG7wB,EAAE,IAAIijB,IAAI7gB,EAAE/S,IAAI98E,EAAEytF,SAAgB,KAAXA,EAAEoC,EAAE9wF,IAAIiB,MAAgBytF,EAAE,IAAIijB,IAAI7gB,EAAE/S,IAAI98E,EAAEytF,IAAKA,EAAE4wB,IAAIlgH,KAAKsvF,EAAEv4E,IAAI/W,GAAG0mB,EAAEk8F,GAAGrhH,KAAK,KAAKmlB,EAAE7kB,EAAE7B,GAAG6B,EAAEqqC,KAAKxlB,EAAEA,KAAK,IAAIzlB,EAAE4uF,EAAE,aAAa,IAAIH,IAAIA,EAAE,IAAI,WAAWgmB,GAAG7lB,EAAED,IAAI,KAAKC,EAAEH,EAAEzuF,GAAG,GAAG4uF,GAAGoxB,GAAGpxB,IAAIoxB,GAAGpxB,GAAG1vF,EAAE0kG,WAAW,KAAK1kG,EAAEo0G,eAAe3kB,EAAE,MAAMnrF,EAAEtE,EAAEA,EAAEo3F,aAAa,OAAOp3F,GAAGA,EAAE0E,OAAOg6F,GAAGn4E,EAAEzb,OAAO,qBACjf,wLAAwL6zF,GAAGp4E,IAAIw6F,IAAG,EAAG/gH,EAAEu+G,GAAGv+G,EAAEumB,GAAGmpE,EAAE7vF,EAAE,EAAE,CAAC,OAAO6vF,EAAEqH,KAAK,KAAK,EAAErH,EAAEgV,WAAW,KAAKhV,EAAE0kB,eAAe3kB,EAAcyuB,GAAGxuB,EAAfD,EAAEywB,GAAGxwB,EAAE1vF,EAAEyvF,IAAW,MAAMnrF,EAAE,KAAK,EAAE,GAAGxD,EAAEd,EAAEuvF,EAAEG,EAAE5kF,KAAKyb,EAAEmpE,EAAE+G,UAAU,IAAiB,GAAZ/G,EAAEgV,aAAgB,mBAAoBnV,EAAE+sB,0BAA0B,OAAO/1F,GAAG,mBAAoBA,EAAE85F,oBAAoB,OAAOC,KAAKA,GAAGP,IAAIx5F,KAAK,CAACmpE,EAAEgV,WAAW,KAClfhV,EAAE0kB,eAAe3kB,EAAcyuB,GAAGxuB,EAAfD,EAAE2wB,GAAG1wB,EAAE5uF,EAAE2uF,IAAW,MAAMnrF,GAAGorF,EAAEA,EAAE0H,aAAa,OAAO1H,GAAGgC,GAAEwwB,GAAGz9G,GAAG,SAJ8TD,GAAE,EAAG27G,GAAGjxB,IAI3T,MAAqD,GAAtC0xB,IAAG,EAAGH,GAAG58C,QAAQ5jE,EAAEo9G,GAAGD,GAAGD,GAAG,KAAKxD,KAAQn1G,EAAEq8G,GAAG,KAAKv8G,EAAE09G,aAAa,UAAU,GAAG,OAAOtwB,GAAEptF,EAAE09G,aAAa,SAAS,CAAwD,GAAjC,QAAtB/hH,EAAEqE,EAAEu/D,QAAQwgC,YAAmBh3E,EAAE,OAAcwzF,GAAG,KAAQE,GAAG,CAAoE,GAAnEv8G,EAAEF,EAAE2wG,kBAAkBxwG,EAAEH,EAAEgxG,oBAAoB7lB,EAAEnrF,EAAE8wG,iBAAoB,IAAI5wG,GAAGA,EAAEtE,GAAG,IAAIuE,GAAGA,EAAEvE,GAAG,IAAIuvF,GAAGA,EAAEvvF,EAAyC,OAAtCi1G,GAAG7wG,EAAEpE,QAAGwiH,GAAGp+G,EAAErE,EAAEC,EAAEoE,EAAE8vG,gBAAgB,GAAU,IAAI9vG,EAAEywG,UAAUxwG,EACtZ,OADyZD,EAAEywG,UAAS,EAAG70G,EAAEoE,EAAEkxG,2BAA2Bt1G,EACnfqE,EAAED,EAAE8vG,eAAe,gBAAWsO,GAAGp+G,EAAErE,EAAEC,EAAEqE,GAAG,GAAWA,IAAI,IAAIu8G,IAAI3L,GAAG7wG,EAAEpE,IAAGqE,EAAE,IAAI,WAAWgxG,GAAGjxG,EAAEpE,KAAM4gH,KAAKA,GAAGv8G,GAAGA,EAAE,IAAI,WAAWuxG,MAAMvxG,EAAEu8G,GAAGv8G,EAAEm+G,GAAGp+G,EAAErE,EAAEC,EAAEoE,EAAE8vG,eAAe,EAAE7vG,EAAE,EAAEA,KAAKD,EAAEo9G,4BAA4BxhH,EAAEoE,EAAE09G,aAAa/hH,IAClO,SAASi/G,GAAG56G,EAAEC,GAAG,IAAI,IAAItE,EAAEqE,EAAE8yF,OAAO,OAAOn3F,GAAG,CAAC,OAAOA,EAAE82F,KAAK,KAAK,EAAE,IAAI72F,EAAED,EAAEw2F,UAAU,GAAG,mBAAoBx2F,EAAE6K,KAAKwxG,0BAA0B,mBAAoBp8G,EAAEmgH,oBAAoB,OAAOC,KAAKA,GAAGP,IAAI7/G,IAA6D,OAAzBi2G,GAAGl2G,EAAxBqE,EAAE87G,GAAGngH,EAAfqE,EAAEi6G,GAAGh6G,EAAED,GAAY,kBAAoB8xG,GAAGn2G,EAAE,YAAmB,MAAM,KAAK,EAA0D,OAAzBk2G,GAAGl2G,EAAxBqE,EAAE47G,GAAGjgH,EAAfqE,EAAEi6G,GAAGh6G,EAAED,GAAY,kBAAoB8xG,GAAGn2G,EAAE,YAAmBA,EAAEA,EAAEm3F,OAAO,IAAI9yF,EAAEyyF,MAAqCof,GAAG7xG,EAAxBrE,EAAEigH,GAAG57G,EAAfrE,EAAEs+G,GAAGh6G,EAAED,GAAY,aAAoB8xG,GAAG9xG,EAAE,aAC9Z,SAAS0xG,GAAG1xG,EAAEC,GAAG,IAAItE,EAAES,EAAEiiH,mCAAmCziH,OAAE,EAAO,GAAG,IAAY,EAAPqE,EAAExD,MAAQb,EAAE,gBAAgB,GAAG0gH,KAAKI,GAAG9gH,EAAEsxF,OAAM,CAAC,OAAOvxF,GAAG,KAAKS,EAAEkiH,2BAA2B1iH,EAAE,WAAW,MAAM,KAAKQ,EAAEmiH,8BAA8B3iH,EAAE,WAAW,IAA6B,IAAvB,WAAWoE,EAAE,IAAI,GAAG,IAAM,MAAM,KAAK5D,EAAEqhH,wBAAwB7hH,EAAE,WAAW,IAA8B,IAAxB,WAAWoE,EAAE,KAAK,GAAG,IAAM,MAAM,KAAK5D,EAAEoiH,qBAAqB,KAAKpiH,EAAEqiH,sBAAsB7iH,EAAE,EAAE,MAAM,QAAQmtB,EAAE,OAAO,OAAOwzF,IAAI3gH,IAAIsxF,MAAKtxF,EACxb,OAD0bD,IAAIS,EAAEmiH,gCACtd,IAAIG,IAAI9iH,EAAE8iH,MAAMA,GAAG9iH,GAAUA,EAAE,SAASuiH,GAAGn+G,EAAEC,EAAEtE,GAAG,IAAIC,EAAEoE,EAAEk+G,UAAU,OAAOtiH,GAAGA,EAAE46B,OAAOv2B,GAAM,OAAOs8G,IAAIrvB,KAAIvxF,EAAE4gH,GAAG,MAAat8G,EAAED,EAAE+wG,sBAAsBn1G,EAAEoE,EAAEgxG,oBAAoB,IAAI/wG,GAAGtE,GAAGsE,GAAGtE,GAAGC,IAAGoE,EAAEywG,UAAS,GAA2B,KAAxBxwG,EAAED,EAAE8wG,mBAA2B7wG,EAAEtE,KAAEqE,EAAE8wG,iBAAiBn1G,GAAEi1G,GAAGj1G,EAAEqE,GAAsB,KAAnBrE,EAAEqE,EAAE8vG,iBAAsB0L,GAAGx7G,EAAErE,KACjT,SAAS4/G,GAAGv7G,EAAEC,GAAGD,EAAE8vG,eAAe7vG,IAAID,EAAE8vG,eAAe7vG,GAAG,IAAItE,EAAEqE,EAAE+/F,UAAU,OAAOpkG,GAAGA,EAAEm0G,eAAe7vG,IAAItE,EAAEm0G,eAAe7vG,GAAG,IAAIrE,EAAEoE,EAAE8yF,OAAO5yF,EAAE,KAAK,GAAG,OAAOtE,GAAG,IAAIoE,EAAEyyF,IAAIvyF,EAAEF,EAAEmyF,eAAe,KAAK,OAAOv2F,GAAG,CAA+H,GAA9HD,EAAEC,EAAEmkG,UAAUnkG,EAAEi0G,oBAAoB5vG,IAAIrE,EAAEi0G,oBAAoB5vG,GAAG,OAAOtE,GAAGA,EAAEk0G,oBAAoB5vG,IAAItE,EAAEk0G,oBAAoB5vG,GAAM,OAAOrE,EAAEk3F,QAAQ,IAAIl3F,EAAE62F,IAAI,CAACvyF,EAAEtE,EAAEu2F,UAAU,MAAMv2F,EAAEA,EAAEk3F,OAAO,OAAO5yF,EAClZ,SAAS4xG,GAAG9xG,EAAEC,GAAa,QAAVD,EAAEu7G,GAAGv7G,EAAEC,OAAeq8G,IAAI,IAAIpvB,IAAGjtF,EAAEitF,IAAG4vB,KAAKtM,GAAGxwG,EAAEC,GAAGq8G,KAAKI,IAAIH,KAAKv8G,GAAGw7G,GAAGx7G,EAAEA,EAAE8vG,gBAAgB6O,GAAGC,KAAKD,GAAG,EAAE51F,EAAE,SAAS,SAAS81F,GAAG7+G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,OAAO9D,EAAEohH,yBAAyBphH,EAAEkiH,2BAA2B,WAAW,OAAOt+G,EAAEC,EAAEtE,EAAEC,EAAEsE,KAAK,IAAI4+G,GAAG,KAAK9uB,GAAE,KAAK+uB,GAAG,EAAEC,QAAG,EAAOrxB,IAAE,EAAGsxB,GAAG,KAAKhvB,GAAE,EAAEyuB,GAAG,EAAEQ,IAAG,EAAGC,GAAG,KAAKvxB,IAAE,EAAGwxB,IAAG,EAAGC,GAAG,KAAKC,GAAGljH,EAAEmjH,eAAeC,GAAG,YAAYF,GAAG,GAAG,GAAGG,GAAGD,GAAGZ,GAAG,GAAGD,GAAG,EAAEe,GAAG,KAAK,SAASC,KAAKH,GAAG,aAAapjH,EAAEmjH,eAAeD,IAAI,GAAG,GAC7c,SAASM,GAAG5/G,EAAEC,GAAG,GAAG,IAAI8+G,GAAG,CAAC,GAAG9+G,EAAE8+G,GAAG,OAAO,OAAOC,IAAI5iH,EAAEuxG,wBAAwBqR,IAAID,GAAG9+G,EAAED,EAAE5D,EAAEmjH,eAAeD,GAAGN,GAAG5iH,EAAEqxG,0BAA0BoS,GAAG,CAACC,QAAQ,IAAI,WAAW7/G,GAAGD,IAAI,SAASo+G,GAAGp+G,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAGF,EAAE8vG,eAAel0G,EAAE,IAAIsE,GAAG89G,KAAK,EAAE99G,IAAIF,EAAE+/G,cAAczS,GAA8E,SAAYttG,EAAEC,EAAEtE,GAAGqE,EAAEo9G,4BAA4BzhH,EAAEqE,EAAE09G,aAAaz9G,EAAE0/G,KAAKF,GAAGD,GAAGQ,GAAGhgH,EAAErE,IAA5JmB,KAAK,KAAKkD,EAAEC,EAAEtE,GAAGuE,KAAKF,EAAEo9G,4BAA4BzhH,EAAEqE,EAAE09G,aAAaz9G,GACvU,SAASuxG,KAAK,OAAG7jB,GAAS8xB,IAAGQ,KAAQ,IAAIhwB,IAAG,IAAIA,KAAE0vB,KAAKF,GAAGD,IAAUC,IAAG,SAASjE,GAAGx7G,EAAEC,GAAG,OAAOD,EAAEkgH,mBAAmBlgH,EAAE8vG,eAAe7vG,EAAE,OAAO+vF,IAAG8uB,GAAG9uB,GAAEhwF,EAAEA,EAAEkgH,kBAAkBlgH,IAAIgwF,GAAEA,GAAEkwB,kBAAkBlgH,GAAIkgH,kBAAkBpB,IAAK7+G,EAAED,EAAE8vG,iBAAiB9vG,EAAE8vG,eAAe7vG,GAAG0tF,KAAIC,GAAEwxB,KAAKH,GAAGj/G,EAAEiwF,GAAE,WAAWkwB,GAAGngH,EAAE,YAAW,IAAK,aAAaC,EAAEs9G,GAAG,YAAW,GAAIqC,GAAG5/G,EAAEC,IAClW,SAASggH,KAAK,IAAIjgH,EAAE,EAAEC,EAAE,KAAK,GAAG,OAAO+vF,GAAE,IAAI,IAAIr0F,EAAEq0F,GAAEp0F,EAAEkjH,GAAG,OAAOljH,GAAG,CAAC,IAAIsE,EAAEtE,EAAEk0G,eAAe,GAAG,IAAI5vG,EAAE,CAAoC,IAAnC,OAAOvE,GAAG,OAAOq0F,KAAEjnE,EAAE,OAAiBntB,IAAIA,EAAEskH,kBAAkB,CAACpB,GAAG9uB,GAAEp0F,EAAEskH,kBAAkB,KAAK,MAAW,GAAGtkH,IAAIkjH,GAAGA,GAAG5+G,EAAEtE,EAAEskH,kBAAkBlwB,GAAEkwB,kBAAkBhgH,EAAEtE,EAAEskH,kBAAkB,SAAU,IAAGtkH,IAAIo0F,GAAE,EAACA,GAAEr0F,GAAIukH,kBAAkBpB,GAAGljH,EAAEskH,kBAAkB,KAAK,MAAWvkH,EAAEukH,kBAAkBtkH,EAAEskH,kBAAkBtkH,EAAEskH,kBAAkB,KAAKtkH,EAAED,EAAEukH,sBAAsB,CAAgB,GAAfhgH,EAAEF,IAAIA,EAAEE,EAAED,EAAErE,GAAMA,IAAIo0F,GAAE,MAAM,GAAG,aAC3ehwF,EAAE,MAAMrE,EAAEC,EAAEA,EAAEA,EAAEskH,mBAAmBjB,GAAGh/G,EAAEgwF,GAAEjwF,EAAE,IAAIogH,IAAG,EAAG,SAASpC,KAAK,QAAOoC,MAAMhkH,EAAEikH,yBAAuBD,IAAG,GAAM,SAASP,KAAK,IAAI,IAAI7B,MAAM,OAAOc,GAAG,CAACa,KAAK,IAAI3/G,EAAE8+G,GAAG,EAAE,CAAC,IAAI7+G,EAAED,EAAE8vG,eAAe,IAAI7vG,GAAGu/G,IAAIv/G,IAAID,EAAEkxG,2BAA2BsO,IAAIx/G,EAAEA,EAAEkgH,wBAAwBlgH,IAAI8+G,IAAIvB,GAAG,GAAE,GAA1J,QAAsK6C,IAAG,GAC1S,SAAS7C,GAAGv9G,EAAEC,GAAQ,GAALggH,KAAQhgH,EAAE,IAAI0/G,KAAKF,GAAGD,GAAG,OAAOP,IAAI,IAAIhvB,IAAGjwF,GAAGiwF,MAAKmwB,IAAIZ,GAAGvvB,KAAIkwB,GAAGlB,GAAGhvB,GAAEuvB,GAAGvvB,IAAGgwB,KAAKN,KAAKF,GAAGD,QAAQ,KAAK,OAAOP,IAAI,IAAIhvB,IAAGjwF,GAAGiwF,IAAGkwB,GAAGlB,GAAGhvB,IAAE,GAAIgwB,KAAoD,GAA/ChgH,IAAI8+G,GAAG,EAAEC,GAAG,MAAM,IAAI/uB,IAAG2vB,GAAGX,GAAGhvB,IAAG0uB,GAAG,EAAEe,GAAG,KAAQ,OAAOL,GAAG,IAAIr/G,EAAEq/G,GAAGA,GAAG,KAAKp/G,EAAE,EAAEA,EAAED,EAAErC,OAAOsC,IAAI,CAAC,IAAItE,EAAEqE,EAAEC,GAAG,IAAItE,EAAE2kH,cAAc,MAAM1kH,GAAGsjH,KAAKA,IAAG,EAAGC,GAAGvjH,IAAI,GAAGsjH,GAAG,MAAMl/G,EAAEm/G,GAAGA,GAAG,KAAKD,IAAG,EAAGl/G,EAAG,SAASggH,GAAGhgH,EAAEC,GAAG0tF,IAAE5kE,EAAE,OAAck2F,GAAGj/G,EAAEiwF,GAAEhwF,EAAEkgH,GAAGngH,EAAEC,GAAE,GAAIs9G,GAAG,YAAW,GACla,SAAS4C,GAAGngH,EAAEC,EAAEtE,GAA0B,GAAvBgyF,IAAE5kE,EAAE,OAAc4kE,IAAE,EAAMhyF,EAAE,CAAC,IAAIC,EAAEoE,EAAE09G,aAAa,OAAO9hH,EAAE2kH,GAAGvgH,EAAEpE,EAAEqE,IAAID,EAAE09G,aAAa,MAAwB,KAAnB9hH,EAAEoE,EAAE+/G,iBAAuB//G,EAAE+/G,eAAe,EAAExS,GAAG3xG,IAAImiH,GAAG/9G,EAAErE,GAAoB,QAAjBC,EAAEoE,EAAE09G,gBAAwBM,KAAKh+G,EAAE09G,aAAa9hH,EAAE2kH,GAAGvgH,EAAEpE,EAAEqE,UAA2B,QAAjBrE,EAAEoE,EAAE09G,cAAsB6C,GAAGvgH,EAAEpE,EAAEqE,IAAID,EAAE09G,aAAa,MAAwB,KAAnB9hH,EAAEoE,EAAE+/G,iBAAuB//G,EAAE+/G,eAAe,EAAExS,GAAG3xG,IAAImiH,GAAG/9G,EAAErE,GAAoB,QAAjBC,EAAEoE,EAAE09G,eAAuB6C,GAAGvgH,EAAEpE,EAAEqE,IAAI0tF,IAAE,EAC3Y,SAAS4yB,GAAGvgH,EAAEC,EAAEtE,GAAG,IAAIC,EAAEoE,EAAEwgH,WAAW,GAAG,OAAO5kH,GAAGA,EAAE6kH,iBAAiB9kH,IAAI,OAAO0jH,GAAGA,GAAG,CAACzjH,GAAGyjH,GAAG1gH,KAAK/C,GAAGA,EAAE8kH,QAA6C,OAApC1gH,EAAE09G,aAAaz9G,OAAED,EAAE8vG,eAAe,GAAS9vG,EAAE09G,aAAa,KAAK19G,IAAI0/G,GAAGf,MAAMe,GAAG1/G,EAAE2+G,GAAG,GAAGviH,EAAEohH,yBAAyBphH,EAAEkiH,2BAA2B,WAAWnB,GAAGn9G,EAAEC,KAAK,SAAS47G,GAAG77G,GAAG,OAAOi/G,IAAGl2F,EAAE,OAAck2F,GAAGnP,eAAe,EAAEoP,KAAKA,IAAG,EAAGC,GAAGn/G,GAAG,SAAS2gH,GAAG3gH,EAAEC,GAAG,IAAItE,EAAEiyF,GAAEA,IAAE,EAAG,IAAI,OAAO5tF,EAAEC,GAAb,SAAyB2tF,GAAEjyF,IAAIgyF,IAAG4vB,GAAG,YAAW,IACjb,SAASqD,GAAG5gH,EAAEC,GAAG,GAAG2tF,KAAIwxB,GAAG,CAACA,IAAG,EAAG,IAAI,OAAOp/G,EAAEC,GAAb,QAAwBm/G,IAAG,GAAI,OAAOp/G,EAAEC,GAAG,SAAS4gH,GAAG7gH,EAAEC,EAAEtE,GAAGiyF,IAAGD,IAAG,IAAI+wB,KAAKnB,GAAGmB,IAAG,GAAIA,GAAG,GAAG,IAAI9iH,EAAEgyF,GAAEA,IAAE,EAAG,IAAI,OAAOxxF,EAAEohH,yBAAyBphH,EAAEmiH,8BAA8B,WAAW,OAAOv+G,EAAEC,EAAEtE,KAA5F,SAA0GiyF,GAAEhyF,IAAI+xF,IAAG4vB,GAAG,YAAW,IAC7Q,SAASuD,GAAG9gH,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,IAAIC,EAAEF,EAAEs/D,QAAQv/D,EAAE,GAAGrE,EAAE,CAAyBsE,EAAE,CAAC,IAAIkgG,GAA/BxkG,EAAEA,EAAE41G,sBAAkC,IAAI51G,EAAE82F,KAAW1pE,EAAE,OAAO,IAAIoiE,EAAExvF,EAAE,EAAE,CAAC,OAAOwvF,EAAEsH,KAAK,KAAK,EAAEtH,EAAEA,EAAEgH,UAAUrR,QAAQ,MAAM7gF,EAAE,KAAK,EAAE,GAAGqsF,GAAEnB,EAAE3kF,MAAM,CAAC2kF,EAAEA,EAAEgH,UAAU2c,0CAA0C,MAAM7uG,GAAGkrF,EAAEA,EAAE2H,aAAa,OAAO3H,GAAGpiE,EAAE,OAAOoiE,OAAE,EAAO,GAAG,IAAIxvF,EAAE82F,IAAI,CAAC,IAAIrH,EAAEzvF,EAAE6K,KAAK,GAAG8lF,GAAElB,GAAG,CAACzvF,EAAEgzG,GAAGhzG,EAAEyvF,EAAED,GAAG,MAAMnrF,GAAGrE,EAAEwvF,OAAOxvF,EAAEsyG,GAC/V,OADkW,OAAOhuG,EAAE6gF,QAAQ7gF,EAAE6gF,QAAQnlF,EAAEsE,EAAEi4G,eAAev8G,EAAEsE,EAAEC,GAAEA,EAAEuxG,GAAG71G,IAAK+1G,QAAQ,CAAC9wG,QAAQb,GAAuB,QAApBC,OAAE,IAASA,EAAE,KAAKA,KAAaC,EAAE0G,SAAS3G,GACnf2xG,KAAKC,GAAG1xG,EAAED,GAAG4xG,GAAG3xG,EAAEvE,GAAUA,EAAE,SAASmlH,GAAG/gH,EAAEC,EAAEtE,EAAEC,GAAG,IAAIsE,EAAED,EAAEs/D,QAAyB,OAAOuhD,GAAG9gH,EAAEC,EAAEtE,EAAxBuE,EAAEwxG,GAAPF,KAAYtxG,GAAqBtE,GAAG,SAASolH,GAAGhhH,GAAe,KAAZA,EAAEA,EAAEu/D,SAAchJ,MAAM,OAAO,KAAK,OAAOv2D,EAAEu2D,MAAMk8B,KAAK,KAAK,EAA2B,QAAQ,OAAOzyF,EAAEu2D,MAAM47B,WAEvO,SAAS8uB,GAAGjhH,GAAG,IAAIC,EAAE,WAAW,IAAiC,IAA3B,WAAWuxG,KAAK,KAAK,GAAG,IAAMvxG,GAAGo8G,KAAKp8G,EAAEo8G,GAAG,GAAGv+G,KAAK2iH,gBAAgBpE,GAAGp8G,EAAEnC,KAAKojH,MAAMlhH,EAAElC,KAAKqjH,WAAWrjH,KAAKsjH,MAAM,KAAKtjH,KAAKujH,aAAavjH,KAAKwjH,cAAa,EAAGxjH,KAAKyjH,UAAU,KAAKzjH,KAAK4iH,QAAO,EAGnD,SAASc,KAAK1jH,KAAKqjH,WAAW,KAAKrjH,KAAK2jH,YAAW,EAAG3jH,KAAK4jH,UAAU5jH,KAAK4jH,UAAU5kH,KAAKgB,MAExQ,SAAS6jH,GAAG3hH,EAAEC,EAAEtE,GAA0BqE,EAAE,CAACu/D,QAA1Bt/D,EAAEssF,GAAE,EAAE,KAAK,KAAKtsF,EAAE,EAAE,GAAgB0lG,cAAc3lG,EAAEswG,gBAAgB,KAAK4N,UAAU,KAAKxN,oBAAoB,EAAEC,kBAAkB,EAAEI,sBAAsB,EAAEC,oBAAoB,EAAEF,iBAAiB,EAAEL,UAAS,EAAG2M,4BAA4B,EAAEM,aAAa,KAAKqC,eAAe,EAAEj/B,QAAQ,KAAKo3B,eAAe,KAAKO,QAAQ98G,EAAEu1G,2BAA2B,EAAEpB,eAAe,EAAE0Q,WAAW,KAAKN,kBAAkB,MAAMpiH,KAAK8jH,cAAc3hH,EAAEkyF,UAAUnyF,EAEpM,SAAS6hH,GAAG7hH,GAAG,SAASA,GAAG,IAAIA,EAAE8O,UAAU,IAAI9O,EAAE8O,UAAU,KAAK9O,EAAE8O,WAAW,IAAI9O,EAAE8O,UAAU,iCAAiC9O,EAAE4pG,YAE/X,SAASkY,GAAG9hH,EAAEC,EAAEtE,EAAEC,EAAEsE,GAAG,IAAIC,EAAExE,EAAEu/G,oBAAoB,GAAG/6G,EAAE,CAAC,GAAG,mBAAoBD,EAAE,CAAC,IAAIirF,EAAEjrF,EAAEA,EAAE,WAAW,IAAIF,EAAEghH,GAAG7gH,EAAEyhH,eAAez2B,EAAE1vF,KAAKuE,IAAI,MAAMA,EAAEG,EAAE4hH,kCAAkC/hH,EAAEC,EAAEC,GAAGC,EAAEwE,OAAO1E,EAAEC,OAAO,CAAiC,GAAhCC,EAAExE,EAAEu/G,oBADvN,SAAYl7G,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAE8O,SAAS9O,EAAEykD,gBAAgBzkD,EAAE2uB,WAAW,OAAa,IAAI1uB,EAAE6O,WAAW7O,EAAEmjE,aAAa,qBAAwBnjE,EAAE,IAAI,IAAItE,EAAEA,EAAEqE,EAAE2pG,WAAW3pG,EAAE6C,YAAYlH,GAAG,OAAO,IAAIgmH,GAAG3hH,GAAE,EAAGC,GACgC+hH,CAAGrmH,EAAEC,GAAM,mBAAoBsE,EAAE,CAAC,IAAIkrF,EAAElrF,EAAEA,EAAE,WAAW,IAAIF,EAAEghH,GAAG7gH,EAAEyhH,eAAex2B,EAAE3vF,KAAKuE,IAAI4gH,GAAG,WAAW,MAAM5gH,EAAEG,EAAE4hH,kCAAkC/hH,EAAEC,EAAEC,GAAGC,EAAEwE,OAAO1E,EAAEC,KAAK,OAAO8gH,GAAG7gH,EAAEyhH,eACpa,SAASK,GAAGjiH,EAAEC,GAAG,IAAItE,EAAE,EAAE+B,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAA2B,OAAtBmkH,GAAG5hH,IAAU8oB,EAAE,OAZgJ,SAAY/oB,EAAEC,EAAEtE,GAAG,IAAIC,EAAE,EAAE8B,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACivF,SAAS4M,GAAG18F,IAAI,MAAMjB,EAAE,KAAK,GAAGA,EAAEoK,SAAShG,EAAE2lG,cAAc1lG,EAAEswG,eAAe50G,GAY1SumH,CAAGliH,EAAEC,EAAE,KAAKtE,GAX5H47F,GAAG,SAASv3F,EAAEC,EAAEtE,GAAG,OAAOsE,GAAG,IAAK,QAAyB,GAAjBk8F,GAAGn8F,EAAErE,GAAGsE,EAAEtE,EAAEE,KAAQ,UAAUF,EAAE6K,MAAM,MAAMvG,EAAE,CAAC,IAAItE,EAAEqE,EAAErE,EAAEy1B,YAAYz1B,EAAEA,EAAEy1B,WAAsF,IAA3Ez1B,EAAEA,EAAE+F,iBAAiB,cAAcoC,KAAKE,UAAU,GAAG/D,GAAG,mBAAuBA,EAAE,EAAEA,EAAEtE,EAAEgC,OAAOsC,IAAI,CAAC,IAAIrE,EAAED,EAAEsE,GAAG,GAAGrE,IAAIoE,GAAGpE,EAAEgd,OAAO5Y,EAAE4Y,KAAK,CAAC,IAAI1Y,EAAE0yF,EAAGh3F,GAAGsE,GAAS6oB,EAAE,MAAMowE,GAAGv9F,GAAGugG,GAAGvgG,EAAEsE,KAAK,MAAM,IAAK,WAAWuoG,GAAGzoG,EAAErE,GAAG,MAAM,IAAK,SAAmB,OAAVsE,EAAEtE,EAAEY,QAAe6rG,GAAGpoG,IAAIrE,EAAEmf,SAAS7a,GAAE,KACxKghH,GAAG/jH,UAAUyH,OAAO,SAAS3E,GAAGlC,KAAK4iH,QAAc33F,EAAE,OAAOjrB,KAAKujH,cAAa,EAAGvjH,KAAKyjH,UAAUvhH,EAAE,IAAIC,EAAEnC,KAAKojH,MAAMU,cAAcjmH,EAAEmC,KAAK2iH,gBAAgB7kH,EAAE,IAAI4lH,GAA8B,OAA3BV,GAAG9gH,EAAEC,EAAE,KAAKtE,EAAEC,EAAE8lH,WAAkB9lH,GACxaqlH,GAAG/jH,UAAUuqC,KAAK,SAASznC,GAAG,GAAGlC,KAAKwjH,aAAathH,QAAQ,CAAC,IAAIC,EAAEnC,KAAKqjH,WAAW,OAAOlhH,IAAIA,EAAEnC,KAAKqjH,WAAW,IAAIlhH,EAAEtB,KAAKqB,KAC1HihH,GAAG/jH,UAAUilH,OAAO,WAAW,IAAIniH,EAAElC,KAAKojH,MAAMU,cAAc3hH,EAAED,EAAEwgH,WAAiD,GAAtC1iH,KAAK4iH,QAAQ,OAAOzgH,GAAS8oB,EAAE,OAAUjrB,KAAKujH,aAAa,CAAC,IAAI1lH,EAAEmC,KAAK2iH,gBAAgB,GAAGxgH,IAAInC,KAAK,CAACA,KAAKujH,eAAe1lH,EAAEmC,KAAK2iH,gBAAgBxgH,EAAEwgH,gBAAgB3iH,KAAK6G,OAAO7G,KAAKyjH,YAAY,IAAI,IAAI3lH,EAAE,KAAKsE,EAAED,EAAEC,IAAIpC,MAAMlC,EAAEsE,EAAEA,EAAEA,EAAEkhH,MAAM,OAAOxlH,GAAEmtB,EAAE,OAAcntB,EAAEwlH,MAAMlhH,EAAEkhH,MAAMtjH,KAAKsjH,MAAMnhH,EAAED,EAAEwgH,WAAW1iH,KAAKA,KAAK4iH,QAAO,EAAGV,GAAGhgH,EAAErE,GAAGsE,EAAEnC,KAAKsjH,MAAMtjH,KAAKsjH,MAAM,KAAsB,QAAjBnhH,EAAED,EAAEwgH,WAAWvgH,IAAYA,EAAEohH,cAAcphH,EAAE0E,OAAO1E,EAAEshH,gBAAgBzjH,KAAKsjH,MAC7f,KAAKtjH,KAAK4iH,QAAO,GAAIO,GAAG/jH,UAAUojH,YAAY,WAAW,IAAIxiH,KAAKwjH,aAAa,CAACxjH,KAAKwjH,cAAa,EAAG,IAAIthH,EAAElC,KAAKqjH,WAAW,GAAG,OAAOnhH,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAErC,OAAOsC,KAAI,EAAGD,EAAEC,QAAuGuhH,GAAGtkH,UAAUuqC,KAAK,SAASznC,GAAG,GAAGlC,KAAK2jH,WAAWzhH,QAAQ,CAAC,IAAIC,EAAEnC,KAAKqjH,WAAW,OAAOlhH,IAAIA,EAAEnC,KAAKqjH,WAAW,IAAIlhH,EAAEtB,KAAKqB,KACtYwhH,GAAGtkH,UAAUwkH,UAAU,WAAW,IAAI5jH,KAAK2jH,WAAW,CAAC3jH,KAAK2jH,YAAW,EAAG,IAAIzhH,EAAElC,KAAKqjH,WAAW,GAAG,OAAOnhH,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAErC,OAAOsC,IAAI,CAAC,IAAItE,EAAEqE,EAAEC,GAAG,mBAAoBtE,GAAEotB,EAAE,MAAMptB,GAAUA,OAE3LgmH,GAAGzkH,UAAUyH,OAAO,SAAS3E,EAAEC,GAAG,IAAItE,EAAEmC,KAAK8jH,cAAchmH,EAAE,IAAI4lH,GAAoE,OAA7C,QAApBvhH,OAAE,IAASA,EAAE,KAAKA,IAAYrE,EAAE6rC,KAAKxnC,GAAG8gH,GAAG/gH,EAAErE,EAAE,KAAKC,EAAE8lH,WAAkB9lH,GAAG+lH,GAAGzkH,UAAUklH,QAAQ,SAASpiH,GAAG,IAAIC,EAAEnC,KAAK8jH,cAAcjmH,EAAE,IAAI6lH,GAAuE,OAAhD,QAApBxhH,OAAE,IAASA,EAAE,KAAKA,IAAYrE,EAAE8rC,KAAKznC,GAAG+gH,GAAG,KAAK9gH,EAAE,KAAKtE,EAAE+lH,WAAkB/lH,GAAGgmH,GAAGzkH,UAAU6kH,kCAAkC,SAAS/hH,EAAEC,EAAEtE,GAAG,IAAIC,EAAEkC,KAAK8jH,cAAc1hH,EAAE,IAAIshH,GAAiE,OAA1C,QAApB7lH,OAAE,IAASA,EAAE,KAAKA,IAAYuE,EAAEunC,KAAK9rC,GAAGolH,GAAG9gH,EAAErE,EAAEoE,EAAEE,EAAEwhH,WAAkBxhH,GACtcyhH,GAAGzkH,UAAUmlH,YAAY,WAAW,IAAIriH,EAAE,IAAIihH,GAAGnjH,MAAMmC,EAAED,EAAEygH,gBAAgB9kH,EAAEmC,KAAK8jH,cAAchmH,EAAED,EAAE6kH,WAAW,GAAG,OAAO5kH,EAAED,EAAE6kH,WAAWxgH,EAAEA,EAAEohH,MAAM,SAAS,CAAC,IAAIzlH,EAAE,KAAK,OAAOC,GAAGA,EAAE6kH,iBAAiBxgH,GAAGtE,EAAEC,EAAEA,EAAEA,EAAEwlH,MAAMphH,EAAEohH,MAAMxlH,EAAE,OAAOD,IAAIA,EAAEylH,MAAMphH,GAAG,OAAOA,GAA+I63F,GAAG8oB,GAAG7oB,GAAG+oB,GAAG9oB,GAAG,WAAWpK,IAAG,IAAI+wB,KAAKnB,GAAGmB,IAAG,GAAIA,GAAG,IAI9b,IAGU1+G,GAAOC,GAHbqiH,GAAG,CAACC,aAAaN,GAAGxtG,YAAY,SAASzU,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE8O,SAAS,OAAO9O,EAAE,IAAIC,EAAED,EAAEuxG,oBAAoI,YAAhH,IAAStxG,IAAI,mBAAoBD,EAAE2E,OAAOokB,EAAE,OAAOA,EAAE,MAAM/sB,OAAOmC,KAAK6B,KAAaA,EAAE,QAAVA,EAAEsgG,GAAGrgG,IAAc,KAAKD,EAAEmyF,WAAoBsmB,QAAQ,SAASz4G,EAAEC,EAAEtE,GAAyB,OAAtBkmH,GAAG5hH,IAAU8oB,EAAE,OAAc+4F,GAAG,KAAK9hH,EAAEC,GAAE,EAAGtE,IAAIgJ,OAAO,SAAS3E,EAAEC,EAAEtE,GAAyB,OAAtBkmH,GAAG5hH,IAAU8oB,EAAE,OAAc+4F,GAAG,KAAK9hH,EAAEC,GAAE,EAAGtE,IAAI6mH,oCAAoC,SAASxiH,EAAEC,EAAEtE,EAAEC,GAC3a,OAD8aimH,GAAGlmH,IAAUotB,EAAE,QAAO,MAAM/oB,QAAG,IAASA,EAAEuxG,sBACvexoF,EAAE,MAAoB+4F,GAAG9hH,EAAEC,EAAEtE,GAAE,EAAGC,IAAI6mH,uBAAuB,SAASziH,GAAwB,OAArB6hH,GAAG7hH,IAAU+oB,EAAE,QAAa/oB,EAAEk7G,sBAAqB0F,GAAG,WAAWkB,GAAG,KAAK,KAAK9hH,GAAE,EAAG,WAAWA,EAAEk7G,oBAAoB,UAAS,IAAQwH,sBAAsB,WAAW,OAAOT,GAAGpkH,WAAM,EAAOH,YAAYilH,wBAAwBhC,GAAGiC,4BAA4B/B,GAAGgC,UAAU,SAAS7iH,EAAEC,GAAG0tF,IAAE5kE,EAAE,OAAc,IAAIptB,EAAEiyF,GAAEA,IAAE,EAAG,IAAI,OAAOixB,GAAG7+G,EAAEC,GAAhB,QAA2B2tF,GAAEjyF,EAAE4hH,GAAG,YAAW,KAAMuF,oBACnP,SAAY9iH,EAAEC,GAA+C,OAA5C4hH,GAAG7hH,IAAU+oB,EAAE,MAAM,uBAA8B,IAAI44F,GAAG3hH,GAAE,EAAG,MAAMC,IAAG,IAAKA,EAAEw4G,UAD0KsK,yBAAyB,SAAS/iH,GAAG,IAAIC,EACtf2tF,GAAEA,IAAE,EAAG,IAAIixB,GAAG7+G,GAAP,SAAmB4tF,GAAE3tF,IAAI0tF,IAAG4vB,GAAG,YAAW,KAAM1tB,mDAAmD,CAACmzB,OAAO,CAACtwB,EAAGC,EAAGC,EAAGb,EAAGE,yBAAyBtB,EAAG0C,EAAG,SAASrzF,GAAGuxF,EAAGvxF,EAAEozF,IAAKuE,GAAGC,GAAGmO,GAAG3T,KAC5KnyF,IAAPD,GAAkQ,CAACijH,wBAAwBzwB,EAAG0wB,WAAW,EAAEr8G,QAAQ,SAASs8G,oBAAoB,cAArUF,wBAxJrB,SAAYjjH,GAAG,GAAG,oBAAqBP,+BAA+B,OAAM,EAAG,IAAIQ,EAAER,+BAA+B,GAAGQ,EAAEmjH,aAAanjH,EAAEojH,cAAc,OAAM,EAAG,IAAI,IAAI1nH,EAAEsE,EAAEqjH,OAAOtjH,GAAGgvG,GAAGE,GAAG,SAASlvG,GAAG,OAAOC,EAAEsjH,kBAAkB5nH,EAAEqE,KAAKivG,GAAGC,GAAG,SAASlvG,GAAG,OAAOC,EAAEujH,qBAAqB7nH,EAAEqE,KAAK,MAAMpE,KAwJlP6nH,CAAG1mH,EAAE,GAAGiD,GAAE,CAAC0jH,cAAc,KAAKC,qBAAqBvqB,GAAGtJ,uBAAuB8zB,wBAAwB,SAAS5jH,GAAW,OAAO,QAAfA,EAAEsgG,GAAGtgG,IAAmB,KAAKA,EAAEmyF,WAAW8wB,wBAAwB,SAASjjH,GAAG,OAAOC,GAAEA,GAAED,GAAG,SAAuG,IAAI6jH,GAAG,CAAC7kH,QAAQsjH,IAAIwB,GAAGD,IAAIvB,IAAIuB,GAAGxoH,EAAOD,QAAQ0oH,GAAG9kH,SAAS8kH,iCCzQnazoH,EAAOD,QAAUkC,EAAQ,mCCH3B,SAAAymH;;;;;;;;;AASa/nH,OAAOC,eAAeb,EAAQ,aAAa,CAACmB,OAAM,IAAK,IAAIX,EAAE,KAAKsE,GAAE,EAAGirF,EAAE,EAAElpE,GAAG,EAAE1mB,GAAG,EAAEG,GAAE,EAAGqB,GAAE,EAAG,SAASK,IAAI,IAAI1B,EAAE,CAAC,IAAIsE,EAAEpE,EAAEk0G,eAAe/yG,EAAE4tF,IAAI5tF,GAAE,EAAGX,EAAEI,EAAEwD,IACtK,SAAS4qF,IAAI,IAAI5qF,EAAEpE,EAAEqE,EAAErE,EAAEq4C,KAAK,GAAGr4C,IAAIqE,EAAErE,EAAE,SAAS,CAAC,IAAID,EAAEC,EAAEooH,SAASpoH,EAAED,EAAEs4C,KAAKh0C,EAAEA,EAAE+jH,SAASroH,EAAEqE,EAAEi0C,KAAKj0C,EAAEgkH,SAAS,KAAKroH,EAAEqE,EAAE4G,SAAS3G,EAAED,EAAE8vG,eAAe9vG,EAAEA,EAAEikH,cAAc,IAAI9jH,EAAEgrF,EAAE4B,EAAExxF,EAAE4vF,EAAEnrF,EAAEzE,EAAE0E,EAAE,IAAI,IAAImrF,EAAEzvF,IAAV,QAAsBwvF,EAAEhrF,EAAE5E,EAAEwxF,EAAE,GAAG,mBAAoB3B,EAAE,GAAGA,EAAE,CAACxkF,SAASwkF,EAAE64B,cAAcjkH,EAAE8vG,eAAe7vG,EAAEg0C,KAAK,KAAK+vE,SAAS,MAAM,OAAOpoH,EAAEA,EAAEwvF,EAAEn3C,KAAKm3C,EAAE44B,SAAS54B,MAAM,CAACzvF,EAAE,KAAKqE,EAAEpE,EAAE,EAAE,CAAC,GAAGoE,EAAE8vG,gBAAgB7vG,EAAE,CAACtE,EAAEqE,EAAE,MAAMA,EAAEA,EAAEi0C,WAAWj0C,IAAIpE,GAAG,OAAOD,EAAEA,EAAEC,EAAED,IAAIC,IAAIA,EAAEwvF,EAAEhuF,MAAK6C,EAAEtE,EAAEqoH,UAAW/vE,KAAKt4C,EAAEqoH,SAAS54B,EAAEA,EAAEn3C,KAAKt4C,EAAEyvF,EAAE44B,SAC/e/jH,GAAG,SAAS4qF,IAAI,IAAI,IAAI5oE,GAAG,OAAOrmB,GAAG,IAAIA,EAAEqoH,cAAc,CAACvoH,GAAE,EAAG,IAAI,GAAGkvF,UAAU,OAAOhvF,GAAG,IAAIA,EAAEqoH,eAAjC,QAAwDvoH,GAAE,EAAG,OAAOE,EAAEwB,IAAIL,GAAE,IAAK,SAASP,EAAEwD,GAAGtE,GAAE,EAAG,IAAIuE,EAAEC,EAAEA,EAAEF,EAAE,IAAI,GAAGA,EAAE,KAAK,OAAOpE,GAAG,CAAC,IAAID,EAAEP,EAAQmkH,eAAe,KAAG3jH,EAAEk0G,gBAAgBn0G,GAAoD,MAAjD,GAAGivF,UAAU,OAAOhvF,GAAGA,EAAEk0G,gBAAgBn0G,QAAmB,GAAG,OAAOC,EAAG,GAAGgvF,UAAU,OAAOhvF,IAAIkvF,KAA/K,QAA6LpvF,GAAE,EAAGwE,EAAED,EAAE,OAAOrE,EAAEwB,IAAIL,GAAE,EAAG8tF,KACvY,IAAqQS,EAAEK,EAAnQ5iE,EAAEngB,KAAK0gB,EAAE,mBAAoBnf,WAAWA,gBAAW,EAAOuf,EAAE,mBAAoB/d,aAAaA,kBAAa,EAAOs/E,EAAE,mBAAoBi5B,sBAAsBA,2BAAsB,EAAOh5B,EAAE,mBAAoBi5B,qBAAqBA,0BAAqB,EAAW,SAASv4B,EAAE5rF,GAAGsrF,EAAEL,EAAE,SAAShrF,GAAGypB,EAAEiiE,GAAG3rF,EAAEC,KAAK0rF,EAAEriE,EAAE,WAAW4hE,EAAEI,GAAGtrF,EAAE5E,EAAQmkH,iBAAiB,KAClW,GAAG,iBAAkB6E,aAAa,mBAAoBA,YAAYzuB,IAAI,CAAC,IAAI5J,EAAEq4B,YAAYhpH,EAAQmkH,aAAa,WAAW,OAAOxzB,EAAE4J,YAAYv6F,EAAQmkH,aAAa,WAAW,OAAOx2F,EAAE4sE,OAAO,IAAIv5F,EAAEuuF,EAAEG,EAAEkB,EAAE,KAC1M,GAD+M,oBAAqBtrF,OAAOsrF,EAAEtrF,YAAO,IAAqBqjH,IAAS/3B,EAAE+3B,GACjR/3B,GAAGA,EAAEq4B,WAAW,CAAC,IAAIl4B,EAAEH,EAAEq4B,WAAWjoH,EAAE+vF,EAAE,GAAGxB,EAAEwB,EAAE,GAAGrB,EAAEqB,EAAE,GAAG/wF,EAAQmkH,aAAapzB,EAAE,QAAQ,GAAG,oBAAqBzrF,QAAQ,mBAAoB4jH,eAAe,CAAC,IAAIj4B,EAAE,KAAKC,EAAE,SAAStsF,GAAG,GAAG,OAAOqsF,EAAE,IAAIA,EAAErsF,GAAN,QAAiBqsF,EAAE,OAAOjwF,EAAE,SAAS4D,GAAG,OAAOqsF,EAAEliF,WAAW/N,EAAE,EAAE4D,IAAIqsF,EAAErsF,EAAEmK,WAAWmiF,EAAE,GAAE,KAAM3B,EAAE,WAAW0B,EAAE,MAAMvB,EAAE,WAAW,OAAM,OAAQ,CAAC,oBAAqBnrF,UAAU,mBAAoBsrF,GAAGtrF,QAAQC,MAAM,2IACtZ,mBAAoBsrF,GAAGvrF,QAAQC,MAAM,2IAA2I,IAAI2sF,EAAE,KAAK7M,GAAE,EAAGgN,GAAG,EAAEG,GAAE,EAAG7K,GAAE,EAAG8K,EAAE,EAAEG,EAAE,GAAGE,EAAE,GAAGrC,EAAE,WAAW,OAAOgC,GAAG1xF,EAAQmkH,gBAAgB,IAAInyB,EAAE,IAAIk3B,eAAep3B,EAAEE,EAAEm3B,MAAMn3B,EAAEo3B,MAAMC,UAAU,WAAW/kC,GAAE,EAAG,IAAI1/E,EAAEusF,EAAEtsF,EAAEysF,EAAEH,EAAE,KAAKG,GAAG,EAAE,IAAI/wF,EAAEP,EAAQmkH,eAAep/G,GAAE,EAAG,GAAG,GAAG2sF,EAAEnxF,EAAE,OAAI,IAAIsE,GAAGA,GAAGtE,GAAmC,OAAvBkxF,IAAIA,GAAE,EAAGjB,EAAE6B,IAAIlB,EAAEvsF,OAAE0sF,EAAEzsF,GAA/BE,GAAE,EAAsC,GAAG,OAAOH,EAAE,CAACgiF,GAAE,EAAG,IAAIhiF,EAAEG,GAAN,QAAiB6hF,GAAE,KAClf,IAAIyL,EAAE,SAASztF,GAAG,GAAG,OAAOusF,EAAE,CAACX,EAAE6B,GAAG,IAAIxtF,EAAED,EAAE8sF,EAAEK,EAAEltF,EAAEktF,GAAGF,EAAEE,GAAG,EAAEltF,IAAIA,EAAE,GAAGktF,EAAEltF,EAAEgtF,EAAEA,EAAEhtF,GAAGgtF,EAAEhtF,EAAE6sF,EAAE9sF,EAAEmtF,EAAEzN,IAAIA,GAAE,EAAGwN,EAAEw3B,iBAAY,SAAc73B,GAAE,GAAIzwF,EAAE,SAAS4D,EAAEC,GAAGssF,EAAEvsF,EAAE0sF,EAAEzsF,EAAE+hF,GAAG,EAAE/hF,EAAEitF,EAAEw3B,iBAAY,GAAQ73B,IAAIA,GAAE,EAAGjB,EAAE6B,KAAK9C,EAAE,WAAW4B,EAAE,KAAK7M,GAAE,EAAGgN,GAAG,GAAGtxF,EAAQkjH,2BAA2B,EAAEljH,EAAQmjH,8BAA8B,EAAEnjH,EAAQqiH,wBAAwB,EAAEriH,EAAQqjH,sBAAsB,EAAErjH,EAAQojH,qBAAqB,EACrZpjH,EAAQoiH,yBAAyB,SAASx9G,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIrE,EAAEwvF,EAAEhrF,EAAE8hB,EAAEkpE,EAAEnrF,EAAEiiB,EAAE7mB,EAAQmkH,eAAe,IAAI,OAAOt/G,IAAX,QAAuBkrF,EAAExvF,EAAEsmB,EAAE9hB,EAAE0qF,MAAMzvF,EAAQupH,cAAc,SAAS3kH,GAAG,OAAOmrF,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIlrF,EAAE,EAAE,MAAM,QAAQA,EAAEkrF,EAAE,IAAIxvF,EAAEwvF,EAAEhrF,EAAE8hB,EAAEkpE,EAAElrF,EAAEgiB,EAAE7mB,EAAQmkH,eAAe,IAAI,OAAOv/G,IAAX,QAAuBmrF,EAAExvF,EAAEsmB,EAAE9hB,EAAE0qF,MAC/VzvF,EAAQqyG,0BAA0B,SAASztG,EAAEC,GAAG,IAAItE,GAAG,IAAIsmB,EAAEA,EAAE7mB,EAAQmkH,eAAe,GAAG,iBAAkBt/G,GAAG,OAAOA,GAAG,iBAAkBA,EAAE6/G,QAAQ7/G,EAAEtE,EAAEsE,EAAE6/G,aAAa,OAAO30B,GAAG,KAAK,EAAElrF,EAAEtE,GAAG,EAAE,MAAM,KAAK,EAAEsE,EAAEtE,EAAE,IAAI,MAAM,KAAK,EAAEsE,EAAEtE,EAAE,WAAW,MAAM,KAAK,EAAEsE,EAAEtE,EAAE,IAAI,MAAM,QAAQsE,EAAEtE,EAAE,IAA4E,GAAxEqE,EAAE,CAAC4G,SAAS5G,EAAEikH,cAAc94B,EAAE2kB,eAAe7vG,EAAEg0C,KAAK,KAAK+vE,SAAS,MAAS,OAAOpoH,EAAEA,EAAEoE,EAAEi0C,KAAKj0C,EAAEgkH,SAAShkH,EAAE5C,QAAQ,CAACzB,EAAE,KAAK,IAAIwE,EAAEvE,EAAE,EAAE,CAAC,GAAGuE,EAAE2vG,eAAe7vG,EAAE,CAACtE,EAAEwE,EAAE,MAAMA,EAAEA,EAAE8zC,WAAW9zC,IAAIvE,GAAG,OAAOD,EAAEA,EAAEC,EAAED,IAAIC,IAAIA,EAAEoE,EAAE5C,MAChf6C,EAAEtE,EAAEqoH,UAAW/vE,KAAKt4C,EAAEqoH,SAAShkH,EAAEA,EAAEi0C,KAAKt4C,EAAEqE,EAAEgkH,SAAS/jH,EAAE,OAAOD,GAAG5E,EAAQuyG,wBAAwB,SAAS3tG,GAAG,IAAIC,EAAED,EAAEi0C,KAAK,GAAG,OAAOh0C,EAAE,CAAC,GAAGA,IAAID,EAAEpE,EAAE,SAAS,CAACoE,IAAIpE,IAAIA,EAAEqE,GAAG,IAAItE,EAAEqE,EAAEgkH,SAASroH,EAAEs4C,KAAKh0C,EAAEA,EAAE+jH,SAASroH,EAAEqE,EAAEi0C,KAAKj0C,EAAEgkH,SAAS,OAAO5oH,EAAQwpH,sBAAsB,SAAS5kH,GAAG,IAAIC,EAAEkrF,EAAE,OAAO,WAAW,IAAIxvF,EAAEwvF,EAAEhrF,EAAE8hB,EAAEkpE,EAAElrF,EAAEgiB,EAAE7mB,EAAQmkH,eAAe,IAAI,OAAOv/G,EAAEnC,MAAMC,KAAKJ,WAAxB,QAA2CytF,EAAExvF,EAAEsmB,EAAE9hB,EAAE0qF,OAAOzvF,EAAQijH,iCAAiC,WAAW,OAAOlzB,GAC3c/vF,EAAQilH,qBAAqB,WAAW,OAAOngH,IAAI,OAAOtE,GAAGA,EAAEk0G,eAAev0G,GAAGuvF,MAAM1vF,EAAQypH,2BAA2B,WAAW,OAAOjpH,GAAGwB,KAAKhC,EAAQ0pH,wBAAwB,aAAa1pH,EAAQ2pH,8BAA8B,WAAW,OAAOnpH,qCCpBzP,IAAIuvF,EAGJA,EAAK,WACJ,OAAOrtF,KADH,GAIL,IAECqtF,EAAIA,GAAK,IAAIxpF,SAAS,cAAb,GACR,MAAOzB,GAEc,iBAAXQ,SAAqByqF,EAAIzqF,QAOrCrF,EAAOD,QAAU+vF,gCCjBjBnvF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAO,QAKP,SAAkB0lF,GAChB,QAAgB7hF,IAAZ6hF,EAEF,YADAnhF,QAAQC,MAAM,wCAIhB,IAAIolH,EAAehpH,OAAOiiB,eAAe6iE,GAIvCmkC,EAFEvnH,UAAUC,OAAS,EAEZiB,MAAM1B,UAAUiE,MAAM1F,KAAKiC,UAAW,GAGtC1B,OAAOyR,oBAAoBu3G,GAGtCC,EAAO5hH,QAAQ,SAAUkI,GACvB,IAAI25G,EAAalpH,OAAOi+E,yBAAyB+qC,EAAcz5G,QAE5CtM,IAAfimH,GAM8B,IAA9BC,EAAS/mH,QAAQmN,IAA8C,mBAArB25G,EAAW3oH,OAIzDP,OAAOC,eAAe+oH,EAAcz5G,EAUxC,SAAqBy5G,EAAcz5G,EAAQ25G,GACzC,IAAIE,EAAKF,EAAW3oH,MAEpB,MAAO,CACLo9E,cAAc,EACdx9E,IAAK,WACH,GAAI2B,OAASknH,GAAgBlnH,KAAKX,eAAeoO,GAC/C,OAAO65G,EAGT,IAAIC,EAAUD,EAAGtoH,KAAKgB,MAMtB,OALA9B,OAAOC,eAAe6B,KAAMyN,EAAQ,CAClChP,MAAO8oH,EACP1rC,cAAc,EACdI,UAAU,IAELsrC,IA1BmCC,CAAYN,EAAcz5G,EAAQ25G,IAT5EvlH,QAAQ+0B,KAAK,cAAgBnpB,EAAS,mCAxB5C,IAAI45G,EAAW,CAAC,cAAe,SAAU,qBAAsB,oBAAqB,4BAA6B,wBAAyB,sBAAuB,qBAAsB,wBAEnLF,EAAS,GA6Db5pH,EAAOD,QAAUA,EAAO,sCC5DxB,IAAImqH,EAAuBjoH,EAAQ,IAEnC,SAASkoH,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CnqH,EAAOD,QAAU,WACf,SAASuqH,EAAK3iH,EAAOuL,EAAUC,EAAeC,EAAUC,EAAck3G,GACpE,GAAIA,IAAWL,EAAf,CAIA,IAAI7lH,EAAM,IAAIU,MACZ,mLAKF,MADAV,EAAI7D,KAAO,sBACL6D,GAGR,SAASmmH,IACP,OAAOF,EAFTA,EAAK12G,WAAa02G,EAMlB,IAAIG,EAAiB,CACnB3mC,MAAOwmC,EACPl/B,KAAMk/B,EACNloG,KAAMkoG,EACNroD,OAAQqoD,EACR3oH,OAAQ2oH,EACRv1G,OAAQu1G,EACRx/C,OAAQw/C,EAERI,IAAKJ,EACLK,QAASH,EACThlH,QAAS8kH,EACTvW,YAAauW,EACbM,WAAYJ,EACZjkH,KAAM+jH,EACNO,SAAUL,EACVl/B,MAAOk/B,EACPn/B,UAAWm/B,EACXxpG,MAAOwpG,EACPM,MAAON,EAEPO,eAAgBX,EAChBC,kBAAmBF,GAKrB,OAFAM,EAAeO,UAAYP,EAEpBA,iCCnDTzqH,EAAOD,QAFoB,gECT3B,IAAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaA,SAAY0lH,EAAQr2F,GAEnB,aAE6D,iBAAnBryB,EAAOD,QAShDC,EAAOD,QAAU2oH,EAAOpjH,SACvB+sB,EAASq2F,GAAQ,GACjB,SAAUj5B,GACT,IAAMA,EAAEnqF,SACP,MAAM,IAAIP,MAAO,4CAElB,OAAOstB,EAASo9D,IAGlBp9D,EAASq2F,GAtBX,CA0BuB,oBAAXrjH,OAAyBA,OAAS5C,KAAM,SAAU4C,EAAQ4lH,GAMtE,aAEA,IAAI10G,EAAM,GAENjR,EAAWD,EAAOC,SAElB4lH,EAAWvqH,OAAOiiB,eAElB9c,EAAQyQ,EAAIzQ,MAEZmO,EAASsC,EAAItC,OAEb3Q,EAAOiT,EAAIjT,KAEXP,EAAUwT,EAAIxT,QAEdooH,EAAa,GAEb3oG,EAAW2oG,EAAW3oG,SAEtBvf,EAASkoH,EAAWrpH,eAEpBspH,EAAanoH,EAAOuf,SAEpB6oG,EAAuBD,EAAWhrH,KAAMO,QAExC2qH,EAAU,GAEVC,EAAa,SAAqB1nH,GAMhC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAI4P,UAIjD+3G,EAAW,SAAmB3nH,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAIwB,QAM/BomH,EAA4B,CAC/BtgH,MAAM,EACNkW,KAAK,EACLqqG,OAAO,EACPC,UAAU,GAGX,SAASC,EAAS72C,EAAMxuE,EAAMg4D,GAG7B,IAAIt+D,EAAG+R,EACN65G,GAHDttD,EAAMA,GAAOj5D,GAGCC,cAAe,UAG7B,GADAsmH,EAAO9pF,KAAOgzC,EACTxuE,EACJ,IAAMtG,KAAKwrH,GAYVz5G,EAAMzL,EAAMtG,IAAOsG,EAAKk+D,cAAgBl+D,EAAKk+D,aAAcxkE,KAE1D4rH,EAAOxtF,aAAcp+B,EAAG+R,GAI3BusD,EAAIG,KAAKr3D,YAAawkH,GAAS91F,WAAWvuB,YAAaqkH,GAIzD,SAASC,EAAQjoH,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxCsnH,EAAY3oG,EAASpiB,KAAMyD,KAAW,gBAC/BA,EAQT,IAICkoH,EAAS,SAAUtmH,EAAUggF,GAI5B,OAAO,IAAIsmC,EAAOhC,GAAGiC,KAAMvmH,EAAUggF,IAKtCwmC,EAAQ,qCAmVT,SAASC,EAAaroH,GAMrB,IAAIvB,IAAWuB,GAAO,WAAYA,GAAOA,EAAIvB,OAC5C6I,EAAO2gH,EAAQjoH,GAEhB,OAAK0nH,EAAY1nH,KAAS2nH,EAAU3nH,KAIpB,UAATsH,GAA+B,IAAX7I,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOuB,GA/VhEkoH,EAAOhC,GAAKgC,EAAOlqH,UAAY,CAG9BsqH,OAjBU,QAmBVloH,YAAa8nH,EAGbzpH,OAAQ,EAER6D,QAAS,WACR,OAAOL,EAAM1F,KAAMqC,OAKpB3B,IAAK,SAAUsrH,GAGd,OAAY,MAAPA,EACGtmH,EAAM1F,KAAMqC,MAIb2pH,EAAM,EAAI3pH,KAAM2pH,EAAM3pH,KAAKH,QAAWG,KAAM2pH,IAKpDC,UAAW,SAAUC,GAGpB,IAAIC,EAAMR,EAAOpsD,MAAOl9D,KAAKwB,cAAeqoH,GAM5C,OAHAC,EAAIC,WAAa/pH,KAGV8pH,GAIRE,KAAM,SAAUlhH,GACf,OAAOwgH,EAAOU,KAAMhqH,KAAM8I,IAG3BgB,IAAK,SAAUhB,GACd,OAAO9I,KAAK4pH,UAAWN,EAAOx/G,IAAK9J,KAAM,SAAUiqH,EAAMzsH,GACxD,OAAOsL,EAASnL,KAAMssH,EAAMzsH,EAAGysH,OAIjC5mH,MAAO,WACN,OAAOrD,KAAK4pH,UAAWvmH,EAAMtD,MAAOC,KAAMJ,aAG3C4qD,MAAO,WACN,OAAOxqD,KAAKkqH,GAAI,IAGjBx/D,KAAM,WACL,OAAO1qD,KAAKkqH,IAAK,IAGlBA,GAAI,SAAU1sH,GACb,IAAIuyB,EAAM/vB,KAAKH,OACd81D,GAAKn4D,GAAMA,EAAI,EAAIuyB,EAAM,GAC1B,OAAO/vB,KAAK4pH,UAAWj0D,GAAK,GAAKA,EAAI5lC,EAAM,CAAE/vB,KAAM21D,IAAQ,KAG5DlzC,IAAK,WACJ,OAAOziB,KAAK+pH,YAAc/pH,KAAKwB,eAKhCX,KAAMA,EACNy9B,KAAMxqB,EAAIwqB,KACVzpB,OAAQf,EAAIe,QAGby0G,EAAOv/G,OAASu/G,EAAOhC,GAAGv9G,OAAS,WAClC,IAAIlC,EAAS9J,EAAM6gB,EAAKikC,EAAMsnE,EAAapkH,EAC1CpG,EAASC,UAAW,IAAO,GAC3BpC,EAAI,EACJqC,EAASD,UAAUC,OACnBuqH,GAAO,EAsBR,IAnBuB,kBAAXzqH,IACXyqH,EAAOzqH,EAGPA,EAASC,UAAWpC,IAAO,GAC3BA,KAIsB,iBAAXmC,GAAwBmpH,EAAYnpH,KAC/CA,EAAS,IAILnC,IAAMqC,IACVF,EAASK,KACTxC,KAGOA,EAAIqC,EAAQrC,IAGnB,GAAqC,OAA9BqK,EAAUjI,UAAWpC,IAG3B,IAAMO,KAAQ8J,EACbg7C,EAAOh7C,EAAS9J,GAIF,cAATA,GAAwB4B,IAAWkjD,IAKnCunE,GAAQvnE,IAAUymE,EAAOe,cAAexnE,KAC1CsnE,EAAcrpH,MAAMC,QAAS8hD,MAC/BjkC,EAAMjf,EAAQ5B,GAIbgI,EADIokH,IAAgBrpH,MAAMC,QAAS6d,GAC3B,GACIurG,GAAgBb,EAAOe,cAAezrG,GAG1CA,EAFA,GAITurG,GAAc,EAGdxqH,EAAQ5B,GAASurH,EAAOv/G,OAAQqgH,EAAMrkH,EAAO88C,SAGzB1hD,IAAT0hD,IACXljD,EAAQ5B,GAAS8kD,IAOrB,OAAOljD,GAGR2pH,EAAOv/G,OAAQ,CAGdugH,QAAS,UA1KC,QA0KsBn0G,KAAKE,UAAW5T,QAAS,MAAO,IAGhE8nH,SAAS,EAETzoH,MAAO,SAAU0oH,GAChB,MAAM,IAAIloH,MAAOkoH,IAGlBC,KAAM,aAENJ,cAAe,SAAUjpH,GACxB,IAAImf,EAAOC,EAIX,SAAMpf,GAAgC,oBAAzB2e,EAASpiB,KAAMyD,QAI5Bmf,EAAQkoG,EAAUrnH,KASK,mBADvBof,EAAOhgB,EAAO7C,KAAM4iB,EAAO,gBAAmBA,EAAM/e,cACfmnH,EAAWhrH,KAAM6iB,KAAWooG,IAGlE8B,cAAe,SAAUtpH,GACxB,IAAIrD,EAEJ,IAAMA,KAAQqD,EACb,OAAO,EAER,OAAO,GAIRupH,WAAY,SAAUr4C,EAAMzqE,GAC3BshH,EAAS72C,EAAM,CAAE22C,MAAOphH,GAAWA,EAAQohH,SAG5Ce,KAAM,SAAU5oH,EAAK0H,GACpB,IAAIjJ,EAAQrC,EAAI,EAEhB,GAAKisH,EAAaroH,GAEjB,IADAvB,EAASuB,EAAIvB,OACLrC,EAAIqC,IACqC,IAA3CiJ,EAASnL,KAAMyD,EAAK5D,GAAKA,EAAG4D,EAAK5D,IADnBA,UAMpB,IAAMA,KAAK4D,EACV,IAAgD,IAA3C0H,EAASnL,KAAMyD,EAAK5D,GAAKA,EAAG4D,EAAK5D,IACrC,MAKH,OAAO4D,GAIRorD,KAAM,SAAUltB,GACf,OAAe,MAARA,EACN,IACEA,EAAO,IAAK78B,QAAS+mH,EAAO,KAIhCoB,UAAW,SAAU92G,EAAKszC,GACzB,IAAI0iE,EAAM1iE,GAAW,GAarB,OAXY,MAAPtzC,IACC21G,EAAavrH,OAAQ4V,IACzBw1G,EAAOpsD,MAAO4sD,EACE,iBAARh2G,EACP,CAAEA,GAAQA,GAGXjT,EAAKlD,KAAMmsH,EAAKh2G,IAIXg2G,GAGRe,QAAS,SAAUZ,EAAMn2G,EAAKtW,GAC7B,OAAc,MAAPsW,GAAe,EAAIxT,EAAQ3C,KAAMmW,EAAKm2G,EAAMzsH,IAKpD0/D,MAAO,SAAU1S,EAAOsgE,GAKvB,IAJA,IAAI/6F,GAAO+6F,EAAOjrH,OACjB81D,EAAI,EACJn4D,EAAIgtD,EAAM3qD,OAEH81D,EAAI5lC,EAAK4lC,IAChBnL,EAAOhtD,KAAQstH,EAAQn1D,GAKxB,OAFAnL,EAAM3qD,OAASrC,EAERgtD,GAGRugE,KAAM,SAAUlB,EAAO/gH,EAAUkiH,GAShC,IARA,IACC7jE,EAAU,GACV3pD,EAAI,EACJqC,EAASgqH,EAAMhqH,OACforH,GAAkBD,EAIXxtH,EAAIqC,EAAQrC,KACAsL,EAAU+gH,EAAOrsH,GAAKA,KAChBytH,GACxB9jE,EAAQtmD,KAAMgpH,EAAOrsH,IAIvB,OAAO2pD,GAIRr9C,IAAK,SAAU+/G,EAAO/gH,EAAUnI,GAC/B,IAAId,EAAQpB,EACXjB,EAAI,EACJssH,EAAM,GAGP,GAAKL,EAAaI,GAEjB,IADAhqH,EAASgqH,EAAMhqH,OACPrC,EAAIqC,EAAQrC,IAGL,OAFdiB,EAAQqK,EAAU+gH,EAAOrsH,GAAKA,EAAGmD,KAGhCmpH,EAAIjpH,KAAMpC,QAMZ,IAAMjB,KAAKqsH,EAGI,OAFdprH,EAAQqK,EAAU+gH,EAAOrsH,GAAKA,EAAGmD,KAGhCmpH,EAAIjpH,KAAMpC,GAMb,OAAO+S,EAAOzR,MAAO,GAAI+pH,IAI1BoB,KAAM,EAINrC,QAASA,IAGa,mBAAXtqH,SACX+qH,EAAOhC,GAAI/oH,OAAO+R,UAAawD,EAAKvV,OAAO+R,WAI5Cg5G,EAAOU,KAAM,uEAAuEj6G,MAAO,KAC3F,SAAUvS,EAAGO,GACZ2qH,EAAY,WAAa3qH,EAAO,KAAQA,EAAKyrD,gBAmB9C,IAAI2hE;;;;;;;;;;;AAWH,SAAUvoH,GAEX,IAAIpF,EACHqrH,EACAuC,EACAvhE,EACAwhE,EACAC,EACA1gC,EACA17C,EACAq8E,EACAC,EACAC,EAGAC,EACA7oH,EACA8oH,EACAC,EACAC,EACAC,EACA3kE,EACAqX,EAGA8rD,EAAU,SAAW,EAAI,IAAIx/G,KAC7BihH,EAAenpH,EAAOC,SACtBmpH,EAAU,EACV/iC,EAAO,EACPgjC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUpqH,EAAGC,GAIxB,OAHKD,IAAMC,IACVspH,GAAe,GAET,GAIRjrH,EAAU,GAAInB,eACdyU,EAAM,GACNgoE,EAAMhoE,EAAIgoE,IACVywC,EAAcz4G,EAAIjT,KAClBA,EAAOiT,EAAIjT,KACXwC,EAAQyQ,EAAIzQ,MAGZ/C,EAAU,SAAUic,EAAM0tG,GAGzB,IAFA,IAAIzsH,EAAI,EACPuyB,EAAMxT,EAAK1c,OACJrC,EAAIuyB,EAAKvyB,IAChB,GAAK+e,EAAK/e,KAAOysH,EAChB,OAAOzsH,EAGT,OAAQ,GAGTgvH,EAAW,6HAKXC,EAAa,sBAGbC,EAAa,gCAGb38C,EAAa,MAAQ08C,EAAa,KAAOC,EAAa,OAASD,EAE9D,gBAAkBA,EAElB,2DAA6DC,EAAa,OAASD,EACnF,OAEDE,EAAU,KAAOD,EAAa,wFAKA38C,EAAa,eAM3C68C,EAAc,IAAI/lD,OAAQ4lD,EAAa,IAAK,KAC5CjD,EAAQ,IAAI3iD,OAAQ,IAAM4lD,EAAa,8BAAgCA,EAAa,KAAM,KAE1FI,EAAS,IAAIhmD,OAAQ,IAAM4lD,EAAa,KAAOA,EAAa,KAC5DK,EAAe,IAAIjmD,OAAQ,IAAM4lD,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAC3FM,EAAW,IAAIlmD,OAAQ4lD,EAAa,MAEpCO,EAAU,IAAInmD,OAAQ8lD,GACtBM,EAAc,IAAIpmD,OAAQ,IAAM6lD,EAAa,KAE7CQ,EAAY,CACXC,GAAM,IAAItmD,OAAQ,MAAQ6lD,EAAa,KACvCU,MAAS,IAAIvmD,OAAQ,QAAU6lD,EAAa,KAC5CW,IAAO,IAAIxmD,OAAQ,KAAO6lD,EAAa,SACvCY,KAAQ,IAAIzmD,OAAQ,IAAMkJ,GAC1Bw9C,OAAU,IAAI1mD,OAAQ,IAAM8lD,GAC5Ba,MAAS,IAAI3mD,OAAQ,yDAA2D4lD,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvC9jC,KAAQ,IAAI9hB,OAAQ,OAAS2lD,EAAW,KAAM,KAG9CiB,aAAgB,IAAI5mD,OAAQ,IAAM4lD,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEiB,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAInnD,OAAQ,qBAAuB4lD,EAAa,MAAQA,EAAa,OAAQ,MACzFwB,GAAY,SAAUz7G,EAAG44E,EAAS8iC,GACjC,IAAI3yG,EAAO,KAAO6vE,EAAU,MAI5B,OAAO7vE,GAASA,GAAQ2yG,EACvB9iC,EACA7vE,EAAO,EAEN7L,OAAOG,aAAc0L,EAAO,OAE5B7L,OAAOG,aAAc0L,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAK5D4yG,GAAa,sDACbC,GAAa,SAAUxS,EAAIyS,GAC1B,OAAKA,EAGQ,OAAPzS,EACG,IAIDA,EAAGv4G,MAAO,GAAI,GAAM,KAAOu4G,EAAGj+C,WAAYi+C,EAAG/7G,OAAS,GAAIkgB,SAAU,IAAO,IAI5E,KAAO67F,GAOf0S,GAAgB,WACf5C,KAGD6C,GAAqBC,GACpB,SAAUvE,GACT,OAAyB,IAAlBA,EAAKzvG,UAAqD,aAAhCyvG,EAAKrvB,SAASpxC,eAEhD,CAAEjvC,IAAK,aAAc47B,KAAM,WAI7B,IACCt1C,EAAKd,MACH+T,EAAMzQ,EAAM1F,KAAMouH,EAAa/9C,YAChC+9C,EAAa/9C,YAIdl6D,EAAKi4G,EAAa/9C,WAAWnuE,QAASmR,SACrC,MAAQ5O,GACTvB,EAAO,CAAEd,MAAO+T,EAAIjU,OAGnB,SAAUF,EAAQ8uH,GACjBlC,EAAYxsH,MAAOJ,EAAQ0D,EAAM1F,KAAK8wH,KAKvC,SAAU9uH,EAAQ8uH,GAIjB,IAHA,IAAI94D,EAAIh2D,EAAOE,OACdrC,EAAI,EAEImC,EAAOg2D,KAAO84D,EAAIjxH,OAC3BmC,EAAOE,OAAS81D,EAAI,IAKvB,SAASw1D,GAAQnoH,EAAUggF,EAAS57B,EAASx+B,GAC5C,IAAIhrB,EAAGJ,EAAGysH,EAAMyE,EAAKx8F,EAAO4yB,EAAQ6pE,EACnCC,EAAa5rC,GAAWA,EAAQj/E,cAGhCiN,EAAWgyE,EAAUA,EAAQhyE,SAAW,EAKzC,GAHAo2C,EAAUA,GAAW,GAGI,iBAAbpkD,IAA0BA,GACxB,IAAbgO,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOo2C,EAIR,IAAMx+B,KAEEo6D,EAAUA,EAAQj/E,eAAiBi/E,EAAU+oC,KAAmBlpH,GACtE6oH,EAAa1oC,GAEdA,EAAUA,GAAWngF,EAEhB+oH,GAAiB,CAIrB,GAAkB,KAAb56G,IAAoBkhB,EAAQ47F,EAAW3iC,KAAMnoF,IAGjD,GAAMpF,EAAIs0B,EAAM,IAGf,GAAkB,IAAblhB,EAAiB,CACrB,KAAMi5G,EAAOjnC,EAAQx/E,eAAgB5F,IAUpC,OAAOwpD,EALP,GAAK6iE,EAAKpyG,KAAOja,EAEhB,OADAwpD,EAAQvmD,KAAMopH,GACP7iE,OAYT,GAAKwnE,IAAe3E,EAAO2E,EAAWprH,eAAgB5F,KACrD4gE,EAAUwkB,EAASinC,IACnBA,EAAKpyG,KAAOja,EAGZ,OADAwpD,EAAQvmD,KAAMopH,GACP7iE,MAKH,IAAKl1B,EAAM,GAEjB,OADArxB,EAAKd,MAAOqnD,EAAS47B,EAAQr/E,qBAAsBX,IAC5CokD,EAGD,IAAMxpD,EAAIs0B,EAAM,KAAO22F,EAAQplH,wBACrCu/E,EAAQv/E,uBAGR,OADA5C,EAAKd,MAAOqnD,EAAS47B,EAAQv/E,uBAAwB7F,IAC9CwpD,EAKT,GAAKyhE,EAAQgG,MACXxC,EAAwBrpH,EAAW,QAClC6oH,IAAcA,EAAUtoH,KAAMP,MAIlB,IAAbgO,GAAqD,WAAnCgyE,EAAQ4X,SAASpxC,eAA8B,CAUlE,GARAmlE,EAAc3rH,EACd4rH,EAAa5rC,EAOK,IAAbhyE,GAAkB+7G,EAASxpH,KAAMP,GAAa,CAYlD,KATM0rH,EAAM1rC,EAAQhhB,aAAc,OACjC0sD,EAAMA,EAAIjsH,QAAS0rH,GAAYC,IAE/BprC,EAAQpnD,aAAc,KAAO8yF,EAAMpE,GAKpC9sH,GADAsnD,EAASwmE,EAAUtoH,IACRnD,OACHrC,KACPsnD,EAAOtnD,GAAK,IAAMkxH,EAAM,IAAMI,GAAYhqE,EAAOtnD,IAElDmxH,EAAc7pE,EAAO7jD,KAAM,KAG3B2tH,EAAab,GAASxqH,KAAMP,IAAc+rH,GAAa/rC,EAAQ1vD,aAC9D0vD,EAGF,IAIC,OAHAniF,EAAKd,MAAOqnD,EACXwnE,EAAWhrH,iBAAkB+qH,IAEvBvnE,EACN,MAAQ4nE,GACT3C,EAAwBrpH,GAAU,GANnC,QAQM0rH,IAAQpE,GACZtnC,EAAQ0a,gBAAiB,QAQ9B,OAAOxuD,EAAQlsC,EAASP,QAAS+mH,EAAO,MAAQxmC,EAAS57B,EAASx+B,GASnE,SAASsjG,KACR,IAAI7rH,EAAO,GAUX,OARA,SAAS4uH,EAAOlwH,EAAKN,GAMpB,OAJK4B,EAAKQ,KAAM9B,EAAM,KAAQqsH,EAAK8D,oBAE3BD,EAAO5uH,EAAK82D,SAEZ83D,EAAOlwH,EAAM,KAAQN,GAS/B,SAAS0wH,GAAc7H,GAEtB,OADAA,EAAIgD,IAAY,EACThD,EAOR,SAAS8H,GAAQ9H,GAChB,IAAIx2F,EAAKjuB,EAASC,cAAc,YAEhC,IACC,QAASwkH,EAAIx2F,GACZ,MAAO1uB,GACR,OAAO,EAHR,QAMM0uB,EAAGwC,YACPxC,EAAGwC,WAAWvuB,YAAa+rB,GAG5BA,EAAK,MASP,SAASu+F,GAAW/2G,EAAOoqE,GAI1B,IAHA,IAAI5uE,EAAMwE,EAAMvI,MAAM,KACrBvS,EAAIsW,EAAIjU,OAEDrC,KACP4tH,EAAKkE,WAAYx7G,EAAItW,IAAOklF,EAU9B,SAAS6sC,GAAcrtH,EAAGC,GACzB,IAAIqtH,EAAMrtH,GAAKD,EACd6pC,EAAOyjF,GAAsB,IAAfttH,EAAE8O,UAAiC,IAAf7O,EAAE6O,UACnC9O,EAAEutH,YAActtH,EAAEstH,YAGpB,GAAK1jF,EACJ,OAAOA,EAIR,GAAKyjF,EACJ,KAASA,EAAMA,EAAIj8F,aAClB,GAAKi8F,IAAQrtH,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,EAOjB,SAASwtH,GAAmBhnH,GAC3B,OAAO,SAAUuhH,GAEhB,MAAgB,UADLA,EAAKrvB,SAASpxC,eACEygE,EAAKvhH,OAASA,GAQ3C,SAASinH,GAAoBjnH,GAC5B,OAAO,SAAUuhH,GAChB,IAAIlsH,EAAOksH,EAAKrvB,SAASpxC,cACzB,OAAiB,UAATzrD,GAA6B,WAATA,IAAsBksH,EAAKvhH,OAASA,GAQlE,SAASknH,GAAsBp1G,GAG9B,OAAO,SAAUyvG,GAKhB,MAAK,SAAUA,EASTA,EAAK32F,aAAgC,IAAlB22F,EAAKzvG,SAGvB,UAAWyvG,EACV,UAAWA,EAAK32F,WACb22F,EAAK32F,WAAW9Y,WAAaA,EAE7ByvG,EAAKzvG,WAAaA,EAMpByvG,EAAK3E,aAAe9qG,GAI1ByvG,EAAK3E,cAAgB9qG,GACpB+zG,GAAoBtE,KAAWzvG,EAG3ByvG,EAAKzvG,WAAaA,EAKd,UAAWyvG,GACfA,EAAKzvG,WAAaA,GAY5B,SAASq1G,GAAwBvI,GAChC,OAAO6H,GAAa,SAAUW,GAE7B,OADAA,GAAYA,EACLX,GAAa,SAAUvmG,EAAMu+B,GAMnC,IALA,IAAIwO,EACHo6D,EAAezI,EAAI,GAAI1+F,EAAK/oB,OAAQiwH,GACpCtyH,EAAIuyH,EAAalwH,OAGVrC,KACForB,EAAO+sC,EAAIo6D,EAAavyH,MAC5BorB,EAAK+sC,KAAOxO,EAAQwO,GAAK/sC,EAAK+sC,SAYnC,SAASo5D,GAAa/rC,GACrB,OAAOA,QAAmD,IAAjCA,EAAQr/E,sBAAwCq/E,EAujC1E,IAAMxlF,KAnjCNqrH,EAAUsC,GAAOtC,QAAU,GAO3BwC,EAAQF,GAAOE,MAAQ,SAAUpB,GAChC,IAAI+F,EAAY/F,EAAKte,aACpBggB,GAAW1B,EAAKlmH,eAAiBkmH,GAAMtjE,gBAKxC,OAAQ+mE,EAAMnqH,KAAMysH,GAAarE,GAAWA,EAAQ/wB,UAAY,SAQjE8wB,EAAcP,GAAOO,YAAc,SAAU5nH,GAC5C,IAAImsH,EAAYC,EACfp0D,EAAMh4D,EAAOA,EAAKC,eAAiBD,EAAOioH,EAG3C,OAAKjwD,IAAQj5D,GAA6B,IAAjBi5D,EAAI9qD,UAAmB8qD,EAAInV,iBAMpDglE,GADA9oH,EAAWi5D,GACQnV,gBACnBilE,GAAkBP,EAAOxoH,GAIpBkpH,IAAiBlpH,IACpBqtH,EAAYrtH,EAASk/F,cAAgBmuB,EAAU3rH,MAAQ2rH,IAGnDA,EAAU1yF,iBACd0yF,EAAU1yF,iBAAkB,SAAU8wF,IAAe,GAG1C4B,EAAUttC,aACrBstC,EAAUttC,YAAa,WAAY0rC,KAUrCzF,EAAQ94C,WAAaq/C,GAAO,SAAUt+F,GAErC,OADAA,EAAGrc,UAAY,KACPqc,EAAGkxC,aAAa,eAOzB6mD,EAAQllH,qBAAuByrH,GAAO,SAAUt+F,GAE/C,OADAA,EAAGlsB,YAAa/B,EAASstH,cAAc,MAC/Br/F,EAAGntB,qBAAqB,KAAK9D,SAItCgpH,EAAQplH,uBAAyBoqH,EAAQtqH,KAAMV,EAASY,wBAMxDolH,EAAQuH,QAAUhB,GAAO,SAAUt+F,GAElC,OADA66F,EAAQ/mH,YAAaksB,GAAKjZ,GAAKyyG,GACvBznH,EAASwtH,oBAAsBxtH,EAASwtH,kBAAmB/F,GAAUzqH,SAIzEgpH,EAAQuH,SACZhF,EAAKp8G,OAAL,GAAoB,SAAU6I,GAC7B,IAAIy4G,EAASz4G,EAAGpV,QAASurH,GAAWC,IACpC,OAAO,SAAUhE,GAChB,OAAOA,EAAKjoD,aAAa,QAAUsuD,IAGrClF,EAAKl7F,KAAL,GAAkB,SAAUrY,EAAImrE,GAC/B,QAAuC,IAA3BA,EAAQx/E,gBAAkCooH,EAAiB,CACtE,IAAI3B,EAAOjnC,EAAQx/E,eAAgBqU,GACnC,OAAOoyG,EAAO,CAAEA,GAAS,OAI3BmB,EAAKp8G,OAAL,GAAqB,SAAU6I,GAC9B,IAAIy4G,EAASz4G,EAAGpV,QAASurH,GAAWC,IACpC,OAAO,SAAUhE,GAChB,IAAInmH,OAAwC,IAA1BmmH,EAAKsG,kBACtBtG,EAAKsG,iBAAiB,MACvB,OAAOzsH,GAAQA,EAAKrF,QAAU6xH,IAMhClF,EAAKl7F,KAAL,GAAkB,SAAUrY,EAAImrE,GAC/B,QAAuC,IAA3BA,EAAQx/E,gBAAkCooH,EAAiB,CACtE,IAAI9nH,EAAMtG,EAAGqsH,EACZI,EAAOjnC,EAAQx/E,eAAgBqU,GAEhC,GAAKoyG,EAAO,CAIX,IADAnmH,EAAOmmH,EAAKsG,iBAAiB,QAChBzsH,EAAKrF,QAAUoZ,EAC3B,MAAO,CAAEoyG,GAMV,IAFAJ,EAAQ7mC,EAAQqtC,kBAAmBx4G,GACnCra,EAAI,EACKysH,EAAOJ,EAAMrsH,MAErB,IADAsG,EAAOmmH,EAAKsG,iBAAiB,QAChBzsH,EAAKrF,QAAUoZ,EAC3B,MAAO,CAAEoyG,GAKZ,MAAO,MAMVmB,EAAKl7F,KAAL,IAAmB24F,EAAQllH,qBAC1B,SAAUgxF,EAAK3R,GACd,YAA6C,IAAjCA,EAAQr/E,qBACZq/E,EAAQr/E,qBAAsBgxF,GAG1Bk0B,EAAQgG,IACZ7rC,EAAQp/E,iBAAkB+wF,QAD3B,GAKR,SAAUA,EAAK3R,GACd,IAAIinC,EACHuG,EAAM,GACNhzH,EAAI,EAEJ4pD,EAAU47B,EAAQr/E,qBAAsBgxF,GAGzC,GAAa,MAARA,EAAc,CAClB,KAASs1B,EAAO7iE,EAAQ5pD,MACA,IAAlBysH,EAAKj5G,UACTw/G,EAAI3vH,KAAMopH,GAIZ,OAAOuG,EAER,OAAOppE,GAITgkE,EAAKl7F,KAAL,MAAqB24F,EAAQplH,wBAA0B,SAAUgR,EAAWuuE,GAC3E,QAA+C,IAAnCA,EAAQv/E,wBAA0CmoH,EAC7D,OAAO5oC,EAAQv/E,uBAAwBgR,IAUzCq3G,EAAgB,GAOhBD,EAAY,IAENhD,EAAQgG,IAAMhB,EAAQtqH,KAAMV,EAASe,qBAG1CwrH,GAAO,SAAUt+F,GAMhB66F,EAAQ/mH,YAAaksB,GAAKmP,UAAY,UAAYqqF,EAAU,qBAC1CA,EAAU,kEAOvBx5F,EAAGltB,iBAAiB,wBAAwB/D,QAChDgsH,EAAUhrH,KAAM,SAAW4rH,EAAa,gBAKnC37F,EAAGltB,iBAAiB,cAAc/D,QACvCgsH,EAAUhrH,KAAM,MAAQ4rH,EAAa,aAAeD,EAAW,KAI1D17F,EAAGltB,iBAAkB,QAAU0mH,EAAU,MAAOzqH,QACrDgsH,EAAUhrH,KAAK,MAMViwB,EAAGltB,iBAAiB,YAAY/D,QACrCgsH,EAAUhrH,KAAK,YAMViwB,EAAGltB,iBAAkB,KAAO0mH,EAAU,MAAOzqH,QAClDgsH,EAAUhrH,KAAK,cAIjBuuH,GAAO,SAAUt+F,GAChBA,EAAGmP,UAAY,oFAKf,IAAIogB,EAAQx9C,EAASC,cAAc,SACnCu9C,EAAMzkB,aAAc,OAAQ,UAC5B9K,EAAGlsB,YAAay7C,GAAQzkB,aAAc,OAAQ,KAIzC9K,EAAGltB,iBAAiB,YAAY/D,QACpCgsH,EAAUhrH,KAAM,OAAS4rH,EAAa,eAKS,IAA3C37F,EAAGltB,iBAAiB,YAAY/D,QACpCgsH,EAAUhrH,KAAM,WAAY,aAK7B8qH,EAAQ/mH,YAAaksB,GAAKtW,UAAW,EACY,IAA5CsW,EAAGltB,iBAAiB,aAAa/D,QACrCgsH,EAAUhrH,KAAM,WAAY,aAI7BiwB,EAAGltB,iBAAiB,QACpBioH,EAAUhrH,KAAK,YAIXgoH,EAAQ4H,gBAAkB5C,EAAQtqH,KAAO4jD,EAAUwkE,EAAQxkE,SAChEwkE,EAAQ+E,uBACR/E,EAAQgF,oBACRhF,EAAQiF,kBACRjF,EAAQkF,qBAERzB,GAAO,SAAUt+F,GAGhB+3F,EAAQiI,kBAAoB3pE,EAAQxpD,KAAMmzB,EAAI,KAI9Cq2B,EAAQxpD,KAAMmzB,EAAI,aAClBg7F,EAAcjrH,KAAM,KAAM8rH,KAI5Bd,EAAYA,EAAUhsH,QAAU,IAAIgnE,OAAQglD,EAAU5qH,KAAK,MAC3D6qH,EAAgBA,EAAcjsH,QAAU,IAAIgnE,OAAQilD,EAAc7qH,KAAK,MAIvEgvH,EAAapC,EAAQtqH,KAAMooH,EAAQ1oC,yBAKnCzkB,EAAWyxD,GAAcpC,EAAQtqH,KAAMooH,EAAQntD,UAC9C,SAAUt8D,EAAGC,GACZ,IAAI4uH,EAAuB,IAAf7uH,EAAE8O,SAAiB9O,EAAEykD,gBAAkBzkD,EAClD8uH,EAAM7uH,GAAKA,EAAEmxB,WACd,OAAOpxB,IAAM8uH,MAAWA,GAAwB,IAAjBA,EAAIhgH,YAClC+/G,EAAMvyD,SACLuyD,EAAMvyD,SAAUwyD,GAChB9uH,EAAE+gF,yBAA8D,GAAnC/gF,EAAE+gF,wBAAyB+tC,MAG3D,SAAU9uH,EAAGC,GACZ,GAAKA,EACJ,KAASA,EAAIA,EAAEmxB,YACd,GAAKnxB,IAAMD,EACV,OAAO,EAIV,OAAO,GAOToqH,EAAY2D,EACZ,SAAU/tH,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAspH,GAAe,EACR,EAIR,IAAI16B,GAAW7uF,EAAE+gF,yBAA2B9gF,EAAE8gF,wBAC9C,OAAK8N,IAYU,GAPfA,GAAY7uF,EAAE6B,eAAiB7B,MAAUC,EAAE4B,eAAiB5B,GAC3DD,EAAE+gF,wBAAyB9gF,GAG3B,KAIE0mH,EAAQoI,cAAgB9uH,EAAE8gF,wBAAyB/gF,KAAQ6uF,EAGxD7uF,IAAMW,GAAYX,EAAE6B,gBAAkBgoH,GAAgBvtD,EAASutD,EAAc7pH,IACzE,EAEJC,IAAMU,GAAYV,EAAE4B,gBAAkBgoH,GAAgBvtD,EAASutD,EAAc5pH,GAC1E,EAIDqpH,EACJlrH,EAASkrH,EAAWtpH,GAAM5B,EAASkrH,EAAWrpH,GAChD,EAGe,EAAV4uF,GAAe,EAAI,IAE3B,SAAU7uF,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,OADAspH,GAAe,EACR,EAGR,IAAI+D,EACHhyH,EAAI,EACJ0zH,EAAMhvH,EAAEoxB,WACR09F,EAAM7uH,EAAEmxB,WACR69F,EAAK,CAAEjvH,GACPkvH,EAAK,CAAEjvH,GAGR,IAAM+uH,IAAQF,EACb,OAAO9uH,IAAMW,GAAY,EACxBV,IAAMU,EAAW,EACjBquH,GAAO,EACPF,EAAM,EACNxF,EACElrH,EAASkrH,EAAWtpH,GAAM5B,EAASkrH,EAAWrpH,GAChD,EAGK,GAAK+uH,IAAQF,EACnB,OAAOzB,GAAcrtH,EAAGC,GAKzB,IADAqtH,EAAMttH,EACGstH,EAAMA,EAAIl8F,YAClB69F,EAAG39F,QAASg8F,GAGb,IADAA,EAAMrtH,EACGqtH,EAAMA,EAAIl8F,YAClB89F,EAAG59F,QAASg8F,GAIb,KAAQ2B,EAAG3zH,KAAO4zH,EAAG5zH,IACpBA,IAGD,OAAOA,EAEN+xH,GAAc4B,EAAG3zH,GAAI4zH,EAAG5zH,IAGxB2zH,EAAG3zH,KAAOuuH,GAAgB,EAC1BqF,EAAG5zH,KAAOuuH,EAAe,EACzB,GAGKlpH,GA3YCA,GA8YTsoH,GAAOhkE,QAAU,SAAUkqE,EAAMC,GAChC,OAAOnG,GAAQkG,EAAM,KAAM,KAAMC,IAGlCnG,GAAOsF,gBAAkB,SAAUxG,EAAMoH,GAMxC,IAJOpH,EAAKlmH,eAAiBkmH,KAAWpnH,GACvC6oH,EAAazB,GAGTpB,EAAQ4H,iBAAmB7E,IAC9BS,EAAwBgF,EAAO,QAC7BvF,IAAkBA,EAAcvoH,KAAM8tH,OACtCxF,IAAkBA,EAAUtoH,KAAM8tH,IAErC,IACC,IAAIvH,EAAM3iE,EAAQxpD,KAAMssH,EAAMoH,GAG9B,GAAKvH,GAAOjB,EAAQiI,mBAGlB7G,EAAKpnH,UAAuC,KAA3BonH,EAAKpnH,SAASmO,SAChC,OAAO84G,EAEP,MAAO1nH,GACRiqH,EAAwBgF,GAAM,GAIhC,OAAOlG,GAAQkG,EAAMxuH,EAAU,KAAM,CAAEonH,IAASpqH,OAAS,GAG1DsrH,GAAO3sD,SAAW,SAAUwkB,EAASinC,GAKpC,OAHOjnC,EAAQj/E,eAAiBi/E,KAAcngF,GAC7C6oH,EAAa1oC,GAEPxkB,EAAUwkB,EAASinC,IAG3BkB,GAAOliH,KAAO,SAAUghH,EAAMlsH,IAEtBksH,EAAKlmH,eAAiBkmH,KAAWpnH,GACvC6oH,EAAazB,GAGd,IAAI3C,EAAK8D,EAAKkE,WAAYvxH,EAAKyrD,eAE9Bj6C,EAAM+3G,GAAM9mH,EAAO7C,KAAMytH,EAAKkE,WAAYvxH,EAAKyrD,eAC9C89D,EAAI2C,EAAMlsH,GAAO6tH,QACjBzqH,EAEF,YAAeA,IAARoO,EACNA,EACAs5G,EAAQ94C,aAAe67C,EACtB3B,EAAKjoD,aAAcjkE,IAClBwR,EAAM06G,EAAKsG,iBAAiBxyH,KAAUwR,EAAIgiH,UAC1ChiH,EAAI9Q,MACJ,MAGJ0sH,GAAO37B,OAAS,SAAUx8B,GACzB,OAAQA,EAAM,IAAIvwD,QAAS0rH,GAAYC,KAGxCjD,GAAOrpH,MAAQ,SAAU0oH,GACxB,MAAM,IAAIloH,MAAO,0CAA4CkoH,IAO9DW,GAAOqG,WAAa,SAAUpqE,GAC7B,IAAI6iE,EACHwH,EAAa,GACb97D,EAAI,EACJn4D,EAAI,EAOL,GAJAiuH,GAAgB5C,EAAQ6I,iBACxBlG,GAAa3C,EAAQ8I,YAAcvqE,EAAQ/jD,MAAO,GAClD+jD,EAAQ9oB,KAAMguF,GAETb,EAAe,CACnB,KAASxB,EAAO7iE,EAAQ5pD,MAClBysH,IAAS7iE,EAAS5pD,KACtBm4D,EAAI87D,EAAW5wH,KAAMrD,IAGvB,KAAQm4D,KACPvO,EAAQvyC,OAAQ48G,EAAY97D,GAAK,GAQnC,OAFA61D,EAAY,KAELpkE,GAORyC,EAAUshE,GAAOthE,QAAU,SAAUogE,GACpC,IAAInmH,EACHgmH,EAAM,GACNtsH,EAAI,EACJwT,EAAWi5G,EAAKj5G,SAEjB,GAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,iBAArBi5G,EAAK35C,YAChB,OAAO25C,EAAK35C,YAGZ,IAAM25C,EAAOA,EAAKp5F,WAAYo5F,EAAMA,EAAOA,EAAK12F,YAC/Cu2F,GAAOjgE,EAASogE,QAGZ,GAAkB,IAAbj5G,GAA+B,IAAbA,EAC7B,OAAOi5G,EAAKne,eAhBZ,KAAShoG,EAAOmmH,EAAKzsH,MAEpBssH,GAAOjgE,EAAS/lD,GAkBlB,OAAOgmH,IAGRsB,EAAOD,GAAOngE,UAAY,CAGzBkkE,YAAa,GAEb0C,aAAczC,GAEdj9F,MAAOg7F,EAEPoC,WAAY,GAEZp/F,KAAM,GAEN2hG,SAAU,CACTprD,IAAK,CAAElsD,IAAK,aAAciwC,OAAO,GACjCsnE,IAAK,CAAEv3G,IAAK,cACZw3G,IAAK,CAAEx3G,IAAK,kBAAmBiwC,OAAO,GACtCwnE,IAAK,CAAEz3G,IAAK,oBAGb03G,UAAW,CACV3E,KAAQ,SAAUp7F,GAUjB,OATAA,EAAM,GAAKA,EAAM,GAAGzvB,QAASurH,GAAWC,IAGxC/7F,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKzvB,QAASurH,GAAWC,IAExD,OAAb/7F,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAM7uB,MAAO,EAAG,IAGxBmqH,MAAS,SAAUt7F,GA6BlB,OAlBAA,EAAM,GAAKA,EAAM,GAAGs3B,cAEY,QAA3Bt3B,EAAM,GAAG7uB,MAAO,EAAG,IAEjB6uB,EAAM,IACXi5F,GAAOrpH,MAAOowB,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBi5F,GAAOrpH,MAAOowB,EAAM,IAGdA,GAGRq7F,OAAU,SAAUr7F,GACnB,IAAIggG,EACHC,GAAYjgG,EAAM,IAAMA,EAAM,GAE/B,OAAKg7F,EAAS,MAAU3pH,KAAM2uB,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBigG,GAAYnF,EAAQzpH,KAAM4uH,KAEpCD,EAAS5G,EAAU6G,GAAU,MAE7BD,EAASC,EAAS7xH,QAAS,IAAK6xH,EAAStyH,OAASqyH,GAAWC,EAAStyH,UAGvEqyB,EAAM,GAAKA,EAAM,GAAG7uB,MAAO,EAAG6uH,GAC9BhgG,EAAM,GAAKigG,EAAS9uH,MAAO,EAAG6uH,IAIxBhgG,EAAM7uB,MAAO,EAAG,MAIzB2L,OAAQ,CAEPq+G,IAAO,SAAU+E,GAChB,IAAIx3B,EAAWw3B,EAAiB3vH,QAASurH,GAAWC,IAAYzkE,cAChE,MAA4B,MAArB4oE,EACN,WAAa,OAAO,GACpB,SAAUnI,GACT,OAAOA,EAAKrvB,UAAYqvB,EAAKrvB,SAASpxC,gBAAkBoxC,IAI3DwyB,MAAS,SAAU34G,GAClB,IAAI4I,EAAU4uG,EAAYx3G,EAAY,KAEtC,OAAO4I,IACLA,EAAU,IAAIwpD,OAAQ,MAAQ4lD,EAAa,IAAMh4G,EAAY,IAAMg4G,EAAa,SACjFR,EAAYx3G,EAAW,SAAUw1G,GAChC,OAAO5sG,EAAQ9Z,KAAgC,iBAAnB0mH,EAAKx1G,WAA0Bw1G,EAAKx1G,gBAA0C,IAAtBw1G,EAAKjoD,cAAgCioD,EAAKjoD,aAAa,UAAY,OAI1JsrD,KAAQ,SAAUvvH,EAAM4oB,EAAUosB,GACjC,OAAO,SAAUk3E,GAChB,IAAI5pG,EAAS8qG,GAAOliH,KAAMghH,EAAMlsH,GAEhC,OAAe,MAAVsiB,EACgB,OAAbsG,GAEFA,IAINtG,GAAU,GAEU,MAAbsG,EAAmBtG,IAAW0yB,EACvB,OAAbpsB,EAAoBtG,IAAW0yB,EAClB,OAAbpsB,EAAoBosB,GAAqC,IAA5B1yB,EAAO/f,QAASyyC,GAChC,OAAbpsB,EAAoBosB,GAAS1yB,EAAO/f,QAASyyC,IAAW,EAC3C,OAAbpsB,EAAoBosB,GAAS1yB,EAAOhd,OAAQ0vC,EAAMlzC,UAAakzC,EAClD,OAAbpsB,GAAsB,IAAMtG,EAAO5d,QAASmqH,EAAa,KAAQ,KAAMtsH,QAASyyC,IAAW,EAC9E,OAAbpsB,IAAoBtG,IAAW0yB,GAAS1yB,EAAOhd,MAAO,EAAG0vC,EAAMlzC,OAAS,KAAQkzC,EAAQ,QAK3Fy6E,MAAS,SAAU9kH,EAAM2pH,EAAMvC,EAAUtlE,EAAOE,GAC/C,IAAI4nE,EAAgC,QAAvB5pH,EAAKrF,MAAO,EAAG,GAC3BkvH,EAA+B,SAArB7pH,EAAKrF,OAAQ,GACvBmvH,EAAkB,YAATH,EAEV,OAAiB,IAAV7nE,GAAwB,IAATE,EAGrB,SAAUu/D,GACT,QAASA,EAAK32F,YAGf,SAAU22F,EAAMjnC,EAASz3D,GACxB,IAAI0jG,EAAOwD,EAAaC,EAAY5uH,EAAM6uH,EAAW5zG,EACpDxE,EAAM+3G,IAAWC,EAAU,cAAgB,kBAC3C15F,EAASoxF,EAAK32F,WACdv1B,EAAOy0H,GAAUvI,EAAKrvB,SAASpxC,cAC/BopE,GAAYrnG,IAAQinG,EACpBzmF,GAAO,EAER,GAAKlT,EAAS,CAGb,GAAKy5F,EAAS,CACb,KAAQ/3G,GAAM,CAEb,IADAzW,EAAOmmH,EACEnmH,EAAOA,EAAMyW,IACrB,GAAKi4G,EACJ1uH,EAAK82F,SAASpxC,gBAAkBzrD,EACd,IAAlB+F,EAAKkN,SAEL,OAAO,EAIT+N,EAAQxE,EAAe,SAAT7R,IAAoBqW,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAEwzG,EAAU15F,EAAOhI,WAAagI,EAAOgzE,WAG1C0mB,GAAWK,GAkBf,IAHA7mF,GADA4mF,GADA1D,GAHAwD,GAJAC,GADA5uH,EAAO+0B,GACYyxF,KAAcxmH,EAAMwmH,GAAY,KAIzBxmH,EAAK+uH,YAC7BH,EAAY5uH,EAAK+uH,UAAa,KAEXnqH,IAAU,IACZ,KAAQsjH,GAAWiD,EAAO,KACzBA,EAAO,GAC3BnrH,EAAO6uH,GAAa95F,EAAOm1C,WAAY2kD,GAE9B7uH,IAAS6uH,GAAa7uH,GAAQA,EAAMyW,KAG3CwxB,EAAO4mF,EAAY,IAAM5zG,EAAM+8D,OAGhC,GAAuB,IAAlBh4E,EAAKkN,YAAoB+6B,GAAQjoC,IAASmmH,EAAO,CACrDwI,EAAa/pH,GAAS,CAAEsjH,EAAS2G,EAAW5mF,GAC5C,YAuBF,GAjBK6mF,IAYJ7mF,EADA4mF,GADA1D,GAHAwD,GAJAC,GADA5uH,EAAOmmH,GACYK,KAAcxmH,EAAMwmH,GAAY,KAIzBxmH,EAAK+uH,YAC7BH,EAAY5uH,EAAK+uH,UAAa,KAEXnqH,IAAU,IACZ,KAAQsjH,GAAWiD,EAAO,KAMhC,IAATljF,EAEJ,MAASjoC,IAAS6uH,GAAa7uH,GAAQA,EAAMyW,KAC3CwxB,EAAO4mF,EAAY,IAAM5zG,EAAM+8D,UAEzB02C,EACN1uH,EAAK82F,SAASpxC,gBAAkBzrD,EACd,IAAlB+F,EAAKkN,cACH+6B,IAGG6mF,KAKJH,GAJAC,EAAa5uH,EAAMwmH,KAAcxmH,EAAMwmH,GAAY,KAIzBxmH,EAAK+uH,YAC7BH,EAAY5uH,EAAK+uH,UAAa,KAEnBnqH,GAAS,CAAEsjH,EAASjgF,IAG7BjoC,IAASmmH,MAUlB,OADAl+E,GAAQ2e,KACQF,GAAWze,EAAOye,GAAU,GAAKze,EAAOye,GAAS,KAKrE+iE,OAAU,SAAUuF,EAAQhD,GAK3B,IAAIvtH,EACH+kH,EAAK8D,EAAKuB,QAASmG,IAAY1H,EAAK2H,WAAYD,EAAOtpE,gBACtD2hE,GAAOrpH,MAAO,uBAAyBgxH,GAKzC,OAAKxL,EAAIgD,GACDhD,EAAIwI,GAIPxI,EAAGznH,OAAS,GAChB0C,EAAO,CAAEuwH,EAAQA,EAAQ,GAAIhD,GACtB1E,EAAK2H,WAAW1zH,eAAgByzH,EAAOtpE,eAC7C2lE,GAAa,SAAUvmG,EAAMu+B,GAI5B,IAHA,IAAInzC,EACHg/G,EAAU1L,EAAI1+F,EAAMknG,GACpBtyH,EAAIw1H,EAAQnzH,OACLrC,KAEPorB,EADA5U,EAAM1T,EAASsoB,EAAMoqG,EAAQx1H,OACZ2pD,EAASnzC,GAAQg/G,EAAQx1H,MAG5C,SAAUysH,GACT,OAAO3C,EAAI2C,EAAM,EAAG1nH,KAIhB+kH,IAITqF,QAAS,CAERsG,IAAO9D,GAAa,SAAUnsH,GAI7B,IAAIq9C,EAAQ,GACX+G,EAAU,GACV8rE,EAAUtoC,EAAS5nF,EAASP,QAAS+mH,EAAO,OAE7C,OAAO0J,EAAS5I,GACf6E,GAAa,SAAUvmG,EAAMu+B,EAAS67B,EAASz3D,GAM9C,IALA,IAAI0+F,EACHkJ,EAAYD,EAAStqG,EAAM,KAAM2C,EAAK,IACtC/tB,EAAIorB,EAAK/oB,OAGFrC,MACDysH,EAAOkJ,EAAU31H,MACtBorB,EAAKprB,KAAO2pD,EAAQ3pD,GAAKysH,MAI5B,SAAUA,EAAMjnC,EAASz3D,GAKxB,OAJA80B,EAAM,GAAK4pE,EACXiJ,EAAS7yE,EAAO,KAAM90B,EAAK67B,GAE3B/G,EAAM,GAAK,MACH+G,EAAQ00B,SAInB6hC,IAAOwR,GAAa,SAAUnsH,GAC7B,OAAO,SAAUinH,GAChB,OAAOkB,GAAQnoH,EAAUinH,GAAOpqH,OAAS,KAI3C2+D,SAAY2wD,GAAa,SAAU7vF,GAElC,OADAA,EAAOA,EAAK78B,QAASurH,GAAWC,IACzB,SAAUhE,GAChB,OAASA,EAAK35C,aAAezmB,EAASogE,IAAS3pH,QAASg/B,IAAU,KAWpEhjB,KAAQ6yG,GAAc,SAAU7yG,GAM/B,OAJM2wG,EAAY1pH,KAAK+Y,GAAQ,KAC9B6uG,GAAOrpH,MAAO,qBAAuBwa,GAEtCA,EAAOA,EAAK7Z,QAASurH,GAAWC,IAAYzkE,cACrC,SAAUygE,GAChB,IAAImJ,EACJ,GACC,GAAMA,EAAWxH,EAChB3B,EAAK3tG,KACL2tG,EAAKjoD,aAAa,aAAeioD,EAAKjoD,aAAa,QAGnD,OADAoxD,EAAWA,EAAS5pE,iBACAltC,GAA2C,IAAnC82G,EAAS9yH,QAASgc,EAAO,YAE5C2tG,EAAOA,EAAK32F,aAAiC,IAAlB22F,EAAKj5G,UAC3C,OAAO,KAKTrR,OAAU,SAAUsqH,GACnB,IAAIoJ,EAAOzwH,EAAO+N,UAAY/N,EAAO+N,SAAS0iH,KAC9C,OAAOA,GAAQA,EAAKhwH,MAAO,KAAQ4mH,EAAKpyG,IAGzCmyC,KAAQ,SAAUigE,GACjB,OAAOA,IAAS0B,GAGjBvsF,MAAS,SAAU6qF,GAClB,OAAOA,IAASpnH,EAAS27F,iBAAmB37F,EAASywH,UAAYzwH,EAASywH,gBAAkBrJ,EAAKvhH,MAAQuhH,EAAKzuG,OAASyuG,EAAKhrG,WAI7Hw4D,QAAWm4C,IAAsB,GACjCp1G,SAAYo1G,IAAsB,GAElCn2G,QAAW,SAAUwwG,GAGpB,IAAIrvB,EAAWqvB,EAAKrvB,SAASpxC,cAC7B,MAAqB,UAAboxC,KAA0BqvB,EAAKxwG,SAA0B,WAAbmhF,KAA2BqvB,EAAK3rG,UAGrFA,SAAY,SAAU2rG,GAOrB,OAJKA,EAAK32F,YACT22F,EAAK32F,WAAWigG,eAGQ,IAAlBtJ,EAAK3rG,UAIbmgC,MAAS,SAAUwrE,GAKlB,IAAMA,EAAOA,EAAKp5F,WAAYo5F,EAAMA,EAAOA,EAAK12F,YAC/C,GAAK02F,EAAKj5G,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR6nB,OAAU,SAAUoxF,GACnB,OAAQmB,EAAKuB,QAAL,MAAuB1C,IAIhCp0D,OAAU,SAAUo0D,GACnB,OAAO2D,EAAQrqH,KAAM0mH,EAAKrvB,WAG3Bv6C,MAAS,SAAU4pE,GAClB,OAAO0D,EAAQpqH,KAAM0mH,EAAKrvB,WAG3B7iB,OAAU,SAAUkyC,GACnB,IAAIlsH,EAAOksH,EAAKrvB,SAASpxC,cACzB,MAAgB,UAATzrD,GAAkC,WAAdksH,EAAKvhH,MAA8B,WAAT3K,GAGtDuhC,KAAQ,SAAU2qF,GACjB,IAAIhhH,EACJ,MAAuC,UAAhCghH,EAAKrvB,SAASpxC,eACN,SAAdygE,EAAKvhH,OAImC,OAArCO,EAAOghH,EAAKjoD,aAAa,UAA2C,SAAvB/4D,EAAKugD,gBAIvDgB,MAASqlE,GAAuB,WAC/B,MAAO,CAAE,KAGVnlE,KAAQmlE,GAAuB,SAAUE,EAAclwH,GACtD,MAAO,CAAEA,EAAS,KAGnBqqH,GAAM2F,GAAuB,SAAUE,EAAclwH,EAAQiwH,GAC5D,MAAO,CAAEA,EAAW,EAAIA,EAAWjwH,EAASiwH,KAG7C0D,KAAQ3D,GAAuB,SAAUE,EAAclwH,GAEtD,IADA,IAAIrC,EAAI,EACAA,EAAIqC,EAAQrC,GAAK,EACxBuyH,EAAalvH,KAAMrD,GAEpB,OAAOuyH,IAGR0D,IAAO5D,GAAuB,SAAUE,EAAclwH,GAErD,IADA,IAAIrC,EAAI,EACAA,EAAIqC,EAAQrC,GAAK,EACxBuyH,EAAalvH,KAAMrD,GAEpB,OAAOuyH,IAGR2D,GAAM7D,GAAuB,SAAUE,EAAclwH,EAAQiwH,GAM5D,IALA,IAAItyH,EAAIsyH,EAAW,EAClBA,EAAWjwH,EACXiwH,EAAWjwH,EACVA,EACAiwH,IACQtyH,GAAK,GACduyH,EAAalvH,KAAMrD,GAEpB,OAAOuyH,IAGR4D,GAAM9D,GAAuB,SAAUE,EAAclwH,EAAQiwH,GAE5D,IADA,IAAItyH,EAAIsyH,EAAW,EAAIA,EAAWjwH,EAASiwH,IACjCtyH,EAAIqC,GACbkwH,EAAalvH,KAAMrD,GAEpB,OAAOuyH,OAKLpD,QAAL,IAAsBvB,EAAKuB,QAAL,GAGX,CAAEiH,OAAO,EAAMC,UAAU,EAAMvzE,MAAM,EAAMk6C,UAAU,EAAM9xB,OAAO,GAC5E0iD,EAAKuB,QAASnvH,GAAMkyH,GAAmBlyH,GAExC,IAAMA,IAAK,CAAEs2H,QAAQ,EAAMzhG,OAAO,GACjC+4F,EAAKuB,QAASnvH,GAAMmyH,GAAoBnyH,GAIzC,SAASu1H,MAuET,SAASjE,GAAY7jC,GAIpB,IAHA,IAAIztF,EAAI,EACPuyB,EAAMk7D,EAAOprF,OACbmD,EAAW,GACJxF,EAAIuyB,EAAKvyB,IAChBwF,GAAYioF,EAAOztF,GAAGiB,MAEvB,OAAOuE,EAGR,SAASwrH,GAAe0E,EAASa,EAAYzlB,GAC5C,IAAI/zF,EAAMw5G,EAAWx5G,IACpBy5G,EAAOD,EAAW59E,KAClBp3C,EAAMi1H,GAAQz5G,EACd05G,EAAmB3lB,GAAgB,eAARvvG,EAC3Bm1H,EAAWjrC,IAEZ,OAAO8qC,EAAWvpE,MAEjB,SAAUy/D,EAAMjnC,EAASz3D,GACxB,KAAS0+F,EAAOA,EAAM1vG,IACrB,GAAuB,IAAlB0vG,EAAKj5G,UAAkBijH,EAC3B,OAAOf,EAASjJ,EAAMjnC,EAASz3D,GAGjC,OAAO,GAIR,SAAU0+F,EAAMjnC,EAASz3D,GACxB,IAAI4oG,EAAU1B,EAAaC,EAC1B0B,EAAW,CAAEpI,EAASkI,GAGvB,GAAK3oG,GACJ,KAAS0+F,EAAOA,EAAM1vG,IACrB,IAAuB,IAAlB0vG,EAAKj5G,UAAkBijH,IACtBf,EAASjJ,EAAMjnC,EAASz3D,GAC5B,OAAO,OAKV,KAAS0+F,EAAOA,EAAM1vG,IACrB,GAAuB,IAAlB0vG,EAAKj5G,UAAkBijH,EAO3B,GAFAxB,GAJAC,EAAazI,EAAMK,KAAcL,EAAMK,GAAY,KAIzBL,EAAK4I,YAAeH,EAAYzI,EAAK4I,UAAa,IAEvEmB,GAAQA,IAAS/J,EAAKrvB,SAASpxC,cACnCygE,EAAOA,EAAM1vG,IAAS0vG,MAChB,KAAMkK,EAAW1B,EAAa1zH,KACpCo1H,EAAU,KAAQnI,GAAWmI,EAAU,KAAQD,EAG/C,OAAQE,EAAU,GAAMD,EAAU,GAMlC,GAHA1B,EAAa1zH,GAAQq1H,EAGfA,EAAU,GAAMlB,EAASjJ,EAAMjnC,EAASz3D,GAC7C,OAAO,EAMZ,OAAO,GAIV,SAAS8oG,GAAgBC,GACxB,OAAOA,EAASz0H,OAAS,EACxB,SAAUoqH,EAAMjnC,EAASz3D,GAExB,IADA,IAAI/tB,EAAI82H,EAASz0H,OACTrC,KACP,IAAM82H,EAAS92H,GAAIysH,EAAMjnC,EAASz3D,GACjC,OAAO,EAGT,OAAO,GAER+oG,EAAS,GAYX,SAASC,GAAUpB,EAAWrpH,EAAKkF,EAAQg0E,EAASz3D,GAOnD,IANA,IAAI0+F,EACHuK,EAAe,GACfh3H,EAAI,EACJuyB,EAAMojG,EAAUtzH,OAChB40H,EAAgB,MAAP3qH,EAEFtM,EAAIuyB,EAAKvyB,KACVysH,EAAOkJ,EAAU31H,MAChBwR,IAAUA,EAAQi7G,EAAMjnC,EAASz3D,KACtCipG,EAAa3zH,KAAMopH,GACdwK,GACJ3qH,EAAIjJ,KAAMrD,KAMd,OAAOg3H,EAGR,SAASE,GAAYzC,EAAWjvH,EAAUkwH,EAASyB,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAYrK,KAC/BqK,EAAaD,GAAYC,IAErBC,IAAeA,EAAYtK,KAC/BsK,EAAaF,GAAYE,EAAYC,IAE/B1F,GAAa,SAAUvmG,EAAMw+B,EAAS47B,EAASz3D,GACrD,IAAIupG,EAAMt3H,EAAGysH,EACZ8K,EAAS,GACTC,EAAU,GACVC,EAAc7tE,EAAQvnD,OAGtBgqH,EAAQjhG,GA5CX,SAA2B5lB,EAAUynF,EAAUrjC,GAG9C,IAFA,IAAI5pD,EAAI,EACPuyB,EAAM06D,EAAS5qF,OACRrC,EAAIuyB,EAAKvyB,IAChB2tH,GAAQnoH,EAAUynF,EAASjtF,GAAI4pD,GAEhC,OAAOA,EAsCW8tE,CAAkBlyH,GAAY,IAAKggF,EAAQhyE,SAAW,CAAEgyE,GAAYA,EAAS,IAG7FmyC,GAAYlD,IAAerpG,GAAS5lB,EAEnC6mH,EADA0K,GAAU1K,EAAOkL,EAAQ9C,EAAWjvC,EAASz3D,GAG9C6pG,EAAalC,EAEZ0B,IAAgBhsG,EAAOqpG,EAAYgD,GAAeN,GAGjD,GAGAvtE,EACD+tE,EAQF,GALKjC,GACJA,EAASiC,EAAWC,EAAYpyC,EAASz3D,GAIrCopG,EAMJ,IALAG,EAAOP,GAAUa,EAAYJ,GAC7BL,EAAYG,EAAM,GAAI9xC,EAASz3D,GAG/B/tB,EAAIs3H,EAAKj1H,OACDrC,MACDysH,EAAO6K,EAAKt3H,MACjB43H,EAAYJ,EAAQx3H,MAAS23H,EAAWH,EAAQx3H,IAAOysH,IAK1D,GAAKrhG,GACJ,GAAKgsG,GAAc3C,EAAY,CAC9B,GAAK2C,EAAa,CAIjB,IAFAE,EAAO,GACPt3H,EAAI43H,EAAWv1H,OACPrC,MACDysH,EAAOmL,EAAW53H,KAEvBs3H,EAAKj0H,KAAOs0H,EAAU33H,GAAKysH,GAG7B2K,EAAY,KAAOQ,EAAa,GAAKN,EAAMvpG,GAK5C,IADA/tB,EAAI43H,EAAWv1H,OACPrC,MACDysH,EAAOmL,EAAW53H,MACtBs3H,EAAOF,EAAat0H,EAASsoB,EAAMqhG,GAAS8K,EAAOv3H,KAAO,IAE3DorB,EAAKksG,KAAU1tE,EAAQ0tE,GAAQ7K,UAOlCmL,EAAab,GACZa,IAAehuE,EACdguE,EAAWvgH,OAAQogH,EAAaG,EAAWv1H,QAC3Cu1H,GAEGR,EACJA,EAAY,KAAMxtE,EAASguE,EAAY7pG,GAEvC1qB,EAAKd,MAAOqnD,EAASguE,KAMzB,SAASC,GAAmBpqC,GAwB3B,IAvBA,IAAIqqC,EAAcpC,EAASv9D,EAC1B5lC,EAAMk7D,EAAOprF,OACb01H,EAAkBnK,EAAKyG,SAAU5mC,EAAO,GAAGviF,MAC3C8sH,EAAmBD,GAAmBnK,EAAKyG,SAAS,KACpDr0H,EAAI+3H,EAAkB,EAAI,EAG1BE,EAAejH,GAAe,SAAUvE,GACvC,OAAOA,IAASqL,GACdE,GAAkB,GACrBE,EAAkBlH,GAAe,SAAUvE,GAC1C,OAAO3pH,EAASg1H,EAAcrL,IAAU,GACtCuL,GAAkB,GACrBlB,EAAW,CAAE,SAAUrK,EAAMjnC,EAASz3D,GACrC,IAAIu+F,GAASyL,IAAqBhqG,GAAOy3D,IAAYuoC,MACnD+J,EAAetyC,GAAShyE,SACxBykH,EAAcxL,EAAMjnC,EAASz3D,GAC7BmqG,EAAiBzL,EAAMjnC,EAASz3D,IAGlC,OADA+pG,EAAe,KACRxL,IAGDtsH,EAAIuyB,EAAKvyB,IAChB,GAAM01H,EAAU9H,EAAKyG,SAAU5mC,EAAOztF,GAAGkL,MACxC4rH,EAAW,CAAE9F,GAAc6F,GAAgBC,GAAYpB,QACjD,CAIN,IAHAA,EAAU9H,EAAKp8G,OAAQi8E,EAAOztF,GAAGkL,MAAO3I,MAAO,KAAMkrF,EAAOztF,GAAG2pD,UAGjDmjE,GAAY,CAGzB,IADA30D,IAAMn4D,EACEm4D,EAAI5lC,IACNq7F,EAAKyG,SAAU5mC,EAAOt1B,GAAGjtD,MADditD,KAKjB,OAAO++D,GACNl3H,EAAI,GAAK62H,GAAgBC,GACzB92H,EAAI,GAAKsxH,GAER7jC,EAAO5nF,MAAO,EAAG7F,EAAI,GAAIgU,OAAO,CAAE/S,MAAgC,MAAzBwsF,EAAQztF,EAAI,GAAIkL,KAAe,IAAM,MAC7EjG,QAAS+mH,EAAO,MAClB0J,EACA11H,EAAIm4D,GAAK0/D,GAAmBpqC,EAAO5nF,MAAO7F,EAAGm4D,IAC7CA,EAAI5lC,GAAOslG,GAAoBpqC,EAASA,EAAO5nF,MAAOsyD,IACtDA,EAAI5lC,GAAO++F,GAAY7jC,IAGzBqpC,EAASzzH,KAAMqyH,GAIjB,OAAOmB,GAAgBC,GA8RxB,OA9mBAvB,GAAW3zH,UAAYgsH,EAAK7hF,QAAU6hF,EAAKuB,QAC3CvB,EAAK2H,WAAa,IAAIA,GAEtBzH,EAAWH,GAAOG,SAAW,SAAUtoH,EAAU2yH,GAChD,IAAI3C,EAAS9gG,EAAO+4D,EAAQviF,EAC3BktH,EAAO9wE,EAAQ+wE,EACfC,EAAS3J,EAAYnpH,EAAW,KAEjC,GAAK8yH,EACJ,OAAOH,EAAY,EAAIG,EAAOzyH,MAAO,GAOtC,IAJAuyH,EAAQ5yH,EACR8hD,EAAS,GACT+wE,EAAazK,EAAK6G,UAEV2D,GAAQ,CAyBf,IAAMltH,KAtBAsqH,KAAY9gG,EAAQ26F,EAAO1hC,KAAMyqC,MACjC1jG,IAEJ0jG,EAAQA,EAAMvyH,MAAO6uB,EAAM,GAAGryB,SAAY+1H,GAE3C9wE,EAAOjkD,KAAOoqF,EAAS,KAGxB+nC,GAAU,GAGJ9gG,EAAQ46F,EAAa3hC,KAAMyqC,MAChC5C,EAAU9gG,EAAMilC,QAChB8zB,EAAOpqF,KAAK,CACXpC,MAAOu0H,EAEPtqH,KAAMwpB,EAAM,GAAGzvB,QAAS+mH,EAAO,OAEhCoM,EAAQA,EAAMvyH,MAAO2vH,EAAQnzH,SAIhBurH,EAAKp8G,SACZkjB,EAAQg7F,EAAWxkH,GAAOyiF,KAAMyqC,KAAcC,EAAYntH,MAC9DwpB,EAAQ2jG,EAAYntH,GAAQwpB,MAC7B8gG,EAAU9gG,EAAMilC,QAChB8zB,EAAOpqF,KAAK,CACXpC,MAAOu0H,EACPtqH,KAAMA,EACNy+C,QAASj1B,IAEV0jG,EAAQA,EAAMvyH,MAAO2vH,EAAQnzH,SAI/B,IAAMmzH,EACL,MAOF,OAAO2C,EACNC,EAAM/1H,OACN+1H,EACCzK,GAAOrpH,MAAOkB,GAEdmpH,EAAYnpH,EAAU8hD,GAASzhD,MAAO,IA+XzCunF,EAAUugC,GAAOvgC,QAAU,SAAU5nF,EAAUkvB,GAC9C,IAAI10B,EACHu4H,EAAc,GACdC,EAAkB,GAClBF,EAAS1J,EAAeppH,EAAW,KAEpC,IAAM8yH,EAAS,CAMd,IAJM5jG,IACLA,EAAQo5F,EAAUtoH,IAEnBxF,EAAI00B,EAAMryB,OACFrC,MACPs4H,EAAST,GAAmBnjG,EAAM10B,KACrB8sH,GACZyL,EAAYl1H,KAAMi1H,GAElBE,EAAgBn1H,KAAMi1H,IAKxBA,EAAS1J,EAAeppH,EArI1B,SAAmCgzH,EAAiBD,GACnD,IAAIE,EAAQF,EAAYl2H,OAAS,EAChCq2H,EAAYF,EAAgBn2H,OAAS,EACrCs2H,EAAe,SAAUvtG,EAAMo6D,EAASz3D,EAAK67B,EAASgvE,GACrD,IAAInM,EAAMt0D,EAAGu9D,EACZmD,EAAe,EACf74H,EAAI,IACJ21H,EAAYvqG,GAAQ,GACpB0tG,EAAa,GACbC,EAAgBhL,EAEhB1B,EAAQjhG,GAAQstG,GAAa9K,EAAKl7F,KAAL,IAAkB,IAAKkmG,GAEpDI,EAAiBxK,GAA4B,MAAjBuK,EAAwB,EAAIpgH,KAAKE,UAAY,GACzE0Z,EAAM85F,EAAMhqH,OASb,IAPKu2H,IACJ7K,EAAmBvoC,IAAYngF,GAAYmgF,GAAWozC,GAM/C54H,IAAMuyB,GAA4B,OAApBk6F,EAAOJ,EAAMrsH,IAAaA,IAAM,CACrD,GAAK04H,GAAajM,EAAO,CAMxB,IALAt0D,EAAI,EACEqtB,GAAWinC,EAAKlmH,gBAAkBlB,IACvC6oH,EAAazB,GACb1+F,GAAOqgG,GAECsH,EAAU8C,EAAgBrgE,MAClC,GAAKu9D,EAASjJ,EAAMjnC,GAAWngF,EAAU0oB,GAAO,CAC/C67B,EAAQvmD,KAAMopH,GACd,MAGGmM,IACJpK,EAAUwK,GAKPP,KAEEhM,GAAQiJ,GAAWjJ,IACxBoM,IAIIztG,GACJuqG,EAAUtyH,KAAMopH,IAgBnB,GATAoM,GAAgB74H,EASXy4H,GAASz4H,IAAM64H,EAAe,CAElC,IADA1gE,EAAI,EACKu9D,EAAU6C,EAAYpgE,MAC9Bu9D,EAASC,EAAWmD,EAAYtzC,EAASz3D,GAG1C,GAAK3C,EAAO,CAEX,GAAKytG,EAAe,EACnB,KAAQ74H,KACA21H,EAAU31H,IAAM84H,EAAW94H,KACjC84H,EAAW94H,GAAKs+E,EAAIn+E,KAAMypD,IAM7BkvE,EAAa/B,GAAU+B,GAIxBz1H,EAAKd,MAAOqnD,EAASkvE,GAGhBF,IAAcxtG,GAAQ0tG,EAAWz2H,OAAS,GAC5Cw2H,EAAeN,EAAYl2H,OAAW,GAExCsrH,GAAOqG,WAAYpqE,GAUrB,OALKgvE,IACJpK,EAAUwK,EACVjL,EAAmBgL,GAGbpD,GAGT,OAAO8C,EACN9G,GAAcgH,GACdA,EAyBkCM,CAA0BT,EAAiBD,KAGtE/yH,SAAWA,EAEnB,OAAO8yH,GAYR5mF,EAASi8E,GAAOj8E,OAAS,SAAUlsC,EAAUggF,EAAS57B,EAASx+B,GAC9D,IAAIprB,EAAGytF,EAAQgB,EAAOvjF,EAAMwnB,EAC3BwmG,EAA+B,mBAAb1zH,GAA2BA,EAC7CkvB,GAAStJ,GAAQ0iG,EAAWtoH,EAAW0zH,EAAS1zH,UAAYA,GAM7D,GAJAokD,EAAUA,GAAW,GAIC,IAAjBl1B,EAAMryB,OAAe,CAIzB,IADAorF,EAAS/4D,EAAM,GAAKA,EAAM,GAAG7uB,MAAO,IACxBxD,OAAS,GAAkC,QAA5BosF,EAAQhB,EAAO,IAAIviF,MACvB,IAArBs6E,EAAQhyE,UAAkB46G,GAAkBR,EAAKyG,SAAU5mC,EAAO,GAAGviF,MAAS,CAG/E,KADAs6E,GAAYooC,EAAKl7F,KAAL,GAAiB+7D,EAAM9kC,QAAQ,GAAG1kD,QAAQurH,GAAWC,IAAYjrC,IAAa,IAAK,IAE9F,OAAO57B,EAGIsvE,IACX1zC,EAAUA,EAAQ1vD,YAGnBtwB,EAAWA,EAASK,MAAO4nF,EAAO9zB,QAAQ14D,MAAMoB,QAKjD,IADArC,EAAI0vH,EAAS,aAAiB3pH,KAAMP,GAAa,EAAIioF,EAAOprF,OACpDrC,MACPyuF,EAAQhB,EAAOztF,IAGV4tH,EAAKyG,SAAWnpH,EAAOujF,EAAMvjF,QAGlC,IAAMwnB,EAAOk7F,EAAKl7F,KAAMxnB,MAEjBkgB,EAAOsH,EACZ+7D,EAAM9kC,QAAQ,GAAG1kD,QAASurH,GAAWC,IACrCF,GAASxqH,KAAM0nF,EAAO,GAAGviF,OAAUqmH,GAAa/rC,EAAQ1vD,aAAgB0vD,IACpE,CAKJ,GAFAiI,EAAOp2E,OAAQrX,EAAG,KAClBwF,EAAW4lB,EAAK/oB,QAAUivH,GAAY7jC,IAGrC,OADApqF,EAAKd,MAAOqnD,EAASx+B,GACdw+B,EAGR,OAeJ,OAPEsvE,GAAY9rC,EAAS5nF,EAAUkvB,IAChCtJ,EACAo6D,GACC4oC,EACDxkE,GACC47B,GAAW+qC,GAASxqH,KAAMP,IAAc+rH,GAAa/rC,EAAQ1vD,aAAgB0vD,GAExE57B,GAMRyhE,EAAQ8I,WAAarH,EAAQv6G,MAAM,IAAIuuB,KAAMguF,GAAYrrH,KAAK,MAAQqpH,EAItEzB,EAAQ6I,mBAAqBjG,EAG7BC,IAIA7C,EAAQoI,aAAe7B,GAAO,SAAUt+F,GAEvC,OAA0E,EAAnEA,EAAGmyD,wBAAyBpgF,EAASC,cAAc,eAMrDssH,GAAO,SAAUt+F,GAEtB,OADAA,EAAGmP,UAAY,mBAC+B,MAAvCnP,EAAGD,WAAWmxC,aAAa,WAElCqtD,GAAW,yBAA0B,SAAUpF,EAAMlsH,EAAMstH,GAC1D,IAAMA,EACL,OAAOpB,EAAKjoD,aAAcjkE,EAA6B,SAAvBA,EAAKyrD,cAA2B,EAAI,KAOjEq/D,EAAQ94C,YAAeq/C,GAAO,SAAUt+F,GAG7C,OAFAA,EAAGmP,UAAY,WACfnP,EAAGD,WAAW+K,aAAc,QAAS,IACY,KAA1C9K,EAAGD,WAAWmxC,aAAc,YAEnCqtD,GAAW,QAAS,SAAUpF,EAAMlsH,EAAMstH,GACzC,IAAMA,GAAyC,UAAhCpB,EAAKrvB,SAASpxC,cAC5B,OAAOygE,EAAKlsB,eAOTqxB,GAAO,SAAUt+F,GACtB,OAAsC,MAA/BA,EAAGkxC,aAAa,eAEvBqtD,GAAW7C,EAAU,SAAUvC,EAAMlsH,EAAMstH,GAC1C,IAAI97G,EACJ,IAAM87G,EACL,OAAwB,IAAjBpB,EAAMlsH,GAAkBA,EAAKyrD,eACjCj6C,EAAM06G,EAAKsG,iBAAkBxyH,KAAWwR,EAAIgiH,UAC7ChiH,EAAI9Q,MACL,OAKG0sH,GA1sEN,CA4sEGvoH,GAIJ0mH,EAAOp5F,KAAOi7F,EACd7B,EAAO+H,KAAOlG,EAAOngE,UAGrBs+D,EAAO+H,KAAM,KAAQ/H,EAAO+H,KAAK1E,QACjCrD,EAAOkI,WAAalI,EAAO/mC,OAAS4oC,EAAOqG,WAC3ClI,EAAOhqF,KAAO6rF,EAAOthE,QACrBy/D,EAAOqN,SAAWxL,EAAOE,MACzB/B,EAAO9qD,SAAW2sD,EAAO3sD,SACzB8qD,EAAOsN,eAAiBzL,EAAO37B,OAK/B,IAAIj1E,EAAM,SAAU0vG,EAAM1vG,EAAKs8G,GAI9B,IAHA,IAAI7D,EAAU,GACb8D,OAAqB31H,IAAV01H,GAEF5M,EAAOA,EAAM1vG,KAA6B,IAAlB0vG,EAAKj5G,UACtC,GAAuB,IAAlBi5G,EAAKj5G,SAAiB,CAC1B,GAAK8lH,GAAYxN,EAAQW,GAAO97G,GAAI0oH,GACnC,MAED7D,EAAQnyH,KAAMopH,GAGhB,OAAO+I,GAIJ+D,EAAW,SAAU93H,EAAGgrH,GAG3B,IAFA,IAAI+I,EAAU,GAEN/zH,EAAGA,EAAIA,EAAEs0B,YACI,IAAft0B,EAAE+R,UAAkB/R,IAAMgrH,GAC9B+I,EAAQnyH,KAAM5B,GAIhB,OAAO+zH,GAIJgE,EAAgB1N,EAAO+H,KAAKn/F,MAAMu7F,aAItC,SAAS7yB,EAAUqvB,EAAMlsH,GAEvB,OAAOksH,EAAKrvB,UAAYqvB,EAAKrvB,SAASpxC,gBAAkBzrD,EAAKyrD,cAG/D,IAAIytE,EAAe,kEAKnB,SAASC,EAAQ5F,EAAU6F,EAAWlE,GACrC,OAAKnK,EAAYqO,GACT7N,EAAOyB,KAAMuG,EAAU,SAAUrH,EAAMzsH,GAC7C,QAAS25H,EAAUx5H,KAAMssH,EAAMzsH,EAAGysH,KAAWgJ,IAK1CkE,EAAUnmH,SACPs4G,EAAOyB,KAAMuG,EAAU,SAAUrH,GACvC,OAASA,IAASkN,IAAgBlE,IAKV,iBAAdkE,EACJ7N,EAAOyB,KAAMuG,EAAU,SAAUrH,GACvC,OAAS3pH,EAAQ3C,KAAMw5H,EAAWlN,IAAU,IAAQgJ,IAK/C3J,EAAOt6G,OAAQmoH,EAAW7F,EAAU2B,GAG5C3J,EAAOt6G,OAAS,SAAUqiH,EAAMxH,EAAOoJ,GACtC,IAAIhJ,EAAOJ,EAAO,GAMlB,OAJKoJ,IACJ5B,EAAO,QAAUA,EAAO,KAGH,IAAjBxH,EAAMhqH,QAAkC,IAAlBoqH,EAAKj5G,SACxBs4G,EAAOp5F,KAAKugG,gBAAiBxG,EAAMoH,GAAS,CAAEpH,GAAS,GAGxDX,EAAOp5F,KAAKi3B,QAASkqE,EAAM/H,EAAOyB,KAAMlB,EAAO,SAAUI,GAC/D,OAAyB,IAAlBA,EAAKj5G,aAIds4G,EAAOhC,GAAGv9G,OAAQ,CACjBmmB,KAAM,SAAUltB,GACf,IAAIxF,EAAGssH,EACN/5F,EAAM/vB,KAAKH,OACXuyB,EAAOpyB,KAER,GAAyB,iBAAbgD,EACX,OAAOhD,KAAK4pH,UAAWN,EAAQtmH,GAAWgM,OAAQ,WACjD,IAAMxR,EAAI,EAAGA,EAAIuyB,EAAKvyB,IACrB,GAAK8rH,EAAO9qD,SAAUpsC,EAAM50B,GAAKwC,MAChC,OAAO,KAQX,IAFA8pH,EAAM9pH,KAAK4pH,UAAW,IAEhBpsH,EAAI,EAAGA,EAAIuyB,EAAKvyB,IACrB8rH,EAAOp5F,KAAMltB,EAAUovB,EAAM50B,GAAKssH,GAGnC,OAAO/5F,EAAM,EAAIu5F,EAAOkI,WAAY1H,GAAQA,GAE7C96G,OAAQ,SAAUhM,GACjB,OAAOhD,KAAK4pH,UAAWsN,EAAQl3H,KAAMgD,GAAY,IAAI,KAEtDiwH,IAAK,SAAUjwH,GACd,OAAOhD,KAAK4pH,UAAWsN,EAAQl3H,KAAMgD,GAAY,IAAI,KAEtDmL,GAAI,SAAUnL,GACb,QAASk0H,EACRl3H,KAIoB,iBAAbgD,GAAyBg0H,EAAczzH,KAAMP,GACnDsmH,EAAQtmH,GACRA,GAAY,IACb,GACCnD,UASJ,IAAIu3H,EAMHtJ,EAAa,uCAENxE,EAAOhC,GAAGiC,KAAO,SAAUvmH,EAAUggF,EAASh5B,GACpD,IAAI93B,EAAO+3F,EAGX,IAAMjnH,EACL,OAAOhD,KAQR,GAHAgqD,EAAOA,GAAQotE,EAGU,iBAAbp0H,EAAwB,CAanC,KAPCkvB,EALsB,MAAlBlvB,EAAU,IACsB,MAApCA,EAAUA,EAASnD,OAAS,IAC5BmD,EAASnD,QAAU,EAGX,CAAE,KAAMmD,EAAU,MAGlB8qH,EAAW3iC,KAAMnoF,MAIVkvB,EAAO,IAAQ8wD,EA6CxB,OAAMA,GAAWA,EAAQ0mC,QACtB1mC,GAAWh5B,GAAO95B,KAAMltB,GAK1BhD,KAAKwB,YAAawhF,GAAU9yD,KAAMltB,GAhDzC,GAAKkvB,EAAO,GAAM,CAYjB,GAXA8wD,EAAUA,aAAmBsmC,EAAStmC,EAAS,GAAMA,EAIrDsmC,EAAOpsD,MAAOl9D,KAAMspH,EAAO+N,UAC1BnlG,EAAO,GACP8wD,GAAWA,EAAQhyE,SAAWgyE,EAAQj/E,eAAiBi/E,EAAUngF,GACjE,IAIIo0H,EAAW1zH,KAAM2uB,EAAO,KAASo3F,EAAOe,cAAernC,GAC3D,IAAM9wD,KAAS8wD,EAGT8lC,EAAY9oH,KAAMkyB,IACtBlyB,KAAMkyB,GAAS8wD,EAAS9wD,IAIxBlyB,KAAKiJ,KAAMipB,EAAO8wD,EAAS9wD,IAK9B,OAAOlyB,KAYP,OARAiqH,EAAOpnH,EAASW,eAAgB0uB,EAAO,OAKtClyB,KAAM,GAAMiqH,EACZjqH,KAAKH,OAAS,GAERG,KAcH,OAAKgD,EAASgO,UACpBhR,KAAM,GAAMgD,EACZhD,KAAKH,OAAS,EACPG,MAII8oH,EAAY9lH,QACD7B,IAAf6oD,EAAKstE,MACXttE,EAAKstE,MAAOt0H,GAGZA,EAAUsmH,GAGLA,EAAOsB,UAAW5nH,EAAUhD,QAIhCZ,UAAYkqH,EAAOhC,GAGxB8P,EAAa9N,EAAQzmH,GAGrB,IAAI00H,EAAe,iCAGlBC,EAAmB,CAClBtvH,UAAU,EACVu3B,UAAU,EACV0W,MAAM,EACNE,MAAM,GAoFR,SAASosD,EAAS+sB,EAAKj1G,GACtB,MAAUi1G,EAAMA,EAAKj1G,KAA4B,IAAjBi1G,EAAIx+G,WACpC,OAAOw+G,EAnFRlG,EAAOhC,GAAGv9G,OAAQ,CACjB4zG,IAAK,SAAUh+G,GACd,IAAI83H,EAAUnO,EAAQ3pH,EAAQK,MAC7BvC,EAAIg6H,EAAQ53H,OAEb,OAAOG,KAAKgP,OAAQ,WAEnB,IADA,IAAIxR,EAAI,EACAA,EAAIC,EAAGD,IACd,GAAK8rH,EAAO9qD,SAAUx+D,KAAMy3H,EAASj6H,IACpC,OAAO,KAMXk6H,QAAS,SAAU1sE,EAAWg4B,GAC7B,IAAIwsC,EACHhyH,EAAI,EACJC,EAAIuC,KAAKH,OACTmzH,EAAU,GACVyE,EAA+B,iBAAdzsE,GAA0Bs+D,EAAQt+D,GAGpD,IAAMgsE,EAAczzH,KAAMynD,GACzB,KAAQxtD,EAAIC,EAAGD,IACd,IAAMgyH,EAAMxvH,KAAMxC,GAAKgyH,GAAOA,IAAQxsC,EAASwsC,EAAMA,EAAIl8F,WAGxD,GAAKk8F,EAAIx+G,SAAW,KAAQymH,EAC3BA,EAAQxkG,MAAOu8F,IAAS,EAGP,IAAjBA,EAAIx+G,UACHs4G,EAAOp5F,KAAKugG,gBAAiBjB,EAAKxkE,IAAgB,CAEnDgoE,EAAQnyH,KAAM2uH,GACd,MAMJ,OAAOxvH,KAAK4pH,UAAWoJ,EAAQnzH,OAAS,EAAIypH,EAAOkI,WAAYwB,GAAYA,IAI5E//F,MAAO,SAAUg3F,GAGhB,OAAMA,EAKe,iBAATA,EACJ3pH,EAAQ3C,KAAM2rH,EAAQW,GAAQjqH,KAAM,IAIrCM,EAAQ3C,KAAMqC,KAGpBiqH,EAAKP,OAASO,EAAM,GAAMA,GAZjBjqH,KAAM,IAAOA,KAAM,GAAIszB,WAAetzB,KAAKwqD,QAAQmtE,UAAU93H,QAAU,GAgBlF2U,IAAK,SAAUxR,EAAUggF,GACxB,OAAOhjF,KAAK4pH,UACXN,EAAOkI,WACNlI,EAAOpsD,MAAOl9D,KAAK3B,MAAOirH,EAAQtmH,EAAUggF,OAK/C40C,QAAS,SAAU50H,GAClB,OAAOhD,KAAKwU,IAAiB,MAAZxR,EAChBhD,KAAK+pH,WAAa/pH,KAAK+pH,WAAW/6G,OAAQhM,OAU7CsmH,EAAOU,KAAM,CACZnxF,OAAQ,SAAUoxF,GACjB,IAAIpxF,EAASoxF,EAAK32F,WAClB,OAAOuF,GAA8B,KAApBA,EAAO7nB,SAAkB6nB,EAAS,MAEpDg/F,QAAS,SAAU5N,GAClB,OAAO1vG,EAAK0vG,EAAM,eAEnB6N,aAAc,SAAU7N,EAAMzsH,EAAGq5H,GAChC,OAAOt8G,EAAK0vG,EAAM,aAAc4M,IAEjC1gF,KAAM,SAAU8zE,GACf,OAAOxnB,EAASwnB,EAAM,gBAEvB5zE,KAAM,SAAU4zE,GACf,OAAOxnB,EAASwnB,EAAM,oBAEvB8N,QAAS,SAAU9N,GAClB,OAAO1vG,EAAK0vG,EAAM,gBAEnB0N,QAAS,SAAU1N,GAClB,OAAO1vG,EAAK0vG,EAAM,oBAEnB+N,UAAW,SAAU/N,EAAMzsH,EAAGq5H,GAC7B,OAAOt8G,EAAK0vG,EAAM,cAAe4M,IAElCoB,UAAW,SAAUhO,EAAMzsH,EAAGq5H,GAC7B,OAAOt8G,EAAK0vG,EAAM,kBAAmB4M,IAEtCE,SAAU,SAAU9M,GACnB,OAAO8M,GAAY9M,EAAK32F,YAAc,IAAKzC,WAAYo5F,IAExD/hH,SAAU,SAAU+hH,GACnB,OAAO8M,EAAU9M,EAAKp5F,aAEvB4O,SAAU,SAAUwqF,GACnB,YAAqC,IAAzBA,EAAKiO,gBACTjO,EAAKiO,iBAMRt9B,EAAUqvB,EAAM,cACpBA,EAAOA,EAAKlwG,SAAWkwG,GAGjBX,EAAOpsD,MAAO,GAAI+sD,EAAKj8C,eAE7B,SAAUjwE,EAAMupH,GAClBgC,EAAOhC,GAAIvpH,GAAS,SAAU84H,EAAO7zH,GACpC,IAAIgwH,EAAU1J,EAAOx/G,IAAK9J,KAAMsnH,EAAIuP,GAuBpC,MArB0B,UAArB94H,EAAKsF,OAAQ,KACjBL,EAAW6zH,GAGP7zH,GAAgC,iBAAbA,IACvBgwH,EAAU1J,EAAOt6G,OAAQhM,EAAUgwH,IAG/BhzH,KAAKH,OAAS,IAGZ23H,EAAkBz5H,IACvBurH,EAAOkI,WAAYwB,GAIfuE,EAAah0H,KAAMxF,IACvBi1H,EAAQ3rF,WAIHrnC,KAAK4pH,UAAWoJ,MAGzB,IAAImF,EAAkB,oBAsOtB,SAASC,EAAUrrC,GAClB,OAAOA,EAER,SAASsrC,EAASC,GACjB,MAAMA,EAGP,SAASC,EAAY95H,EAAO83B,EAASC,EAAQgiG,GAC5C,IAAI/qH,EAEJ,IAGMhP,GAASqqH,EAAcr7G,EAAShP,EAAMg6H,SAC1ChrH,EAAO9P,KAAMc,GAAQwqF,KAAM1yD,GAAUmiG,KAAMliG,GAGhC/3B,GAASqqH,EAAcr7G,EAAShP,EAAMkrC,MACjDl8B,EAAO9P,KAAMc,EAAO83B,EAASC,GAQ7BD,EAAQx2B,WAAOoB,EAAW,CAAE1C,GAAQ4E,MAAOm1H,IAM3C,MAAQ/5H,GAIT+3B,EAAOz2B,WAAOoB,EAAW,CAAE1C,KAvO7B6qH,EAAOqP,UAAY,SAAU9wH,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAI3I,EAAS,GAIb,OAHAoqH,EAAOU,KAAMniH,EAAQqqB,MAAOimG,IAAmB,GAAI,SAAU3lH,EAAGomH,GAC/D15H,EAAQ05H,IAAS,IAEX15H,EA8BN25H,CAAehxH,GACfyhH,EAAOv/G,OAAQ,GAAIlC,GAEpB,IACCixH,EAGAC,EAGAC,EAGAC,EAGA18G,EAAO,GAGPk7F,EAAQ,GAGRyhB,GAAe,EAGfC,EAAO,WAQN,IALAF,EAASA,GAAUpxH,EAAQuxH,KAI3BJ,EAAQF,GAAS,EACTrhB,EAAM53G,OAAQq5H,GAAe,EAEpC,IADAH,EAASthB,EAAMtgD,UACL+hE,EAAc38G,EAAK1c,SAGmC,IAA1D0c,EAAM28G,GAAcn5H,MAAOg5H,EAAQ,GAAKA,EAAQ,KACpDlxH,EAAQwxH,cAGRH,EAAc38G,EAAK1c,OACnBk5H,GAAS,GAMNlxH,EAAQkxH,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIH18G,EADIw8G,EACG,GAIA,KAMV3mG,EAAO,CAGN5d,IAAK,WA2BJ,OA1BK+H,IAGCw8G,IAAWD,IACfI,EAAc38G,EAAK1c,OAAS,EAC5B43G,EAAM52G,KAAMk4H,IAGb,SAAWvkH,EAAKjS,GACf+mH,EAAOU,KAAMznH,EAAM,SAAUiQ,EAAG7R,GAC1BmoH,EAAYnoH,GACVkH,EAAQ06E,QAAWnwD,EAAKurF,IAAKh9G,IAClC4b,EAAK1b,KAAMF,GAEDA,GAAOA,EAAId,QAA4B,WAAlBwpH,EAAQ1oH,IAGxC6T,EAAK7T,KATR,CAYKf,WAEAm5H,IAAWD,GACfK,KAGKn5H,MAIRoI,OAAQ,WAYP,OAXAkhH,EAAOU,KAAMpqH,UAAW,SAAU4S,EAAG7R,GAEpC,IADA,IAAIsyB,GACMA,EAAQq2F,EAAOuB,QAASlqH,EAAK4b,EAAM0W,KAAa,GACzD1W,EAAK1H,OAAQoe,EAAO,GAGfA,GAASimG,GACbA,MAIIl5H,MAKR29G,IAAK,SAAU2J,GACd,OAAOA,EACNgC,EAAOuB,QAASvD,EAAI/qG,IAAU,EAC9BA,EAAK1c,OAAS,GAIhB4+C,MAAO,WAIN,OAHKliC,IACJA,EAAO,IAEDvc,MAMRgwD,QAAS,WAGR,OAFAipE,EAASxhB,EAAQ,GACjBl7F,EAAOw8G,EAAS,GACT/4H,MAERwa,SAAU,WACT,OAAQ+B,GAMT+8G,KAAM,WAKL,OAJAL,EAASxhB,EAAQ,GACXshB,GAAWD,IAChBv8G,EAAOw8G,EAAS,IAEV/4H,MAERi5H,OAAQ,WACP,QAASA,GAIVM,SAAU,SAAUv2C,EAASzgF,GAS5B,OARM02H,IAEL12H,EAAO,CAAEygF,GADTzgF,EAAOA,GAAQ,IACQc,MAAQd,EAAKc,QAAUd,GAC9Ck1G,EAAM52G,KAAM0B,GACNu2H,GACLK,KAGKn5H,MAIRm5H,KAAM,WAEL,OADA/mG,EAAKmnG,SAAUv5H,KAAMJ,WACdI,MAIRg5H,MAAO,WACN,QAASA,IAIZ,OAAO5mG,GA4CRk3F,EAAOv/G,OAAQ,CAEdyvH,SAAU,SAAU75G,GACnB,IAAI85G,EAAS,CAIX,CAAE,SAAU,WAAYnQ,EAAOqP,UAAW,UACzCrP,EAAOqP,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQrP,EAAOqP,UAAW,eACtCrP,EAAOqP,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQrP,EAAOqP,UAAW,eACrCrP,EAAOqP,UAAW,eAAiB,EAAG,aAExC/tH,EAAQ,UACR6tH,EAAU,CACT7tH,MAAO,WACN,OAAOA,GAER8uH,OAAQ,WAEP,OADAC,EAAS1wC,KAAMrpF,WAAY84H,KAAM94H,WAC1BI,MAER4pC,MAAS,SAAU09E,GAClB,OAAOmR,EAAQ9uF,KAAM,KAAM29E,IAI5BsS,KAAM,WACL,IAAIC,EAAMj6H,UAEV,OAAO0pH,EAAOkQ,SAAU,SAAUM,GACjCxQ,EAAOU,KAAMyP,EAAQ,SAAUj8H,EAAGu8H,GAGjC,IAAIzS,EAAKwB,EAAY+Q,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,IAAO,WACvB,IAAIC,EAAW1S,GAAMA,EAAGvnH,MAAOC,KAAMJ,WAChCo6H,GAAYlR,EAAYkR,EAASvB,SACrCuB,EAASvB,UACP/1D,SAAUo3D,EAASrxH,QACnBwgF,KAAM6wC,EAASvjG,SACfmiG,KAAMoB,EAAStjG,QAEjBsjG,EAAUC,EAAO,GAAM,QACtB/5H,KACAsnH,EAAK,CAAE0S,GAAap6H,eAKxBi6H,EAAM,OACHpB,WAEL9uF,KAAM,SAAUswF,EAAaC,EAAYC,GACxC,IAAIpgE,EAAW,EACf,SAASxjC,EAAS0jC,EAAO0/D,EAAUj3C,EAAS03C,GAC3C,OAAO,WACN,IAAIxjH,EAAO5W,KACVuC,EAAO3C,UACPy6H,EAAa,WACZ,IAAIL,EAAUrwF,EAKd,KAAKswB,EAAQF,GAAb,CAQA,IAJAigE,EAAWt3C,EAAQ3iF,MAAO6W,EAAMrU,MAIdo3H,EAASlB,UAC1B,MAAM,IAAIjpH,UAAW,4BAOtBm6B,EAAOqwF,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAASrwF,KAGLm/E,EAAYn/E,GAGXywF,EACJzwF,EAAKhsC,KACJq8H,EACAzjG,EAASwjC,EAAU4/D,EAAUvB,EAAUgC,GACvC7jG,EAASwjC,EAAU4/D,EAAUtB,EAAS+B,KAOvCrgE,IAEApwB,EAAKhsC,KACJq8H,EACAzjG,EAASwjC,EAAU4/D,EAAUvB,EAAUgC,GACvC7jG,EAASwjC,EAAU4/D,EAAUtB,EAAS+B,GACtC7jG,EAASwjC,EAAU4/D,EAAUvB,EAC5BuB,EAASW,eASP53C,IAAY01C,IAChBxhH,OAAOzV,EACPoB,EAAO,CAAEy3H,KAKRI,GAAWT,EAASY,aAAe3jH,EAAMrU,MAK7Ci4H,EAAUJ,EACTC,EACA,WACC,IACCA,IACC,MAAQj4H,GAEJknH,EAAOkQ,SAASiB,eACpBnR,EAAOkQ,SAASiB,cAAer4H,EAC9Bo4H,EAAQE,YAMLzgE,EAAQ,GAAKF,IAIZ2oB,IAAY21C,IAChBzhH,OAAOzV,EACPoB,EAAO,CAAEH,IAGVu3H,EAASgB,WAAY/jH,EAAMrU,MAS3B03D,EACJugE,KAKKlR,EAAOkQ,SAASoB,eACpBJ,EAAQE,WAAapR,EAAOkQ,SAASoB,gBAEtCh4H,EAAOyJ,WAAYmuH,KAKtB,OAAOlR,EAAOkQ,SAAU,SAAUM,GAGjCL,EAAQ,GAAK,GAAIjlH,IAChB+hB,EACC,EACAujG,EACAhR,EAAYqR,GACXA,EACA/B,EACD0B,EAASQ,aAKXb,EAAQ,GAAK,GAAIjlH,IAChB+hB,EACC,EACAujG,EACAhR,EAAYmR,GACXA,EACA7B,IAKHqB,EAAQ,GAAK,GAAIjlH,IAChB+hB,EACC,EACAujG,EACAhR,EAAYoR,GACXA,EACA7B,MAGAI,WAKLA,QAAS,SAAUr3H,GAClB,OAAc,MAAPA,EAAckoH,EAAOv/G,OAAQ3I,EAAKq3H,GAAYA,IAGvDkB,EAAW,GAkEZ,OA/DArQ,EAAOU,KAAMyP,EAAQ,SAAUj8H,EAAGu8H,GACjC,IAAIx9G,EAAOw9G,EAAO,GACjBc,EAAcd,EAAO,GAKtBtB,EAASsB,EAAO,IAAQx9G,EAAK/H,IAGxBqmH,GACJt+G,EAAK/H,IACJ,WAIC5J,EAAQiwH,GAKTpB,EAAQ,EAAIj8H,GAAK,GAAIwyD,QAIrBypE,EAAQ,EAAIj8H,GAAK,GAAIwyD,QAGrBypE,EAAQ,GAAK,GAAIH,KAGjBG,EAAQ,GAAK,GAAIH,MAOnB/8G,EAAK/H,IAAKulH,EAAO,GAAIZ,MAKrBQ,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAU/5H,OAAS25H,OAAWx4H,EAAYnB,KAAMJ,WAChEI,MAMR25H,EAAUI,EAAO,GAAM,QAAWx9G,EAAKg9G,WAIxCd,EAAQA,QAASkB,GAGZh6G,GACJA,EAAKhiB,KAAMg8H,EAAUA,GAIfA,GAIRmB,KAAM,SAAUC,GACf,IAGCC,EAAYp7H,UAAUC,OAGtBrC,EAAIw9H,EAGJC,EAAkBn6H,MAAOtD,GACzB09H,EAAgB73H,EAAM1F,KAAMiC,WAG5Bu7H,EAAS7R,EAAOkQ,WAGhB4B,EAAa,SAAU59H,GACtB,OAAO,SAAUiB,GAChBw8H,EAAiBz9H,GAAMwC,KACvBk7H,EAAe19H,GAAMoC,UAAUC,OAAS,EAAIwD,EAAM1F,KAAMiC,WAAcnB,IAC5Du8H,GACTG,EAAOZ,YAAaU,EAAiBC,KAMzC,GAAKF,GAAa,IACjBzC,EAAYwC,EAAaI,EAAOlyC,KAAMmyC,EAAY59H,IAAM+4B,QAAS4kG,EAAO3kG,QACtEwkG,GAGsB,YAAnBG,EAAOvwH,SACXk+G,EAAYoS,EAAe19H,IAAO09H,EAAe19H,GAAImsC,OAErD,OAAOwxF,EAAOxxF,OAKhB,KAAQnsC,KACP+6H,EAAY2C,EAAe19H,GAAK49H,EAAY59H,GAAK29H,EAAO3kG,QAGzD,OAAO2kG,EAAO1C,aAOhB,IAAI4C,EAAc,yDAElB/R,EAAOkQ,SAASiB,cAAgB,SAAU34H,EAAOs6G,GAI3Cx5G,EAAOf,SAAWe,EAAOf,QAAQ+0B,MAAQ90B,GAASu5H,EAAY93H,KAAMzB,EAAM/D,OAC9E6E,EAAOf,QAAQ+0B,KAAM,8BAAgC90B,EAAMwG,QAASxG,EAAMs6G,MAAOA,IAOnFkN,EAAOgS,eAAiB,SAAUx5H,GACjCc,EAAOyJ,WAAY,WAClB,MAAMvK,KAQR,IAAIy5H,EAAYjS,EAAOkQ,WAkDvB,SAASgC,IACR34H,EAAS68D,oBAAqB,mBAAoB87D,GAClD54H,EAAO88D,oBAAqB,OAAQ87D,GACpClS,EAAOgO,QAnDRhO,EAAOhC,GAAGgQ,MAAQ,SAAUhQ,GAY3B,OAVAiU,EACE5xF,KAAM29E,GAKN19E,MAAO,SAAU9nC,GACjBwnH,EAAOgS,eAAgBx5H,KAGlB9B,MAGRspH,EAAOv/G,OAAQ,CAGdwgH,SAAS,EAITkR,UAAW,EAGXnE,MAAO,SAAUoE,KAGF,IAATA,IAAkBpS,EAAOmS,UAAYnS,EAAOiB,WAKjDjB,EAAOiB,SAAU,GAGH,IAATmR,KAAmBpS,EAAOmS,UAAY,GAK3CF,EAAUhB,YAAa13H,EAAU,CAAEymH,QAIrCA,EAAOgO,MAAM3tF,KAAO4xF,EAAU5xF,KAaD,aAAxB9mC,EAAS84H,YACa,YAAxB94H,EAAS84H,aAA6B94H,EAAS8jD,gBAAgBi1E,SAGjEh5H,EAAOyJ,WAAYi9G,EAAOgO,QAK1Bz0H,EAAS26B,iBAAkB,mBAAoBg+F,GAG/C54H,EAAO46B,iBAAkB,OAAQg+F,IAQlC,IAAIK,EAAS,SAAUhS,EAAOvC,EAAIvoH,EAAKN,EAAOq9H,EAAWC,EAAU/kE,GAClE,IAAIx5D,EAAI,EACPuyB,EAAM85F,EAAMhqH,OACZm8H,EAAc,MAAPj9H,EAGR,GAAuB,WAAlBsqH,EAAQtqH,GAEZ,IAAMvB,KADNs+H,GAAY,EACD/8H,EACV88H,EAAQhS,EAAOvC,EAAI9pH,EAAGuB,EAAKvB,IAAK,EAAMu+H,EAAU/kE,QAI3C,QAAe71D,IAAV1C,IACXq9H,GAAY,EAENhT,EAAYrqH,KACjBu4D,GAAM,GAGFglE,IAGChlE,GACJswD,EAAG3pH,KAAMksH,EAAOprH,GAChB6oH,EAAK,OAIL0U,EAAO1U,EACPA,EAAK,SAAU2C,EAAMlrH,EAAKN,GACzB,OAAOu9H,EAAKr+H,KAAM2rH,EAAQW,GAAQxrH,MAKhC6oH,GACJ,KAAQ9pH,EAAIuyB,EAAKvyB,IAChB8pH,EACCuC,EAAOrsH,GAAKuB,EAAKi4D,EACjBv4D,EACAA,EAAMd,KAAMksH,EAAOrsH,GAAKA,EAAG8pH,EAAIuC,EAAOrsH,GAAKuB,KAM/C,OAAK+8H,EACGjS,EAIHmS,EACG1U,EAAG3pH,KAAMksH,GAGV95F,EAAMu3F,EAAIuC,EAAO,GAAK9qH,GAAQg9H,GAKlCE,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYr4E,EAAK9zC,GACzB,OAAOA,EAAO0C,cAMf,SAAS0pH,EAAW9pH,GACnB,OAAOA,EAAO7P,QAASw5H,EAAW,OAAQx5H,QAASy5H,EAAYC,GAEhE,IAAIE,EAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAMtrH,UAAqC,IAAnBsrH,EAAMtrH,YAAsBsrH,EAAMtrH,UAMlE,SAASurH,IACRv8H,KAAKsqH,QAAUhB,EAAOgB,QAAUiS,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAKn9H,UAAY,CAEhB6vH,MAAO,SAAUqN,GAGhB,IAAI79H,EAAQ69H,EAAOt8H,KAAKsqH,SA4BxB,OAzBM7rH,IACLA,EAAQ,GAKH49H,EAAYC,KAIXA,EAAMtrH,SACVsrH,EAAOt8H,KAAKsqH,SAAY7rH,EAMxBP,OAAOC,eAAgBm+H,EAAOt8H,KAAKsqH,QAAS,CAC3C7rH,MAAOA,EACPo9E,cAAc,MAMXp9E,GAER29E,IAAK,SAAUkgD,EAAO/oH,EAAM9U,GAC3B,IAAI8Z,EACH02G,EAAQjvH,KAAKivH,MAAOqN,GAIrB,GAAqB,iBAAT/oH,EACX07G,EAAOmN,EAAW7oH,IAAW9U,OAM7B,IAAM8Z,KAAQhF,EACb07G,EAAOmN,EAAW7jH,IAAWhF,EAAMgF,GAGrC,OAAO02G,GAER5wH,IAAK,SAAUi+H,EAAOv9H,GACrB,YAAeoC,IAARpC,EACNiB,KAAKivH,MAAOqN,GAGZA,EAAOt8H,KAAKsqH,UAAagS,EAAOt8H,KAAKsqH,SAAW8R,EAAWr9H,KAE7D88H,OAAQ,SAAUS,EAAOv9H,EAAKN,GAa7B,YAAa0C,IAARpC,GACCA,GAAsB,iBAARA,QAAgCoC,IAAV1C,EAElCuB,KAAK3B,IAAKi+H,EAAOv9H,IASzBiB,KAAKo8E,IAAKkgD,EAAOv9H,EAAKN,QAIL0C,IAAV1C,EAAsBA,EAAQM,IAEtCqJ,OAAQ,SAAUk0H,EAAOv9H,GACxB,IAAIvB,EACHyxH,EAAQqN,EAAOt8H,KAAKsqH,SAErB,QAAenpH,IAAV8tH,EAAL,CAIA,QAAa9tH,IAARpC,EAAoB,CAkBxBvB,GAXCuB,EAJI+B,MAAMC,QAAShC,GAIbA,EAAI+K,IAAKsyH,IAEfr9H,EAAMq9H,EAAWr9H,MAIJkwH,EACZ,CAAElwH,GACAA,EAAImzB,MAAOimG,IAAmB,IAG1Bt4H,OAER,KAAQrC,YACAyxH,EAAOlwH,EAAKvB,UAKR2D,IAARpC,GAAqBuqH,EAAOoB,cAAeuE,MAM1CqN,EAAMtrH,SACVsrH,EAAOt8H,KAAKsqH,cAAYnpH,SAEjBm7H,EAAOt8H,KAAKsqH,YAItBmS,QAAS,SAAUH,GAClB,IAAIrN,EAAQqN,EAAOt8H,KAAKsqH,SACxB,YAAiBnpH,IAAV8tH,IAAwB3F,EAAOoB,cAAeuE,KAGvD,IAAIyN,EAAW,IAAIH,EAEfI,EAAW,IAAIJ,EAcfK,GAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAU7S,EAAMlrH,EAAKwU,GAC7B,IAAIxV,EAIJ,QAAcoD,IAAToS,GAAwC,IAAlB02G,EAAKj5G,SAI/B,GAHAjT,EAAO,QAAUgB,EAAI0D,QAASo6H,GAAY,OAAQrzE,cAG7B,iBAFrBj2C,EAAO02G,EAAKjoD,aAAcjkE,IAEM,CAC/B,IACCwV,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJqpH,GAAOr5H,KAAMgQ,GACVvN,KAAKC,MAAOsN,GAGbA,GAcGszB,CAAStzB,GACf,MAAQnR,IAGVu6H,EAASvgD,IAAK6tC,EAAMlrH,EAAKwU,QAEzBA,OAAOpS,EAGT,OAAOoS,EAGR+1G,EAAOv/G,OAAQ,CACd0yH,QAAS,SAAUxS,GAClB,OAAO0S,EAASF,QAASxS,IAAUyS,EAASD,QAASxS,IAGtD12G,KAAM,SAAU02G,EAAMlsH,EAAMwV,GAC3B,OAAOopH,EAASd,OAAQ5R,EAAMlsH,EAAMwV,IAGrCwpH,WAAY,SAAU9S,EAAMlsH,GAC3B4+H,EAASv0H,OAAQ6hH,EAAMlsH,IAKxBi/H,MAAO,SAAU/S,EAAMlsH,EAAMwV,GAC5B,OAAOmpH,EAASb,OAAQ5R,EAAMlsH,EAAMwV,IAGrC0pH,YAAa,SAAUhT,EAAMlsH,GAC5B2+H,EAASt0H,OAAQ6hH,EAAMlsH,MAIzBurH,EAAOhC,GAAGv9G,OAAQ,CACjBwJ,KAAM,SAAUxU,EAAKN,GACpB,IAAIjB,EAAGO,EAAMwV,EACZ02G,EAAOjqH,KAAM,GACbsY,EAAQ2xG,GAAQA,EAAKl6C,WAGtB,QAAa5uE,IAARpC,EAAoB,CACxB,GAAKiB,KAAKH,SACT0T,EAAOopH,EAASt+H,IAAK4rH,GAEE,IAAlBA,EAAKj5G,WAAmB0rH,EAASr+H,IAAK4rH,EAAM,iBAAmB,CAEnE,IADAzsH,EAAI8a,EAAMzY,OACFrC,KAIF8a,EAAO9a,IAEsB,KADjCO,EAAOua,EAAO9a,GAAIO,MACRuC,QAAS,WAClBvC,EAAOq+H,EAAWr+H,EAAKsF,MAAO,IAC9By5H,GAAU7S,EAAMlsH,EAAMwV,EAAMxV,KAI/B2+H,EAAStgD,IAAK6tC,EAAM,gBAAgB,GAItC,OAAO12G,EAIR,MAAoB,iBAARxU,EACJiB,KAAKgqH,KAAM,WACjB2S,EAASvgD,IAAKp8E,KAAMjB,KAIf88H,EAAQ77H,KAAM,SAAUvB,GAC9B,IAAI8U,EAOJ,GAAK02G,QAAkB9oH,IAAV1C,EAKZ,YAAc0C,KADdoS,EAAOopH,EAASt+H,IAAK4rH,EAAMlrH,IAEnBwU,OAMMpS,KADdoS,EAAOupH,GAAU7S,EAAMlrH,IAEfwU,OAIR,EAIDvT,KAAKgqH,KAAM,WAGV2S,EAASvgD,IAAKp8E,KAAMjB,EAAKN,MAExB,KAAMA,EAAOmB,UAAUC,OAAS,EAAG,MAAM,IAG7Ck9H,WAAY,SAAUh+H,GACrB,OAAOiB,KAAKgqH,KAAM,WACjB2S,EAASv0H,OAAQpI,KAAMjB,QAM1BuqH,EAAOv/G,OAAQ,CACd0tG,MAAO,SAAUwS,EAAMvhH,EAAM6K,GAC5B,IAAIkkG,EAEJ,GAAKwS,EAYJ,OAXAvhH,GAASA,GAAQ,MAAS,QAC1B+uG,EAAQilB,EAASr+H,IAAK4rH,EAAMvhH,GAGvB6K,KACEkkG,GAAS32G,MAAMC,QAASwS,GAC7BkkG,EAAQilB,EAASb,OAAQ5R,EAAMvhH,EAAM4gH,EAAOsB,UAAWr3G,IAEvDkkG,EAAM52G,KAAM0S,IAGPkkG,GAAS,IAIlBylB,QAAS,SAAUjT,EAAMvhH,GACxBA,EAAOA,GAAQ,KAEf,IAAI+uG,EAAQ6R,EAAO7R,MAAOwS,EAAMvhH,GAC/By0H,EAAc1lB,EAAM53G,OACpBynH,EAAK7P,EAAMtgD,QACXimE,EAAQ9T,EAAO+T,YAAapT,EAAMvhH,GAMvB,eAAP4+G,IACJA,EAAK7P,EAAMtgD,QACXgmE,KAGI7V,IAIU,OAAT5+G,GACJ+uG,EAAMjkF,QAAS,qBAIT4pG,EAAMnvH,KACbq5G,EAAG3pH,KAAMssH,EApBF,WACNX,EAAO4T,QAASjT,EAAMvhH,IAmBF00H,KAGhBD,GAAeC,GACpBA,EAAM3+E,MAAM06E,QAKdkE,YAAa,SAAUpT,EAAMvhH,GAC5B,IAAI3J,EAAM2J,EAAO,aACjB,OAAOg0H,EAASr+H,IAAK4rH,EAAMlrH,IAAS29H,EAASb,OAAQ5R,EAAMlrH,EAAK,CAC/D0/C,MAAO6qE,EAAOqP,UAAW,eAAgBnkH,IAAK,WAC7CkoH,EAASt0H,OAAQ6hH,EAAM,CAAEvhH,EAAO,QAAS3J,WAM7CuqH,EAAOhC,GAAGv9G,OAAQ,CACjB0tG,MAAO,SAAU/uG,EAAM6K,GACtB,IAAI+pH,EAAS,EAQb,MANqB,iBAAT50H,IACX6K,EAAO7K,EACPA,EAAO,KACP40H,KAGI19H,UAAUC,OAASy9H,EAChBhU,EAAO7R,MAAOz3G,KAAM,GAAK0I,QAGjBvH,IAAToS,EACNvT,KACAA,KAAKgqH,KAAM,WACV,IAAIvS,EAAQ6R,EAAO7R,MAAOz3G,KAAM0I,EAAM6K,GAGtC+1G,EAAO+T,YAAar9H,KAAM0I,GAEZ,OAATA,GAAgC,eAAf+uG,EAAO,IAC5B6R,EAAO4T,QAASl9H,KAAM0I,MAI1Bw0H,QAAS,SAAUx0H,GAClB,OAAO1I,KAAKgqH,KAAM,WACjBV,EAAO4T,QAASl9H,KAAM0I,MAGxB60H,WAAY,SAAU70H,GACrB,OAAO1I,KAAKy3G,MAAO/uG,GAAQ,KAAM,KAKlC+vH,QAAS,SAAU/vH,EAAMtH,GACxB,IAAIovH,EACHt/D,EAAQ,EACR52C,EAAQgvG,EAAOkQ,WACflI,EAAWtxH,KACXxC,EAAIwC,KAAKH,OACT02B,EAAU,aACC26B,GACT52C,EAAMigH,YAAajJ,EAAU,CAAEA,KAUlC,IANqB,iBAAT5oH,IACXtH,EAAMsH,EACNA,OAAOvH,GAERuH,EAAOA,GAAQ,KAEPlL,MACPgzH,EAAMkM,EAASr+H,IAAKizH,EAAU9zH,GAAKkL,EAAO,gBAC9B8nH,EAAI/xE,QACfyS,IACAs/D,EAAI/xE,MAAMjqC,IAAK+hB,IAIjB,OADAA,IACOjc,EAAMm+G,QAASr3H,MAGxB,IAAIo8H,GAAS,sCAAwC19H,OAEjD29H,GAAU,IAAI52D,OAAQ,iBAAmB22D,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExC/2E,GAAkB9jD,EAAS8jD,gBAI1Bg3E,GAAa,SAAU1T,GACzB,OAAOX,EAAO9qD,SAAUyrD,EAAKlmH,cAAekmH,IAE7C2T,GAAW,CAAEA,UAAU,GAOnBj3E,GAAgBk3E,cACpBF,GAAa,SAAU1T,GACtB,OAAOX,EAAO9qD,SAAUyrD,EAAKlmH,cAAekmH,IAC3CA,EAAK4T,YAAaD,MAAe3T,EAAKlmH,gBAG1C,IAAI+5H,GAAqB,SAAU7T,EAAMn5F,GAOvC,MAA8B,UAH9Bm5F,EAAOn5F,GAAMm5F,GAGD5lH,MAAMqoB,SACM,KAAvBu9F,EAAK5lH,MAAMqoB,SAMXixG,GAAY1T,IAEsB,SAAlCX,EAAOtkH,IAAKilH,EAAM,YAGjB8T,GAAO,SAAU9T,EAAMpiH,EAASiB,EAAUvG,GAC7C,IAAIunH,EAAK/rH,EACRyuE,EAAM,GAGP,IAAMzuE,KAAQ8J,EACb2kE,EAAKzuE,GAASksH,EAAK5lH,MAAOtG,GAC1BksH,EAAK5lH,MAAOtG,GAAS8J,EAAS9J,GAM/B,IAAMA,KAHN+rH,EAAMhhH,EAAS/I,MAAOkqH,EAAM1nH,GAAQ,IAGtBsF,EACboiH,EAAK5lH,MAAOtG,GAASyuE,EAAKzuE,GAG3B,OAAO+rH,GAMR,SAASkU,GAAW/T,EAAM1xG,EAAM0lH,EAAYC,GAC3C,IAAIC,EAAUx1G,EACby1G,EAAgB,GAChBC,EAAeH,EACd,WACC,OAAOA,EAAM1O,OAEd,WACC,OAAOlG,EAAOtkH,IAAKilH,EAAM1xG,EAAM,KAEjC+lH,EAAUD,IACV3iE,EAAOuiE,GAAcA,EAAY,KAAS3U,EAAOiV,UAAWhmH,GAAS,GAAK,MAG1EimH,EAAgBvU,EAAKj5G,WAClBs4G,EAAOiV,UAAWhmH,IAAmB,OAATmjD,IAAkB4iE,IAChDb,GAAQtyC,KAAMm+B,EAAOtkH,IAAKilH,EAAM1xG,IAElC,GAAKimH,GAAiBA,EAAe,KAAQ9iE,EAAO,CAYnD,IARA4iE,GAAoB,EAGpB5iE,EAAOA,GAAQ8iE,EAAe,GAG9BA,GAAiBF,GAAW,EAEpBF,KAIP9U,EAAOjlH,MAAO4lH,EAAM1xG,EAAMimH,EAAgB9iE,IACnC,EAAI/yC,IAAY,GAAMA,EAAQ01G,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBI,GAAgC71G,EAIjC61G,GAAgC,EAChClV,EAAOjlH,MAAO4lH,EAAM1xG,EAAMimH,EAAgB9iE,GAG1CuiE,EAAaA,GAAc,GAgB5B,OAbKA,IACJO,GAAiBA,IAAkBF,GAAW,EAG9CH,EAAWF,EAAY,GACtBO,GAAkBP,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMxiE,KAAOA,EACbwiE,EAAMn/G,MAAQy/G,EACdN,EAAMz7G,IAAM07G,IAGPA,EAIR,IAAIM,GAAoB,GAExB,SAASC,GAAmBzU,GAC3B,IAAI6K,EACHh5D,EAAMmuD,EAAKlmH,cACX62F,EAAWqvB,EAAKrvB,SAChBluE,EAAU+xG,GAAmB7jC,GAE9B,OAAKluE,IAILooG,EAAOh5D,EAAIn3D,KAAKC,YAAak3D,EAAIh5D,cAAe83F,IAChDluE,EAAU48F,EAAOtkH,IAAK8vH,EAAM,WAE5BA,EAAKxhG,WAAWvuB,YAAa+vH,GAEZ,SAAZpoG,IACJA,EAAU,SAEX+xG,GAAmB7jC,GAAaluE,EAEzBA,GAGR,SAASiyG,GAAUrN,EAAU/4F,GAO5B,IANA,IAAI7L,EAASu9F,EACZv/F,EAAS,GACTuI,EAAQ,EACRpzB,EAASyxH,EAASzxH,OAGXozB,EAAQpzB,EAAQozB,KACvBg3F,EAAOqH,EAAUr+F,IACN5uB,QAIXqoB,EAAUu9F,EAAK5lH,MAAMqoB,QAChB6L,GAKa,SAAZ7L,IACJhC,EAAQuI,GAAUypG,EAASr+H,IAAK4rH,EAAM,YAAe,KAC/Cv/F,EAAQuI,KACbg3F,EAAK5lH,MAAMqoB,QAAU,KAGK,KAAvBu9F,EAAK5lH,MAAMqoB,SAAkBoxG,GAAoB7T,KACrDv/F,EAAQuI,GAAUyrG,GAAmBzU,KAGrB,SAAZv9F,IACJhC,EAAQuI,GAAU,OAGlBypG,EAAStgD,IAAK6tC,EAAM,UAAWv9F,KAMlC,IAAMuG,EAAQ,EAAGA,EAAQpzB,EAAQozB,IACR,MAAnBvI,EAAQuI,KACZq+F,EAAUr+F,GAAQ5uB,MAAMqoB,QAAUhC,EAAQuI,IAI5C,OAAOq+F,EAGRhI,EAAOhC,GAAGv9G,OAAQ,CACjBwuB,KAAM,WACL,OAAOomG,GAAU3+H,MAAM,IAExB+L,KAAM,WACL,OAAO4yH,GAAU3+H,OAElBy4B,OAAQ,SAAU7tB,GACjB,MAAsB,kBAAVA,EACJA,EAAQ5K,KAAKu4B,OAASv4B,KAAK+L,OAG5B/L,KAAKgqH,KAAM,WACZ8T,GAAoB99H,MACxBspH,EAAQtpH,MAAOu4B,OAEf+wF,EAAQtpH,MAAO+L,YAKnB,IAAI6yH,GAAmB,wBAEnBC,GAAa,iCAEbC,GAAgB,qCAKhBC,GAAU,CAGbC,OAAQ,CAAE,EAAG,+BAAgC,aAK7CC,MAAO,CAAE,EAAG,UAAW,YACvBltG,IAAK,CAAE,EAAG,oBAAqB,uBAC/BmtG,GAAI,CAAE,EAAG,iBAAkB,oBAC3Bj4B,GAAI,CAAE,EAAG,qBAAsB,yBAE/BtkG,SAAU,CAAE,EAAG,GAAI,KAUpB,SAASw8H,GAAQn8C,EAAS2R,GAIzB,IAAIm1B,EAYJ,OATCA,OAD4C,IAAjC9mC,EAAQr/E,qBACbq/E,EAAQr/E,qBAAsBgxF,GAAO,UAEI,IAA7B3R,EAAQp/E,iBACpBo/E,EAAQp/E,iBAAkB+wF,GAAO,KAGjC,QAGMxzF,IAARwzF,GAAqBA,GAAOiG,EAAU5X,EAAS2R,GAC5C20B,EAAOpsD,MAAO,CAAE8lB,GAAW8mC,GAG5BA,EAKR,SAASsV,GAAevV,EAAOwV,GAI9B,IAHA,IAAI7hI,EAAI,EACPC,EAAIosH,EAAMhqH,OAEHrC,EAAIC,EAAGD,IACdk/H,EAAStgD,IACRytC,EAAOrsH,GACP,cACC6hI,GAAe3C,EAASr+H,IAAKghI,EAAa7hI,GAAK,eAvCnDuhI,GAAQO,SAAWP,GAAQC,OAE3BD,GAAQQ,MAAQR,GAAQS,MAAQT,GAAQU,SAAWV,GAAQW,QAAUX,GAAQE,MAC7EF,GAAQhiB,GAAKgiB,GAAQ93B,GA0CrB,IA8FExoB,GACAp+B,GA/FEqtE,GAAQ,YAEZ,SAASiS,GAAe9V,EAAO7mC,EAAS48C,EAAS5qF,EAAW6qF,GAO3D,IANA,IAAI5V,EAAMuG,EAAK77B,EAAKr1E,EAAMwgH,EAAUnqE,EACnCoqE,EAAW/8C,EAAQg9C,yBACnBC,EAAQ,GACRziI,EAAI,EACJC,EAAIosH,EAAMhqH,OAEHrC,EAAIC,EAAGD,IAGd,IAFAysH,EAAOJ,EAAOrsH,KAEQ,IAATysH,EAGZ,GAAwB,WAAnBZ,EAAQY,GAIZX,EAAOpsD,MAAO+iE,EAAOhW,EAAKj5G,SAAW,CAAEi5G,GAASA,QAG1C,GAAMyD,GAAMnqH,KAAM0mH,GAIlB,CAUN,IATAuG,EAAMA,GAAOuP,EAASn7H,YAAao+E,EAAQlgF,cAAe,QAG1D6xF,GAAQkqC,GAAS1zC,KAAM8+B,IAAU,CAAE,GAAI,KAAQ,GAAIzgE,cACnDlqC,EAAOy/G,GAASpqC,IAASoqC,GAAQp8H,SACjC6tH,EAAIvwF,UAAY3gB,EAAM,GAAMgqG,EAAO4W,cAAejW,GAAS3qG,EAAM,GAGjEq2C,EAAIr2C,EAAM,GACFq2C,KACP66D,EAAMA,EAAI3kB,UAKXyd,EAAOpsD,MAAO+iE,EAAOzP,EAAIxiD,aAGzBwiD,EAAMuP,EAASlvG,YAGXy/C,YAAc,QAzBlB2vD,EAAMp/H,KAAMmiF,EAAQ+8B,eAAgBkK,IAkCvC,IAHA8V,EAASzvD,YAAc,GAEvB9yE,EAAI,EACMysH,EAAOgW,EAAOziI,MAGvB,GAAKw3C,GAAas0E,EAAOuB,QAASZ,EAAMj1E,IAAe,EACjD6qF,GACJA,EAAQh/H,KAAMopH,QAgBhB,GAXA6V,EAAWnC,GAAY1T,GAGvBuG,EAAM2O,GAAQY,EAASn7H,YAAaqlH,GAAQ,UAGvC6V,GACJV,GAAe5O,GAIXoP,EAEJ,IADAjqE,EAAI,EACMs0D,EAAOuG,EAAK76D,MAChBmpE,GAAYv7H,KAAM0mH,EAAKvhH,MAAQ,KACnCk3H,EAAQ/+H,KAAMopH,GAMlB,OAAO8V,EAMNthD,GADc57E,EAASm9H,yBACRp7H,YAAa/B,EAASC,cAAe,SACpDu9C,GAAQx9C,EAASC,cAAe,UAM3B84B,aAAc,OAAQ,SAC5BykB,GAAMzkB,aAAc,UAAW,WAC/BykB,GAAMzkB,aAAc,OAAQ,KAE5B6iD,GAAI75E,YAAay7C,IAIjBwoE,EAAQsX,WAAa1hD,GAAIxmB,WAAW,GAAOA,WAAW,GAAO4zC,UAAUpyF,QAIvEglE,GAAIx+C,UAAY,yBAChB4oF,EAAQuX,iBAAmB3hD,GAAIxmB,WAAW,GAAO4zC,UAAU9N,aAI5D,IACCsiC,GAAY,OACZC,GAAc,iDACdC,GAAiB,sBAElB,SAASC,KACR,OAAO,EAGR,SAASC,KACR,OAAO,EASR,SAASC,GAAYzW,EAAMvhH,GAC1B,OAASuhH,IAMV,WACC,IACC,OAAOpnH,EAAS27F,cACf,MAAQ58F,KATQ++H,KAAqC,UAATj4H,GAY/C,SAASkG,GAAIq7G,EAAM2W,EAAO59H,EAAUuQ,EAAM+zG,EAAIuZ,GAC7C,IAAIC,EAAQp4H,EAGZ,GAAsB,iBAAVk4H,EAAqB,CAShC,IAAMl4H,IANmB,iBAAb1F,IAGXuQ,EAAOA,GAAQvQ,EACfA,OAAW7B,GAEEy/H,EACbhyH,GAAIq7G,EAAMvhH,EAAM1F,EAAUuQ,EAAMqtH,EAAOl4H,GAAQm4H,GAEhD,OAAO5W,EAsBR,GAnBa,MAAR12G,GAAsB,MAAN+zG,GAGpBA,EAAKtkH,EACLuQ,EAAOvQ,OAAW7B,GACD,MAANmmH,IACc,iBAAbtkH,GAGXskH,EAAK/zG,EACLA,OAAOpS,IAIPmmH,EAAK/zG,EACLA,EAAOvQ,EACPA,OAAW7B,KAGD,IAAPmmH,EACJA,EAAKmZ,QACC,IAAMnZ,EACZ,OAAO2C,EAeR,OAZa,IAAR4W,IACJC,EAASxZ,GACTA,EAAK,SAAUp6G,GAId,OADAo8G,IAASx6G,IAAK5B,GACP4zH,EAAO/gI,MAAOC,KAAMJ,aAIzBsrH,KAAO4V,EAAO5V,OAAU4V,EAAO5V,KAAO5B,EAAO4B,SAE1CjB,EAAKD,KAAM,WACjBV,EAAOp8G,MAAMsH,IAAKxU,KAAM4gI,EAAOtZ,EAAI/zG,EAAMvQ,KA4a3C,SAAS+9H,GAAgBjwG,EAAIpoB,EAAMg4H,GAG5BA,GAQNhE,EAAStgD,IAAKtrD,EAAIpoB,GAAM,GACxB4gH,EAAOp8G,MAAMsH,IAAKsc,EAAIpoB,EAAM,CAC3BsnH,WAAW,EACXttC,QAAS,SAAUx1E,GAClB,IAAI8zH,EAAU3gH,EACb4gH,EAAQvE,EAASr+H,IAAK2B,KAAM0I,GAE7B,GAAyB,EAAlBwE,EAAMg0H,WAAmBlhI,KAAM0I,IAKrC,GAAMu4H,EAAMphI,QAiCEypH,EAAOp8G,MAAMktH,QAAS1xH,IAAU,IAAKy4H,cAClDj0H,EAAMC,uBAfN,GAdA8zH,EAAQ59H,EAAM1F,KAAMiC,WACpB88H,EAAStgD,IAAKp8E,KAAM0I,EAAMu4H,GAK1BD,EAAWN,EAAY1gI,KAAM0I,GAC7B1I,KAAM0I,KAEDu4H,KADL5gH,EAASq8G,EAASr+H,IAAK2B,KAAM0I,KACJs4H,EACxBtE,EAAStgD,IAAKp8E,KAAM0I,GAAM,GAE1B2X,EAAS,GAEL4gH,IAAU5gH,EAKd,OAFAnT,EAAM6zD,2BACN7zD,EAAM6nC,iBACC10B,EAAO5hB,WAeLwiI,EAAMphI,SAGjB68H,EAAStgD,IAAKp8E,KAAM0I,EAAM,CACzBjK,MAAO6qH,EAAOp8G,MAAM0rE,QAInB0wC,EAAOv/G,OAAQk3H,EAAO,GAAK3X,EAAO96E,MAAMpvC,WACxC6hI,EAAM59H,MAAO,GACbrD,QAKFkN,EAAM6zD,qCAzE0B5/D,IAA7Bu7H,EAASr+H,IAAKyyB,EAAIpoB,IACtB4gH,EAAOp8G,MAAMsH,IAAKsc,EAAIpoB,EAAM83H,IAza/BlX,EAAOp8G,MAAQ,CAEd+4G,OAAQ,GAERzxG,IAAK,SAAUy1G,EAAM2W,EAAOl+C,EAASnvE,EAAMvQ,GAE1C,IAAIo+H,EAAaC,EAAa7Q,EAC7B8Q,EAAQ5iI,EAAG6iI,EACXnH,EAASoH,EAAU94H,EAAM+4H,EAAYC,EACrCC,EAAWjF,EAASr+H,IAAK4rH,GAG1B,GAAM0X,EAuCN,IAlCKj/C,EAAQA,UAEZA,GADA0+C,EAAc1+C,GACQA,QACtB1/E,EAAWo+H,EAAYp+H,UAKnBA,GACJsmH,EAAOp5F,KAAKugG,gBAAiB9pE,GAAiB3jD,GAIzC0/E,EAAQwoC,OACbxoC,EAAQwoC,KAAO5B,EAAO4B,SAIfoW,EAASK,EAASL,UACzBA,EAASK,EAASL,OAAS,KAEpBD,EAAcM,EAAS7+D,UAC9Bu+D,EAAcM,EAAS7+D,OAAS,SAAU1gE,GAIzC,YAAyB,IAAXknH,GAA0BA,EAAOp8G,MAAM00H,YAAcx/H,EAAEsG,KACpE4gH,EAAOp8G,MAAM6qG,SAASh4G,MAAOkqH,EAAMrqH,gBAAcuB,IAMpDzC,GADAkiI,GAAUA,GAAS,IAAK1uG,MAAOimG,IAAmB,CAAE,KAC1Ct4H,OACFnB,KAEPgK,EAAOg5H,GADPlR,EAAM+P,GAAep1C,KAAMy1C,EAAOliI,KAAS,IACpB,GACvB+iI,GAAejR,EAAK,IAAO,IAAKzgH,MAAO,KAAMuuB,OAGvC51B,IAKN0xH,EAAU9Q,EAAOp8G,MAAMktH,QAAS1xH,IAAU,GAG1CA,GAAS1F,EAAWo3H,EAAQ+G,aAAe/G,EAAQyH,WAAcn5H,EAGjE0xH,EAAU9Q,EAAOp8G,MAAMktH,QAAS1xH,IAAU,GAG1C64H,EAAYjY,EAAOv/G,OAAQ,CAC1BrB,KAAMA,EACNg5H,SAAUA,EACVnuH,KAAMA,EACNmvE,QAASA,EACTwoC,KAAMxoC,EAAQwoC,KACdloH,SAAUA,EACVyqH,aAAczqH,GAAYsmH,EAAO+H,KAAKn/F,MAAMu7F,aAAalqH,KAAMP,GAC/DgtH,UAAWyR,EAAWxgI,KAAM,MAC1BmgI,IAGKI,EAAWF,EAAQ54H,OAC1B84H,EAAWF,EAAQ54H,GAAS,IACnBo5H,cAAgB,EAGnB1H,EAAQ2H,QACiD,IAA9D3H,EAAQ2H,MAAMpkI,KAAMssH,EAAM12G,EAAMkuH,EAAYJ,IAEvCpX,EAAKzsF,kBACTysF,EAAKzsF,iBAAkB90B,EAAM24H,IAK3BjH,EAAQ5lH,MACZ4lH,EAAQ5lH,IAAI7W,KAAMssH,EAAMsX,GAElBA,EAAU7+C,QAAQwoC,OACvBqW,EAAU7+C,QAAQwoC,KAAOxoC,EAAQwoC,OAK9BloH,EACJw+H,EAAS3sH,OAAQ2sH,EAASM,gBAAiB,EAAGP,GAE9CC,EAAS3gI,KAAM0gI,GAIhBjY,EAAOp8G,MAAM+4G,OAAQv9G,IAAS,IAMhCN,OAAQ,SAAU6hH,EAAM2W,EAAOl+C,EAAS1/E,EAAUg/H,GAEjD,IAAIrsE,EAAGssE,EAAWzR,EACjB8Q,EAAQ5iI,EAAG6iI,EACXnH,EAASoH,EAAU94H,EAAM+4H,EAAYC,EACrCC,EAAWjF,EAASD,QAASxS,IAAUyS,EAASr+H,IAAK4rH,GAEtD,GAAM0X,IAAeL,EAASK,EAASL,QAAvC,CAOA,IADA5iI,GADAkiI,GAAUA,GAAS,IAAK1uG,MAAOimG,IAAmB,CAAE,KAC1Ct4H,OACFnB,KAMP,GAJAgK,EAAOg5H,GADPlR,EAAM+P,GAAep1C,KAAMy1C,EAAOliI,KAAS,IACpB,GACvB+iI,GAAejR,EAAK,IAAO,IAAKzgH,MAAO,KAAMuuB,OAGvC51B,EAAN,CAeA,IARA0xH,EAAU9Q,EAAOp8G,MAAMktH,QAAS1xH,IAAU,GAE1C84H,EAAWF,EADX54H,GAAS1F,EAAWo3H,EAAQ+G,aAAe/G,EAAQyH,WAAcn5H,IACpC,GAC7B8nH,EAAMA,EAAK,IACV,IAAI3pD,OAAQ,UAAY46D,EAAWxgI,KAAM,iBAAoB,WAG9DghI,EAAYtsE,EAAI6rE,EAAS3hI,OACjB81D,KACP4rE,EAAYC,EAAU7rE,IAEfqsE,GAAeN,IAAaH,EAAUG,UACzCh/C,GAAWA,EAAQwoC,OAASqW,EAAUrW,MACtCsF,IAAOA,EAAIjtH,KAAMg+H,EAAUvR,YAC3BhtH,GAAYA,IAAau+H,EAAUv+H,WACxB,OAAbA,IAAqBu+H,EAAUv+H,YAChCw+H,EAAS3sH,OAAQ8gD,EAAG,GAEf4rE,EAAUv+H,UACdw+H,EAASM,gBAEL1H,EAAQhyH,QACZgyH,EAAQhyH,OAAOzK,KAAMssH,EAAMsX,IAOzBU,IAAcT,EAAS3hI,SACrBu6H,EAAQ8H,WACkD,IAA/D9H,EAAQ8H,SAASvkI,KAAMssH,EAAMwX,EAAYE,EAAS7+D,SAElDwmD,EAAO6Y,YAAalY,EAAMvhH,EAAMi5H,EAAS7+D,eAGnCw+D,EAAQ54H,SA1Cf,IAAMA,KAAQ44H,EACbhY,EAAOp8G,MAAM9E,OAAQ6hH,EAAMvhH,EAAOk4H,EAAOliI,GAAKgkF,EAAS1/E,GAAU,GA8C/DsmH,EAAOoB,cAAe4W,IAC1B5E,EAASt0H,OAAQ6hH,EAAM,mBAIzBlS,SAAU,SAAUlhB,GAGnB,IAEIr5F,EAAGm4D,EAAGm0D,EAAKkJ,EAASuO,EAAWa,EAF/Bl1H,EAAQo8G,EAAOp8G,MAAMm1H,IAAKxrC,GAG7Bt0F,EAAO,IAAIzB,MAAOlB,UAAUC,QAC5B2hI,GAAa9E,EAASr+H,IAAK2B,KAAM,WAAc,IAAMkN,EAAMxE,OAAU,GACrE0xH,EAAU9Q,EAAOp8G,MAAMktH,QAASltH,EAAMxE,OAAU,GAKjD,IAFAnG,EAAM,GAAM2K,EAEN1P,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAClC+E,EAAM/E,GAAMoC,UAAWpC,GAMxB,GAHA0P,EAAMo1H,eAAiBtiI,MAGlBo6H,EAAQmI,cAA2D,IAA5CnI,EAAQmI,YAAY5kI,KAAMqC,KAAMkN,GAA5D,CASA,IAJAk1H,EAAe9Y,EAAOp8G,MAAMs0H,SAAS7jI,KAAMqC,KAAMkN,EAAOs0H,GAGxDhkI,EAAI,GACMw1H,EAAUoP,EAAc5kI,QAAY0P,EAAM4mF,wBAInD,IAHA5mF,EAAM41E,cAAgBkwC,EAAQ/I,KAE9Bt0D,EAAI,GACM4rE,EAAYvO,EAAQwO,SAAU7rE,QACtCzoD,EAAMs1H,iCAIDt1H,EAAMu1H,aAAsC,IAAxBlB,EAAUvR,YACnC9iH,EAAMu1H,WAAWl/H,KAAMg+H,EAAUvR,aAEjC9iH,EAAMq0H,UAAYA,EAClBr0H,EAAMqG,KAAOguH,EAAUhuH,UAKVpS,KAHb2oH,IAAUR,EAAOp8G,MAAMktH,QAASmH,EAAUG,WAAc,IAAK5+D,QAC5Dy+D,EAAU7+C,SAAU3iF,MAAOizH,EAAQ/I,KAAM1nH,MAGT,KAAzB2K,EAAMmT,OAASypG,KACrB58G,EAAM6nC,iBACN7nC,EAAMC,oBAYX,OAJKitH,EAAQsI,cACZtI,EAAQsI,aAAa/kI,KAAMqC,KAAMkN,GAG3BA,EAAMmT,SAGdmhH,SAAU,SAAUt0H,EAAOs0H,GAC1B,IAAIhkI,EAAG+jI,EAAWvuE,EAAK2vE,EAAiBC,EACvCR,EAAe,GACfN,EAAgBN,EAASM,cACzBtS,EAAMtiH,EAAMvN,OAGb,GAAKmiI,GAIJtS,EAAIx+G,YAOc,UAAf9D,EAAMxE,MAAoBwE,EAAM6qE,QAAU,GAE7C,KAAQy3C,IAAQxvH,KAAMwvH,EAAMA,EAAIl8F,YAActzB,KAI7C,GAAsB,IAAjBwvH,EAAIx+G,WAAoC,UAAf9D,EAAMxE,OAAqC,IAAjB8mH,EAAIh1G,UAAsB,CAGjF,IAFAmoH,EAAkB,GAClBC,EAAmB,GACbplI,EAAI,EAAGA,EAAIskI,EAAetkI,SAME2D,IAA5ByhI,EAFL5vE,GAHAuuE,EAAYC,EAAUhkI,IAGNwF,SAAW,OAG1B4/H,EAAkB5vE,GAAQuuE,EAAU9T,aACnCnE,EAAQt2D,EAAKhzD,MAAOizB,MAAOu8F,IAAS,EACpClG,EAAOp5F,KAAM8iC,EAAKhzD,KAAM,KAAM,CAAEwvH,IAAQ3vH,QAErC+iI,EAAkB5vE,IACtB2vE,EAAgB9hI,KAAM0gI,GAGnBoB,EAAgB9iI,QACpBuiI,EAAavhI,KAAM,CAAEopH,KAAMuF,EAAKgS,SAAUmB,IAY9C,OALAnT,EAAMxvH,KACD8hI,EAAgBN,EAAS3hI,QAC7BuiI,EAAavhI,KAAM,CAAEopH,KAAMuF,EAAKgS,SAAUA,EAASn+H,MAAOy+H,KAGpDM,GAGRS,QAAS,SAAU9kI,EAAM+kI,GACxB5kI,OAAOC,eAAgBmrH,EAAO96E,MAAMpvC,UAAWrB,EAAM,CACpDK,YAAY,EACZy9E,cAAc,EAEdx9E,IAAKyqH,EAAYga,GAChB,WACC,GAAK9iI,KAAKgyD,cACR,OAAO8wE,EAAM9iI,KAAKgyD,gBAGrB,WACC,GAAKhyD,KAAKgyD,cACR,OAAOhyD,KAAKgyD,cAAej0D,IAI/Bq+E,IAAK,SAAU39E,GACdP,OAAOC,eAAgB6B,KAAMjC,EAAM,CAClCK,YAAY,EACZy9E,cAAc,EACdI,UAAU,EACVx9E,MAAOA,QAMX4jI,IAAK,SAAUrwE,GACd,OAAOA,EAAes3D,EAAOgB,SAC5Bt4D,EACA,IAAIs3D,EAAO96E,MAAOwjB,IAGpBooE,QAAS,CACR76E,KAAM,CAGLwjF,UAAU,GAEX91H,MAAO,CAGN80H,MAAO,SAAUxuH,GAIhB,IAAIud,EAAK9wB,MAAQuT,EAWjB,OARKqrH,GAAer7H,KAAMutB,EAAGpoB,OAC5BooB,EAAG7jB,OAAS2tF,EAAU9pE,EAAI,UAG1BiwG,GAAgBjwG,EAAI,QAAS0vG,KAIvB,GAER5nD,QAAS,SAAUrlE,GAIlB,IAAIud,EAAK9wB,MAAQuT,EAUjB,OAPKqrH,GAAer7H,KAAMutB,EAAGpoB,OAC5BooB,EAAG7jB,OAAS2tF,EAAU9pE,EAAI,UAE1BiwG,GAAgBjwG,EAAI,UAId,GAKRnuB,SAAU,SAAUuK,GACnB,IAAIvN,EAASuN,EAAMvN,OACnB,OAAOi/H,GAAer7H,KAAM5D,EAAO+I,OAClC/I,EAAOsN,OAAS2tF,EAAUj7F,EAAQ,UAClC+8H,EAASr+H,IAAKsB,EAAQ,UACtBi7F,EAAUj7F,EAAQ,OAIrBqjI,aAAc,CACbN,aAAc,SAAUx1H,QAID/L,IAAjB+L,EAAMmT,QAAwBnT,EAAM8kD,gBACxC9kD,EAAM8kD,cAAcilC,YAAc/pF,EAAMmT,YA8F7CipG,EAAO6Y,YAAc,SAAUlY,EAAMvhH,EAAMo6D,GAGrCmnD,EAAKvqD,qBACTuqD,EAAKvqD,oBAAqBh3D,EAAMo6D,IAIlCwmD,EAAO96E,MAAQ,SAAU5vB,EAAK1Z,GAG7B,KAAQlF,gBAAgBspH,EAAO96E,OAC9B,OAAO,IAAI86E,EAAO96E,MAAO5vB,EAAK1Z,GAI1B0Z,GAAOA,EAAIlW,MACf1I,KAAKgyD,cAAgBpzC,EACrB5e,KAAK0I,KAAOkW,EAAIlW,KAIhB1I,KAAK+2F,mBAAqBn4E,EAAIo4E,uBACH71F,IAAzByd,EAAIo4E,mBAGgB,IAApBp4E,EAAIq4E,YACLupC,GACAC,GAKDzgI,KAAKL,OAAWif,EAAIjf,QAAkC,IAAxBif,EAAIjf,OAAOqR,SACxC4N,EAAIjf,OAAO2zB,WACX1U,EAAIjf,OAELK,KAAK8iF,cAAgBlkE,EAAIkkE,cACzB9iF,KAAK2gG,cAAgB/hF,EAAI+hF,eAIzB3gG,KAAK0I,KAAOkW,EAIR1Z,GACJokH,EAAOv/G,OAAQ/J,KAAMkF,GAItBlF,KAAK43F,UAAYh5E,GAAOA,EAAIg5E,WAAa9sF,KAAK+sF,MAG9C73F,KAAMspH,EAAOgB,UAAY,GAK1BhB,EAAO96E,MAAMpvC,UAAY,CACxBoC,YAAa8nH,EAAO96E,MACpBuoD,mBAAoB0pC,GACpB3sC,qBAAsB2sC,GACtB+B,8BAA+B/B,GAC/BwC,aAAa,EAEbluF,eAAgB,WACf,IAAI3yC,EAAIpC,KAAKgyD,cAEbhyD,KAAK+2F,mBAAqBypC,GAErBp+H,IAAMpC,KAAKijI,aACf7gI,EAAE2yC,kBAGJ5nC,gBAAiB,WAChB,IAAI/K,EAAIpC,KAAKgyD,cAEbhyD,KAAK8zF,qBAAuB0sC,GAEvBp+H,IAAMpC,KAAKijI,aACf7gI,EAAE+K,mBAGJ4zD,yBAA0B,WACzB,IAAI3+D,EAAIpC,KAAKgyD,cAEbhyD,KAAKwiI,8BAAgChC,GAEhCp+H,IAAMpC,KAAKijI,aACf7gI,EAAE2+D,2BAGH/gE,KAAKmN,oBAKPm8G,EAAOU,KAAM,CACZ1wB,QAAQ,EACR5B,SAAS,EACTC,YAAY,EACZ6O,gBAAgB,EAChBh0B,SAAS,EACT0mB,QAAQ,EACRzB,YAAY,EACZnY,SAAS,EACT7K,OAAO,EACPwB,OAAO,EACPxD,UAAU,EACVhV,MAAM,EACN87B,MAAQ,EACRjnB,MAAM,EACN0wB,UAAU,EACVjkG,KAAK,EACLogE,SAAS,EACT4Y,QAAQ,EACR2oB,SAAS,EACTF,SAAS,EACTC,SAAS,EACTyiC,SAAS,EACTC,SAAS,EACTliC,WAAW,EACXM,aAAa,EACbn+B,SAAS,EACTka,SAAS,EACTipB,eAAe,EACf1F,WAAW,EACXrsB,SAAS,EAETE,MAAO,SAAUxnE,GAChB,IAAI6qE,EAAS7qE,EAAM6qE,OAGnB,OAAoB,MAAf7qE,EAAMwnE,OAAiB2rD,GAAU98H,KAAM2J,EAAMxE,MACxB,MAAlBwE,EAAM81F,SAAmB91F,EAAM81F,SAAW91F,EAAMiyD,SAIlDjyD,EAAMwnE,YAAoBvzE,IAAX42E,GAAwBuoD,GAAY/8H,KAAM2J,EAAMxE,MACtD,EAATqvE,EACG,EAGM,EAATA,EACG,EAGM,EAATA,EACG,EAGD,EAGD7qE,EAAMwnE,QAEZ40C,EAAOp8G,MAAM21H,SAEhBvZ,EAAOU,KAAM,CAAE5qF,MAAO,UAAWy/B,KAAM,YAAc,SAAUn2D,EAAMy4H,GACpE7X,EAAOp8G,MAAMktH,QAAS1xH,GAAS,CAG9Bq5H,MAAO,WAQN,OAHAhB,GAAgB/gI,KAAM0I,EAAMg4H,KAGrB,GAER9nD,QAAS,WAMR,OAHAmoD,GAAgB/gI,KAAM0I,IAGf,GAGRy4H,aAAcA,KAYhB7X,EAAOU,KAAM,CACZoZ,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUC,EAAMnB,GAClB/Y,EAAOp8G,MAAMktH,QAASoJ,GAAS,CAC9BrC,aAAckB,EACdR,SAAUQ,EAEVv/D,OAAQ,SAAU51D,GACjB,IAAI48G,EACHnqH,EAASK,KACTyjI,EAAUv2H,EAAMyzF,cAChB4gC,EAAYr0H,EAAMq0H,UASnB,OALMkC,IAAaA,IAAY9jI,GAAW2pH,EAAO9qD,SAAU7+D,EAAQ8jI,MAClEv2H,EAAMxE,KAAO64H,EAAUG,SACvB5X,EAAMyX,EAAU7+C,QAAQ3iF,MAAOC,KAAMJ,WACrCsN,EAAMxE,KAAO25H,GAEPvY,MAKVR,EAAOhC,GAAGv9G,OAAQ,CAEjB6E,GAAI,SAAUgyH,EAAO59H,EAAUuQ,EAAM+zG,GACpC,OAAO14G,GAAI5O,KAAM4gI,EAAO59H,EAAUuQ,EAAM+zG,IAEzCuZ,IAAK,SAAUD,EAAO59H,EAAUuQ,EAAM+zG,GACrC,OAAO14G,GAAI5O,KAAM4gI,EAAO59H,EAAUuQ,EAAM+zG,EAAI,IAE7Cx4G,IAAK,SAAU8xH,EAAO59H,EAAUskH,GAC/B,IAAIia,EAAW74H,EACf,GAAKk4H,GAASA,EAAM7rF,gBAAkB6rF,EAAMW,UAW3C,OARAA,EAAYX,EAAMW,UAClBjY,EAAQsX,EAAM0B,gBAAiBxzH,IAC9ByyH,EAAUvR,UACTuR,EAAUG,SAAW,IAAMH,EAAUvR,UACrCuR,EAAUG,SACXH,EAAUv+H,SACVu+H,EAAU7+C,SAEJ1iF,KAER,GAAsB,iBAAV4gI,EAAqB,CAGhC,IAAMl4H,KAAQk4H,EACb5gI,KAAK8O,IAAKpG,EAAM1F,EAAU49H,EAAOl4H,IAElC,OAAO1I,KAWR,OATkB,IAAbgD,GAA0C,mBAAbA,IAGjCskH,EAAKtkH,EACLA,OAAW7B,IAEA,IAAPmmH,IACJA,EAAKmZ,IAECzgI,KAAKgqH,KAAM,WACjBV,EAAOp8G,MAAM9E,OAAQpI,KAAM4gI,EAAOtZ,EAAItkH,QAMzC,IAKC0gI,GAAY,8FAOZC,GAAe,wBAGfC,GAAW,oCACXC,GAAe,2CAGhB,SAASC,GAAoB7Z,EAAMlwG,GAClC,OAAK6gF,EAAUqvB,EAAM,UACpBrvB,EAA+B,KAArB7gF,EAAQ/I,SAAkB+I,EAAUA,EAAQ8W,WAAY,OAE3Dy4F,EAAQW,GAAO/hH,SAAU,SAAW,IAGrC+hH,EAIR,SAAS8Z,GAAe9Z,GAEvB,OADAA,EAAKvhH,MAAyC,OAAhCuhH,EAAKjoD,aAAc,SAAsB,IAAMioD,EAAKvhH,KAC3DuhH,EAER,SAAS+Z,GAAe/Z,GAOvB,MAN2C,WAApCA,EAAKvhH,MAAQ,IAAKrF,MAAO,EAAG,GAClC4mH,EAAKvhH,KAAOuhH,EAAKvhH,KAAKrF,MAAO,GAE7B4mH,EAAKvsB,gBAAiB,QAGhBusB,EAGR,SAASga,GAAgBrlH,EAAKslH,GAC7B,IAAI1mI,EAAGC,EAAGiL,EAAMy7H,EAAUC,EAAUC,EAAUC,EAAUhD,EAExD,GAAuB,IAAlB4C,EAAKlzH,SAAV,CAKA,GAAK0rH,EAASD,QAAS79G,KACtBulH,EAAWzH,EAASb,OAAQj9G,GAC5BwlH,EAAW1H,EAAStgD,IAAK8nD,EAAMC,GAC/B7C,EAAS6C,EAAS7C,QAMjB,IAAM54H,YAHC07H,EAASthE,OAChBshE,EAAS9C,OAAS,GAEJA,EACb,IAAM9jI,EAAI,EAAGC,EAAI6jI,EAAQ54H,GAAO7I,OAAQrC,EAAIC,EAAGD,IAC9C8rH,EAAOp8G,MAAMsH,IAAK0vH,EAAMx7H,EAAM44H,EAAQ54H,GAAQlL,IAO7Cm/H,EAASF,QAAS79G,KACtBylH,EAAW1H,EAASd,OAAQj9G,GAC5B0lH,EAAWhb,EAAOv/G,OAAQ,GAAIs6H,GAE9B1H,EAASvgD,IAAK8nD,EAAMI,KAKtB,SAASC,GAAU3lH,EAAKslH,GACvB,IAAItpC,EAAWspC,EAAKtpC,SAASpxC,cAGX,UAAboxC,GAAwBgkC,GAAer7H,KAAMqb,EAAIlW,MACrDw7H,EAAKzqH,QAAUmF,EAAInF,QAGK,UAAbmhF,GAAqC,aAAbA,IACnCspC,EAAKnmC,aAAen/E,EAAIm/E,cAI1B,SAASymC,GAAUC,EAAYliI,EAAMuG,EAAU+2H,GAG9Ct9H,EAAOiP,EAAOzR,MAAO,GAAIwC,GAEzB,IAAIw9H,EAAUv1E,EAAOo1E,EAAS8E,EAAY5gI,EAAMg4D,EAC/Ct+D,EAAI,EACJC,EAAIgnI,EAAW5kI,OACf8kI,EAAWlnI,EAAI,EACfgB,EAAQ8D,EAAM,GACdqiI,EAAkB9b,EAAYrqH,GAG/B,GAAKmmI,GACDnnI,EAAI,GAAsB,iBAAVgB,IAChBoqH,EAAQsX,YAAcyD,GAASrgI,KAAM9E,GACxC,OAAOgmI,EAAWza,KAAM,SAAU/2F,GACjC,IAAIb,EAAOqyG,EAAWva,GAAIj3F,GACrB2xG,IACJriI,EAAM,GAAM9D,EAAMd,KAAMqC,KAAMizB,EAAOb,EAAKw1C,SAE3C48D,GAAUpyG,EAAM7vB,EAAMuG,EAAU+2H,KAIlC,GAAKpiI,IAEJ+sD,GADAu1E,EAAWJ,GAAep9H,EAAMkiI,EAAY,GAAI1gI,eAAe,EAAO0gI,EAAY5E,IACjEhvG,WAEmB,IAA/BkvG,EAAS/xD,WAAWnuE,SACxBkgI,EAAWv1E,GAIPA,GAASq1E,GAAU,CAOvB,IALA6E,GADA9E,EAAUtW,EAAOx/G,IAAKq1H,GAAQY,EAAU,UAAYgE,KAC/BlkI,OAKbrC,EAAIC,EAAGD,IACdsG,EAAOi8H,EAEFviI,IAAMmnI,IACV7gI,EAAOwlH,EAAOvjH,MAAOjC,GAAM,GAAM,GAG5B4gI,GAIJpb,EAAOpsD,MAAO0iE,EAAST,GAAQr7H,EAAM,YAIvCgF,EAASnL,KAAM8mI,EAAYjnI,GAAKsG,EAAMtG,GAGvC,GAAKknI,EAOJ,IANA5oE,EAAM8jE,EAASA,EAAQ//H,OAAS,GAAIkE,cAGpCulH,EAAOx/G,IAAK81H,EAASoE,IAGfxmI,EAAI,EAAGA,EAAIknI,EAAYlnI,IAC5BsG,EAAO87H,EAASpiI,GACXshI,GAAYv7H,KAAMO,EAAK4E,MAAQ,MAClCg0H,EAASb,OAAQ/3H,EAAM,eACxBwlH,EAAO9qD,SAAU1C,EAAKh4D,KAEjBA,EAAK8a,KAA8C,YAArC9a,EAAK4E,MAAQ,IAAK8gD,cAG/B8/D,EAAOub,WAAa/gI,EAAKolH,UAC7BI,EAAOub,SAAU/gI,EAAK8a,IAAK,CAC1BqqG,MAAOnlH,EAAKmlH,OAASnlH,EAAKk+D,aAAc,WAI1CmnD,EAASrlH,EAAKwsE,YAAY7tE,QAASohI,GAAc,IAAM//H,EAAMg4D,IAQnE,OAAO2oE,EAGR,SAASr8H,GAAQ6hH,EAAMjnH,EAAU8hI,GAKhC,IAJA,IAAIhhI,EACHm8H,EAAQj9H,EAAWsmH,EAAOt6G,OAAQhM,EAAUinH,GAASA,EACrDzsH,EAAI,EAE4B,OAAvBsG,EAAOm8H,EAAOziI,IAAeA,IAChCsnI,GAA8B,IAAlBhhI,EAAKkN,UACtBs4G,EAAOyb,UAAW5F,GAAQr7H,IAGtBA,EAAKwvB,aACJwxG,GAAYnH,GAAY75H,IAC5Bs7H,GAAeD,GAAQr7H,EAAM,WAE9BA,EAAKwvB,WAAWvuB,YAAajB,IAI/B,OAAOmmH,EAGRX,EAAOv/G,OAAQ,CACdm2H,cAAe,SAAUt4D,GACxB,OAAOA,EAAKnlE,QAASihI,GAAW,cAGjC39H,MAAO,SAAUkkH,EAAM+a,EAAeC,GACrC,IAAIznI,EAAGC,EAAGynI,EAAaC,EACtBp/H,EAAQkkH,EAAKhyD,WAAW,GACxBmtE,EAASzH,GAAY1T,GAGtB,KAAMpB,EAAQuX,gBAAsC,IAAlBnW,EAAKj5G,UAAoC,KAAlBi5G,EAAKj5G,UAC3Ds4G,EAAOqN,SAAU1M,IAMnB,IAHAkb,EAAehG,GAAQp5H,GAGjBvI,EAAI,EAAGC,GAFbynI,EAAc/F,GAAQlV,IAEOpqH,OAAQrC,EAAIC,EAAGD,IAC3C+mI,GAAUW,EAAa1nI,GAAK2nI,EAAc3nI,IAK5C,GAAKwnI,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAe/F,GAAQlV,GACrCkb,EAAeA,GAAgBhG,GAAQp5H,GAEjCvI,EAAI,EAAGC,EAAIynI,EAAYrlI,OAAQrC,EAAIC,EAAGD,IAC3CymI,GAAgBiB,EAAa1nI,GAAK2nI,EAAc3nI,SAGjDymI,GAAgBha,EAAMlkH,GAWxB,OANAo/H,EAAehG,GAAQp5H,EAAO,WACZlG,OAAS,GAC1Bu/H,GAAe+F,GAAeC,GAAUjG,GAAQlV,EAAM,WAIhDlkH,GAGRg/H,UAAW,SAAUlb,GAKpB,IAJA,IAAIt2G,EAAM02G,EAAMvhH,EACf0xH,EAAU9Q,EAAOp8G,MAAMktH,QACvB58H,EAAI,OAE6B2D,KAAxB8oH,EAAOJ,EAAOrsH,IAAqBA,IAC5C,GAAK6+H,EAAYpS,GAAS,CACzB,GAAO12G,EAAO02G,EAAMyS,EAASpS,SAAc,CAC1C,GAAK/2G,EAAK+tH,OACT,IAAM54H,KAAQ6K,EAAK+tH,OACblH,EAAS1xH,GACb4gH,EAAOp8G,MAAM9E,OAAQ6hH,EAAMvhH,GAI3B4gH,EAAO6Y,YAAalY,EAAMvhH,EAAM6K,EAAKuvD,QAOxCmnD,EAAMyS,EAASpS,cAAYnpH,EAEvB8oH,EAAM0S,EAASrS,WAInBL,EAAM0S,EAASrS,cAAYnpH,OAOhCmoH,EAAOhC,GAAGv9G,OAAQ,CACjBs7H,OAAQ,SAAUriI,GACjB,OAAOoF,GAAQpI,KAAMgD,GAAU,IAGhCoF,OAAQ,SAAUpF,GACjB,OAAOoF,GAAQpI,KAAMgD,IAGtBs8B,KAAM,SAAU7gC,GACf,OAAOo9H,EAAQ77H,KAAM,SAAUvB,GAC9B,YAAiB0C,IAAV1C,EACN6qH,EAAOhqF,KAAMt/B,MACbA,KAAKy+C,QAAQurE,KAAM,WACK,IAAlBhqH,KAAKgR,UAAoC,KAAlBhR,KAAKgR,UAAqC,IAAlBhR,KAAKgR,WACxDhR,KAAKswE,YAAc7xE,MAGpB,KAAMA,EAAOmB,UAAUC,SAG3BqL,OAAQ,WACP,OAAOs5H,GAAUxkI,KAAMJ,UAAW,SAAUqqH,GACpB,IAAlBjqH,KAAKgR,UAAoC,KAAlBhR,KAAKgR,UAAqC,IAAlBhR,KAAKgR,UAC3C8yH,GAAoB9jI,KAAMiqH,GAChCrlH,YAAaqlH,MAKvBx+G,QAAS,WACR,OAAO+4H,GAAUxkI,KAAMJ,UAAW,SAAUqqH,GAC3C,GAAuB,IAAlBjqH,KAAKgR,UAAoC,KAAlBhR,KAAKgR,UAAqC,IAAlBhR,KAAKgR,SAAiB,CACzE,IAAIrR,EAASmkI,GAAoB9jI,KAAMiqH,GACvCtqH,EAAOixB,aAAcq5F,EAAMtqH,EAAOkxB,gBAKrC+B,OAAQ,WACP,OAAO4xG,GAAUxkI,KAAMJ,UAAW,SAAUqqH,GACtCjqH,KAAKszB,YACTtzB,KAAKszB,WAAW1C,aAAcq5F,EAAMjqH,SAKvCw1B,MAAO,WACN,OAAOgvG,GAAUxkI,KAAMJ,UAAW,SAAUqqH,GACtCjqH,KAAKszB,YACTtzB,KAAKszB,WAAW1C,aAAcq5F,EAAMjqH,KAAKuzB,gBAK5CkrB,MAAO,WAIN,IAHA,IAAIwrE,EACHzsH,EAAI,EAE2B,OAAtBysH,EAAOjqH,KAAMxC,IAAeA,IACd,IAAlBysH,EAAKj5G,WAGTs4G,EAAOyb,UAAW5F,GAAQlV,GAAM,IAGhCA,EAAK35C,YAAc,IAIrB,OAAOtwE,MAGR+F,MAAO,SAAUi/H,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDjlI,KAAK8J,IAAK,WAChB,OAAOw/G,EAAOvjH,MAAO/F,KAAMglI,EAAeC,MAI5Cr9D,KAAM,SAAUnpE,GACf,OAAOo9H,EAAQ77H,KAAM,SAAUvB,GAC9B,IAAIwrH,EAAOjqH,KAAM,IAAO,GACvBxC,EAAI,EACJC,EAAIuC,KAAKH,OAEV,QAAesB,IAAV1C,GAAyC,IAAlBwrH,EAAKj5G,SAChC,OAAOi5G,EAAKhqF,UAIb,GAAsB,iBAAVxhC,IAAuBklI,GAAapgI,KAAM9E,KACpDsgI,IAAWF,GAAS1zC,KAAM1sF,IAAW,CAAE,GAAI,KAAQ,GAAI+qD,eAAkB,CAE1E/qD,EAAQ6qH,EAAO4W,cAAezhI,GAE9B,IACC,KAAQjB,EAAIC,EAAGD,IAIS,KAHvBysH,EAAOjqH,KAAMxC,IAAO,IAGVwT,WACTs4G,EAAOyb,UAAW5F,GAAQlV,GAAM,IAChCA,EAAKhqF,UAAYxhC,GAInBwrH,EAAO,EAGN,MAAQ7nH,KAGN6nH,GACJjqH,KAAKy+C,QAAQvzC,OAAQzM,IAEpB,KAAMA,EAAOmB,UAAUC,SAG3BylI,YAAa,WACZ,IAAIzF,EAAU,GAGd,OAAO2E,GAAUxkI,KAAMJ,UAAW,SAAUqqH,GAC3C,IAAIpxF,EAAS74B,KAAKszB,WAEbg2F,EAAOuB,QAAS7qH,KAAM6/H,GAAY,IACtCvW,EAAOyb,UAAW5F,GAAQn/H,OACrB64B,GACJA,EAAOy/B,aAAc2xD,EAAMjqH,QAK3B6/H,MAILvW,EAAOU,KAAM,CACZ5gH,SAAU,SACVm8H,UAAW,UACX30G,aAAc,SACd40G,YAAa,QACbC,WAAY,eACV,SAAU1nI,EAAM2nI,GAClBpc,EAAOhC,GAAIvpH,GAAS,SAAUiF,GAO7B,IANA,IAAI6mH,EACHC,EAAM,GACN1yD,EAASkyD,EAAQtmH,GACjB0nD,EAAO0M,EAAOv3D,OAAS,EACvBrC,EAAI,EAEGA,GAAKktD,EAAMltD,IAClBqsH,EAAQrsH,IAAMktD,EAAO1qD,KAAOA,KAAK+F,OAAO,GACxCujH,EAAQlyD,EAAQ55D,IAAOkoI,GAAY7b,GAInChpH,EAAKd,MAAO+pH,EAAKD,EAAMxrH,OAGxB,OAAO2B,KAAK4pH,UAAWE,MAGzB,IAAI6b,GAAY,IAAI9+D,OAAQ,KAAO22D,GAAO,kBAAmB,KAEzDoI,GAAY,SAAU3b,GAKxB,IAAIxsD,EAAOwsD,EAAKlmH,cAAcg+F,YAM9B,OAJMtkC,GAASA,EAAKooE,SACnBpoE,EAAO76D,GAGD66D,EAAKxH,iBAAkBg0D,IAG5B6b,GAAY,IAAIj/D,OAAQ62D,GAAUz8H,KAAM,KAAO,KAiGnD,SAAS8kI,GAAQ9b,EAAMlsH,EAAMioI,GAC5B,IAAIxhI,EAAO4yB,EAAU+J,EAAU2oF,EAM9BzlH,EAAQ4lH,EAAK5lH,MAqCd,OAnCA2hI,EAAWA,GAAYJ,GAAW3b,MAQpB,MAFbH,EAAMkc,EAAS3gI,iBAAkBtH,IAAUioI,EAAUjoI,KAEjC4/H,GAAY1T,KAC/BH,EAAMR,EAAOjlH,MAAO4lH,EAAMlsH,KAQrB8qH,EAAQod,kBAAoBN,GAAUpiI,KAAMumH,IAASgc,GAAUviI,KAAMxF,KAG1EyG,EAAQH,EAAMG,MACd4yB,EAAW/yB,EAAM+yB,SACjB+J,EAAW98B,EAAM88B,SAGjB98B,EAAM+yB,SAAW/yB,EAAM88B,SAAW98B,EAAMG,MAAQslH,EAChDA,EAAMkc,EAASxhI,MAGfH,EAAMG,MAAQA,EACdH,EAAM+yB,SAAWA,EACjB/yB,EAAM88B,SAAWA,SAIJhgC,IAAR2oH,EAINA,EAAM,GACNA,EAIF,SAASoc,GAAcC,EAAaC,GAGnC,MAAO,CACN/nI,IAAK,WACJ,IAAK8nI,IASL,OAASnmI,KAAK3B,IAAM+nI,GAASrmI,MAAOC,KAAMJ,kBALlCI,KAAK3B,OA3JhB,WAIC,SAASgoI,IAGR,GAAM5nD,EAAN,CAIArqE,EAAU/P,MAAMuB,QAAU,+EAE1B64E,EAAIp6E,MAAMuB,QACT,4HAGD+gD,GAAgB/hD,YAAawP,GAAYxP,YAAa65E,GAEtD,IAAI6nD,EAAW1jI,EAAOqzD,iBAAkBwoB,GACxC8nD,EAAoC,OAAjBD,EAAS/hI,IAG5BiiI,EAAsE,KAA9CC,EAAoBH,EAAS70G,YAIrDgtD,EAAIp6E,MAAM+xC,MAAQ,MAClBswF,EAA6D,KAAzCD,EAAoBH,EAASlwF,OAIjDuwF,EAAgE,KAAzCF,EAAoBH,EAAS9hI,OAMpDi6E,EAAIp6E,MAAMC,SAAW,WACrBsiI,EAAiE,KAA9CH,EAAoBhoD,EAAI55E,YAAc,GAEzD8hD,GAAgB5hD,YAAaqP,GAI7BqqE,EAAM,MAGP,SAASgoD,EAAoBI,GAC5B,OAAO1wH,KAAK+sD,MAAO32D,WAAYs6H,IAGhC,IAAIN,EAAkBI,EAAsBC,EAAkBF,EAC7DF,EACApyH,EAAYvR,EAASC,cAAe,OACpC27E,EAAM57E,EAASC,cAAe,OAGzB27E,EAAIp6E,QAMVo6E,EAAIp6E,MAAMyiI,eAAiB,cAC3BroD,EAAIxmB,WAAW,GAAO5zD,MAAMyiI,eAAiB,GAC7Cje,EAAQke,gBAA+C,gBAA7BtoD,EAAIp6E,MAAMyiI,eAEpCxd,EAAOv/G,OAAQ8+G,EAAS,CACvBme,kBAAmB,WAElB,OADAX,IACOM,GAERV,eAAgB,WAEf,OADAI,IACOK,GAERO,cAAe,WAEd,OADAZ,IACOE,GAERW,mBAAoB,WAEnB,OADAb,IACOG,GAERW,cAAe,WAEd,OADAd,IACOO,MAvFV,GAsKA,IAAIQ,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAaxkI,EAASC,cAAe,OAAQuB,MAC7CijI,GAAc,GAkBf,SAASC,GAAexpI,GACvB,IAAIypI,EAAQle,EAAOme,SAAU1pI,IAAUupI,GAAavpI,GAEpD,OAAKypI,IAGAzpI,KAAQspI,GACLtpI,EAEDupI,GAAavpI,GAxBrB,SAAyBA,GAMxB,IAHA,IAAI2pI,EAAU3pI,EAAM,GAAI2U,cAAgB3U,EAAKsF,MAAO,GACnD7F,EAAI4pI,GAAYvnI,OAETrC,KAEP,IADAO,EAAOqpI,GAAa5pI,GAAMkqI,KACbL,GACZ,OAAOtpI,EAeoB4pI,CAAgB5pI,IAAUA,GAIxD,IAKC6pI,GAAe,4BACfC,GAAc,MACdC,GAAU,CAAExjI,SAAU,WAAYyqB,WAAY,SAAUrC,QAAS,SACjEq7G,GAAqB,CACpBv6G,cAAe,IACfL,WAAY,OAGd,SAAS66G,GAAmB/d,EAAMxrH,EAAOwpI,GAIxC,IAAI9gF,EAAUs2E,GAAQtyC,KAAM1sF,GAC5B,OAAO0oD,EAGNhxC,KAAKuG,IAAK,EAAGyqC,EAAS,IAAQ8gF,GAAY,KAAU9gF,EAAS,IAAO,MACpE1oD,EAGF,SAASypI,GAAoBje,EAAMke,EAAW3hF,EAAK4hF,EAAavsE,EAAQwsE,GACvE,IAAI7qI,EAAkB,UAAd2qI,EAAwB,EAAI,EACnCG,EAAQ,EACRC,EAAQ,EAGT,GAAK/hF,KAAU4hF,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQ5qI,EAAI,EAAGA,GAAK,EAGN,WAARgpD,IACJ+hF,GAASjf,EAAOtkH,IAAKilH,EAAMzjE,EAAMk3E,GAAWlgI,IAAK,EAAMq+D,IAIlDusE,GAmBQ,YAAR5hF,IACJ+hF,GAASjf,EAAOtkH,IAAKilH,EAAM,UAAYyT,GAAWlgI,IAAK,EAAMq+D,IAIjD,WAARrV,IACJ+hF,GAASjf,EAAOtkH,IAAKilH,EAAM,SAAWyT,GAAWlgI,GAAM,SAAS,EAAMq+D,MAtBvE0sE,GAASjf,EAAOtkH,IAAKilH,EAAM,UAAYyT,GAAWlgI,IAAK,EAAMq+D,GAGhD,YAARrV,EACJ+hF,GAASjf,EAAOtkH,IAAKilH,EAAM,SAAWyT,GAAWlgI,GAAM,SAAS,EAAMq+D,GAItEysE,GAAShf,EAAOtkH,IAAKilH,EAAM,SAAWyT,GAAWlgI,GAAM,SAAS,EAAMq+D,IAoCzE,OAhBMusE,GAAeC,GAAe,IAInCE,GAASpyH,KAAKuG,IAAK,EAAGvG,KAAK42B,KAC1Bk9E,EAAM,SAAWke,EAAW,GAAIz1H,cAAgBy1H,EAAU9kI,MAAO,IACjEglI,EACAE,EACAD,EACA,MAIM,GAGDC,EAGR,SAASC,GAAkBve,EAAMke,EAAWG,GAG3C,IAAIzsE,EAAS+pE,GAAW3b,GAKvBme,IADmBvf,EAAQme,qBAAuBsB,IAEE,eAAnDhf,EAAOtkH,IAAKilH,EAAM,aAAa,EAAOpuD,GACvC4sE,EAAmBL,EAEnB74H,EAAMw2H,GAAQ9b,EAAMke,EAAWtsE,GAC/B6sE,EAAa,SAAWP,EAAW,GAAIz1H,cAAgBy1H,EAAU9kI,MAAO,GAIzE,GAAKsiI,GAAUpiI,KAAMgM,GAAQ,CAC5B,IAAM+4H,EACL,OAAO/4H,EAERA,EAAM,OAgCP,QApBQs5G,EAAQme,qBAAuBoB,GAC9B,SAAR74H,IACChD,WAAYgD,IAA0D,WAAjD+5G,EAAOtkH,IAAKilH,EAAM,WAAW,EAAOpuD,KAC1DouD,EAAK0e,iBAAiB9oI,SAEtBuoI,EAAiE,eAAnD9e,EAAOtkH,IAAKilH,EAAM,aAAa,EAAOpuD,IAKpD4sE,EAAmBC,KAAcze,KAEhC16G,EAAM06G,EAAMye,MAKdn5H,EAAMhD,WAAYgD,IAAS,GAI1B24H,GACCje,EACAke,EACAG,IAAWF,EAAc,SAAW,WACpCK,EACA5sE,EAGAtsD,GAEE,KA+SL,SAASq5H,GAAO3e,EAAMpiH,EAAS0Q,EAAMkK,EAAK/Y,GACzC,OAAO,IAAIk/H,GAAMxpI,UAAUmqH,KAAMU,EAAMpiH,EAAS0Q,EAAMkK,EAAK/Y,GA7S5D4/G,EAAOv/G,OAAQ,CAId8+H,SAAU,CACT/6G,QAAS,CACRzvB,IAAK,SAAU4rH,EAAM+b,GACpB,GAAKA,EAAW,CAGf,IAAIlc,EAAMic,GAAQ9b,EAAM,WACxB,MAAe,KAARH,EAAa,IAAMA,MAO9ByU,UAAW,CACVvyB,yBAA2B,EAC3BO,aAAe,EACf1/E,aAAe,EACf4/E,UAAY,EACZE,YAAc,EACdx/E,YAAc,EACd2/E,UAAY,EACZK,YAAc,EACdC,eAAiB,EACjBE,iBAAmB,EACnBP,SAAW,EACXC,YAAc,EACdE,cAAgB,EAChBM,YAAc,EACd1/E,SAAW,EACXlH,OAAS,EACT6mF,SAAW,EACXE,QAAU,EACVC,QAAU,EACVC,MAAQ,GAKT45B,SAAU,GAGVpjI,MAAO,SAAU4lH,EAAMlsH,EAAMU,EAAO6pI,GAGnC,GAAMre,GAA0B,IAAlBA,EAAKj5G,UAAoC,IAAlBi5G,EAAKj5G,UAAmBi5G,EAAK5lH,MAAlE,CAKA,IAAIylH,EAAKphH,EAAM00H,EACd0L,EAAW1M,EAAWr+H,GACtBgrI,EAAelB,GAAYtkI,KAAMxF,GACjCsG,EAAQ4lH,EAAK5lH,MAad,GARM0kI,IACLhrI,EAAOwpI,GAAeuB,IAIvB1L,EAAQ9T,EAAOuf,SAAU9qI,IAAUurH,EAAOuf,SAAUC,QAGrC3nI,IAAV1C,EA0CJ,OAAK2+H,GAAS,QAASA,QACwBj8H,KAA5C2oH,EAAMsT,EAAM/+H,IAAK4rH,GAAM,EAAOqe,IAEzBxe,EAIDzlH,EAAOtG,GA7CA,YAHd2K,SAAcjK,KAGcqrH,EAAM2T,GAAQtyC,KAAM1sF,KAAaqrH,EAAK,KACjErrH,EAAQu/H,GAAW/T,EAAMlsH,EAAM+rH,GAG/BphH,EAAO,UAIM,MAATjK,GAAiBA,GAAUA,IAOlB,WAATiK,GAAsBqgI,IAC1BtqI,GAASqrH,GAAOA,EAAK,KAASR,EAAOiV,UAAWuK,GAAa,GAAK,OAI7DjgB,EAAQke,iBAA6B,KAAVtoI,GAAiD,IAAjCV,EAAKuC,QAAS,gBAC9D+D,EAAOtG,GAAS,WAIXq/H,GAAY,QAASA,QACsBj8H,KAA9C1C,EAAQ2+H,EAAMhhD,IAAK6tC,EAAMxrH,EAAO6pI,MAE7BS,EACJ1kI,EAAM4pG,YAAalwG,EAAMU,GAEzB4F,EAAOtG,GAASU,MAkBpBuG,IAAK,SAAUilH,EAAMlsH,EAAMuqI,EAAOzsE,GACjC,IAAItsD,EAAKo6G,EAAKyT,EACb0L,EAAW1M,EAAWr+H,GA6BvB,OA5BgB8pI,GAAYtkI,KAAMxF,KAMjCA,EAAOwpI,GAAeuB,KAIvB1L,EAAQ9T,EAAOuf,SAAU9qI,IAAUurH,EAAOuf,SAAUC,KAGtC,QAAS1L,IACtB7tH,EAAM6tH,EAAM/+H,IAAK4rH,GAAM,EAAMqe,SAIjBnnI,IAARoO,IACJA,EAAMw2H,GAAQ9b,EAAMlsH,EAAM89D,IAId,WAARtsD,GAAoBxR,KAAQgqI,KAChCx4H,EAAMw4H,GAAoBhqI,IAIZ,KAAVuqI,GAAgBA,GACpB3e,EAAMp9G,WAAYgD,IACD,IAAV+4H,GAAkBxmD,SAAU6nC,GAAQA,GAAO,EAAIp6G,GAGhDA,KAIT+5G,EAAOU,KAAM,CAAE,SAAU,SAAW,SAAUxsH,EAAG2qI,GAChD7e,EAAOuf,SAAUV,GAAc,CAC9B9pI,IAAK,SAAU4rH,EAAM+b,EAAUsC,GAC9B,GAAKtC,EAIJ,OAAO4B,GAAarkI,KAAM+lH,EAAOtkH,IAAKilH,EAAM,aAQxCA,EAAK0e,iBAAiB9oI,QAAWoqH,EAAKxjE,wBAAwBjiD,MAIhEgkI,GAAkBve,EAAMke,EAAWG,GAHnCvK,GAAM9T,EAAM6d,GAAS,WACpB,OAAOU,GAAkBve,EAAMke,EAAWG,MAM/ClsD,IAAK,SAAU6tC,EAAMxrH,EAAO6pI,GAC3B,IAAInhF,EACH0U,EAAS+pE,GAAW3b,GAIpB+e,GAAsBngB,EAAQse,iBACT,aAApBtrE,EAAOv3D,SAIR8jI,GADkBY,GAAsBV,IAEY,eAAnDhf,EAAOtkH,IAAKilH,EAAM,aAAa,EAAOpuD,GACvCosE,EAAWK,EACVJ,GACCje,EACAke,EACAG,EACAF,EACAvsE,GAED,EAqBF,OAjBKusE,GAAeY,IACnBf,GAAY9xH,KAAK42B,KAChBk9E,EAAM,SAAWke,EAAW,GAAIz1H,cAAgBy1H,EAAU9kI,MAAO,IACjEkJ,WAAYsvD,EAAQssE,IACpBD,GAAoBje,EAAMke,EAAW,UAAU,EAAOtsE,GACtD,KAKGosE,IAAc9gF,EAAUs2E,GAAQtyC,KAAM1sF,KACb,QAA3B0oD,EAAS,IAAO,QAElB8iE,EAAK5lH,MAAO8jI,GAAc1pI,EAC1BA,EAAQ6qH,EAAOtkH,IAAKilH,EAAMke,IAGpBH,GAAmB/d,EAAMxrH,EAAOwpI,OAK1C3e,EAAOuf,SAASp3G,WAAay0G,GAAcrd,EAAQqe,mBAClD,SAAUjd,EAAM+b,GACf,GAAKA,EACJ,OAASz5H,WAAYw5H,GAAQ9b,EAAM,gBAClCA,EAAKxjE,wBAAwBn1B,KAC5BysG,GAAM9T,EAAM,CAAEx4F,WAAY,GAAK,WAC9B,OAAOw4F,EAAKxjE,wBAAwBn1B,QAElC,OAMRg4F,EAAOU,KAAM,CACZz8E,OAAQ,GACR0xB,QAAS,GACTgqE,OAAQ,SACN,SAAUx/E,EAAQz+C,GACpBs+G,EAAOuf,SAAUp/E,EAASz+C,GAAW,CACpCk+H,OAAQ,SAAUzqI,GAOjB,IANA,IAAIjB,EAAI,EACP2rI,EAAW,GAGXlnD,EAAyB,iBAAVxjF,EAAqBA,EAAMsR,MAAO,KAAQ,CAAEtR,GAEpDjB,EAAI,EAAGA,IACd2rI,EAAU1/E,EAASi0E,GAAWlgI,GAAMwN,GACnCi3E,EAAOzkF,IAAOykF,EAAOzkF,EAAI,IAAOykF,EAAO,GAGzC,OAAOknD,IAIO,WAAX1/E,IACJ6/D,EAAOuf,SAAUp/E,EAASz+C,GAASoxE,IAAM4rD,MAI3C1e,EAAOhC,GAAGv9G,OAAQ,CACjB/E,IAAK,SAAUjH,EAAMU,GACpB,OAAOo9H,EAAQ77H,KAAM,SAAUiqH,EAAMlsH,EAAMU,GAC1C,IAAIo9D,EAAQ9rC,EACXjmB,EAAM,GACNtM,EAAI,EAEL,GAAKsD,MAAMC,QAAShD,GAAS,CAI5B,IAHA89D,EAAS+pE,GAAW3b,GACpBl6F,EAAMhyB,EAAK8B,OAEHrC,EAAIuyB,EAAKvyB,IAChBsM,EAAK/L,EAAMP,IAAQ8rH,EAAOtkH,IAAKilH,EAAMlsH,EAAMP,IAAK,EAAOq+D,GAGxD,OAAO/xD,EAGR,YAAiB3I,IAAV1C,EACN6qH,EAAOjlH,MAAO4lH,EAAMlsH,EAAMU,GAC1B6qH,EAAOtkH,IAAKilH,EAAMlsH,IACjBA,EAAMU,EAAOmB,UAAUC,OAAS,MAQrCypH,EAAOsf,MAAQA,GAEfA,GAAMxpI,UAAY,CACjBoC,YAAaonI,GACbrf,KAAM,SAAUU,EAAMpiH,EAAS0Q,EAAMkK,EAAK/Y,EAAQgyD,GACjD17D,KAAKiqH,KAAOA,EACZjqH,KAAKuY,KAAOA,EACZvY,KAAK0J,OAASA,GAAU4/G,EAAO5/G,OAAO/G,SACtC3C,KAAK6H,QAAUA,EACf7H,KAAK+e,MAAQ/e,KAAK63F,IAAM73F,KAAKwvH,MAC7BxvH,KAAKyiB,IAAMA,EACXziB,KAAK07D,KAAOA,IAAU4tD,EAAOiV,UAAWhmH,GAAS,GAAK,OAEvDi3G,IAAK,WACJ,IAAI4N,EAAQwL,GAAMQ,UAAWppI,KAAKuY,MAElC,OAAO6kH,GAASA,EAAM/+H,IACrB++H,EAAM/+H,IAAK2B,MACX4oI,GAAMQ,UAAUzmI,SAAStE,IAAK2B,OAEhCqpI,IAAK,SAAUxmE,GACd,IAAIymE,EACHlM,EAAQwL,GAAMQ,UAAWppI,KAAKuY,MAoB/B,OAlBKvY,KAAK6H,QAAQ2B,SACjBxJ,KAAKgnC,IAAMsiG,EAAQhgB,EAAO5/G,OAAQ1J,KAAK0J,QACtCm5D,EAAS7iE,KAAK6H,QAAQ2B,SAAWq5D,EAAS,EAAG,EAAG7iE,KAAK6H,QAAQ2B,UAG9DxJ,KAAKgnC,IAAMsiG,EAAQzmE,EAEpB7iE,KAAK63F,KAAQ73F,KAAKyiB,IAAMziB,KAAK+e,OAAUuqH,EAAQtpI,KAAK+e,MAE/C/e,KAAK6H,QAAQmX,MACjBhf,KAAK6H,QAAQmX,KAAKrhB,KAAMqC,KAAKiqH,KAAMjqH,KAAK63F,IAAK73F,MAGzCo9H,GAASA,EAAMhhD,IACnBghD,EAAMhhD,IAAKp8E,MAEX4oI,GAAMQ,UAAUzmI,SAASy5E,IAAKp8E,MAExBA,OAIT4oI,GAAMxpI,UAAUmqH,KAAKnqH,UAAYwpI,GAAMxpI,UAEvCwpI,GAAMQ,UAAY,CACjBzmI,SAAU,CACTtE,IAAK,SAAU6/H,GACd,IAAI79G,EAIJ,OAA6B,IAAxB69G,EAAMjU,KAAKj5G,UACa,MAA5BktH,EAAMjU,KAAMiU,EAAM3lH,OAAoD,MAAlC2lH,EAAMjU,KAAK5lH,MAAO65H,EAAM3lH,MACrD2lH,EAAMjU,KAAMiU,EAAM3lH,OAO1B8H,EAASipG,EAAOtkH,IAAKk5H,EAAMjU,KAAMiU,EAAM3lH,KAAM,MAGhB,SAAX8H,EAAwBA,EAAJ,GAEvC+7D,IAAK,SAAU8hD,GAKT5U,EAAOnmG,GAAGnE,KAAMk/G,EAAM3lH,MAC1B+wG,EAAOnmG,GAAGnE,KAAMk/G,EAAM3lH,MAAQ2lH,GACK,IAAxBA,EAAMjU,KAAKj5G,WACrBs4G,EAAOuf,SAAU3K,EAAM3lH,OAC4B,MAAnD2lH,EAAMjU,KAAK5lH,MAAOkjI,GAAerJ,EAAM3lH,OAGxC2lH,EAAMjU,KAAMiU,EAAM3lH,MAAS2lH,EAAMrmC,IAFjCyxB,EAAOjlH,MAAO65H,EAAMjU,KAAMiU,EAAM3lH,KAAM2lH,EAAMrmC,IAAMqmC,EAAMxiE,SAU5DktE,GAAMQ,UAAUxmG,UAAYgmG,GAAMQ,UAAUz4G,WAAa,CACxDyrD,IAAK,SAAU8hD,GACTA,EAAMjU,KAAKj5G,UAAYktH,EAAMjU,KAAK32F,aACtC4qG,EAAMjU,KAAMiU,EAAM3lH,MAAS2lH,EAAMrmC,OAKpCyxB,EAAO5/G,OAAS,CACf6/H,OAAQ,SAAUjqI,GACjB,OAAOA,GAERkqI,MAAO,SAAUlqI,GAChB,MAAO,GAAM6W,KAAKszH,IAAKnqI,EAAI6W,KAAKuzH,IAAO,GAExC/mI,SAAU,SAGX2mH,EAAOnmG,GAAKylH,GAAMxpI,UAAUmqH,KAG5BD,EAAOnmG,GAAGnE,KAAO,GAKjB,IACC2qH,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApB/mI,EAASyY,QAAoB1Y,EAAOwjH,sBACxCxjH,EAAOwjH,sBAAuB2jB,IAE9BnnI,EAAOyJ,WAAY09H,GAAUzgB,EAAOnmG,GAAG6mH,UAGxC1gB,EAAOnmG,GAAG0lD,QAKZ,SAASohE,KAIR,OAHArnI,EAAOyJ,WAAY,WAClBs9H,QAAQxoI,IAEAwoI,GAAQ7+H,KAAK+sF,MAIvB,SAASqyC,GAAOxhI,EAAMyhI,GACrB,IAAIz1D,EACHl3E,EAAI,EACJ8a,EAAQ,CAAE7T,OAAQiE,GAKnB,IADAyhI,EAAeA,EAAe,EAAI,EAC1B3sI,EAAI,EAAGA,GAAK,EAAI2sI,EAEvB7xH,EAAO,UADPo8D,EAAQgpD,GAAWlgI,KACS8a,EAAO,UAAYo8D,GAAUhsE,EAO1D,OAJKyhI,IACJ7xH,EAAMwV,QAAUxV,EAAM9T,MAAQkE,GAGxB4P,EAGR,SAAS8xH,GAAa3rI,EAAO8Z,EAAM29E,GAKlC,IAJA,IAAIgoC,EACHuG,GAAe4F,GAAUC,SAAU/xH,IAAU,IAAK/G,OAAQ64H,GAAUC,SAAU,MAC9Er3G,EAAQ,EACRpzB,EAAS4kI,EAAW5kI,OACbozB,EAAQpzB,EAAQozB,IACvB,GAAOirG,EAAQuG,EAAYxxG,GAAQt1B,KAAMu4F,EAAW39E,EAAM9Z,GAGzD,OAAOy/H,EAsNV,SAASmM,GAAWpgB,EAAMsgB,EAAY1iI,GACrC,IAAIwY,EACHmqH,EACAv3G,EAAQ,EACRpzB,EAASwqI,GAAUI,WAAW5qI,OAC9B85H,EAAWrQ,EAAOkQ,WAAWE,OAAQ,kBAG7B7wD,EAAKohD,OAEbphD,EAAO,WACN,GAAK2hE,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAcf,IAASM,KAC1BjP,EAAY7kH,KAAKuG,IAAK,EAAGw5E,EAAUrrF,UAAYqrF,EAAU1sF,SAAWkhI,GAKpE7nE,EAAU,GADHm4D,EAAY9kC,EAAU1sF,UAAY,GAEzCypB,EAAQ,EACRpzB,EAASq2F,EAAUy0C,OAAO9qI,OAEnBozB,EAAQpzB,EAAQozB,IACvBijE,EAAUy0C,OAAQ13G,GAAQo2G,IAAKxmE,GAMhC,OAHA82D,EAASW,WAAYrQ,EAAM,CAAE/zB,EAAWrzB,EAASm4D,IAG5Cn4D,EAAU,GAAKhjE,EACZm7H,GAIFn7H,GACL85H,EAASW,WAAYrQ,EAAM,CAAE/zB,EAAW,EAAG,IAI5CyjC,EAASY,YAAatQ,EAAM,CAAE/zB,KACvB,IAERA,EAAYyjC,EAASlB,QAAS,CAC7BxO,KAAMA,EACN/kH,MAAOokH,EAAOv/G,OAAQ,GAAIwgI,GAC1Bz+C,KAAMw9B,EAAOv/G,QAAQ,EAAM,CAC1B6gI,cAAe,GACflhI,OAAQ4/G,EAAO5/G,OAAO/G,UACpBkF,GACHgjI,mBAAoBN,EACpBO,gBAAiBjjI,EACjBgD,UAAW8+H,IAASM,KACpBzgI,SAAU3B,EAAQ2B,SAClBmhI,OAAQ,GACRP,YAAa,SAAU7xH,EAAMkK,GAC5B,IAAIy7G,EAAQ5U,EAAOsf,MAAO3e,EAAM/zB,EAAUpK,KAAMvzE,EAAMkK,EACpDyzE,EAAUpK,KAAK8+C,cAAeryH,IAAU29E,EAAUpK,KAAKpiF,QAEzD,OADAwsF,EAAUy0C,OAAO9pI,KAAMq9H,GAChBA,GAERjwH,KAAM,SAAU88H,GACf,IAAI93G,EAAQ,EAIXpzB,EAASkrI,EAAU70C,EAAUy0C,OAAO9qI,OAAS,EAC9C,GAAK2qI,EACJ,OAAOxqI,KAGR,IADAwqI,GAAU,EACFv3G,EAAQpzB,EAAQozB,IACvBijE,EAAUy0C,OAAQ13G,GAAQo2G,IAAK,GAUhC,OANK0B,GACJpR,EAASW,WAAYrQ,EAAM,CAAE/zB,EAAW,EAAG,IAC3CyjC,EAASY,YAAatQ,EAAM,CAAE/zB,EAAW60C,KAEzCpR,EAASgB,WAAY1Q,EAAM,CAAE/zB,EAAW60C,IAElC/qI,QAGTkF,EAAQgxF,EAAUhxF,MAInB,KA/HD,SAAqBA,EAAO0lI,GAC3B,IAAI33G,EAAOl1B,EAAM2L,EAAQjL,EAAO2+H,EAGhC,IAAMnqG,KAAS/tB,EAed,GAbAwE,EAASkhI,EADT7sI,EAAOq+H,EAAWnpG,IAElBx0B,EAAQyG,EAAO+tB,GACVnyB,MAAMC,QAAStC,KACnBiL,EAASjL,EAAO,GAChBA,EAAQyG,EAAO+tB,GAAUx0B,EAAO,IAG5Bw0B,IAAUl1B,IACdmH,EAAOnH,GAASU,SACTyG,EAAO+tB,KAGfmqG,EAAQ9T,EAAOuf,SAAU9qI,KACX,WAAYq/H,EAMzB,IAAMnqG,KALNx0B,EAAQ2+H,EAAM8L,OAAQzqI,UACfyG,EAAOnH,GAICU,EACNw0B,KAAS/tB,IAChBA,EAAO+tB,GAAUx0B,EAAOw0B,GACxB23G,EAAe33G,GAAUvpB,QAI3BkhI,EAAe7sI,GAAS2L,EA6F1BshI,CAAY9lI,EAAOgxF,EAAUpK,KAAK8+C,eAE1B33G,EAAQpzB,EAAQozB,IAEvB,GADA5S,EAASgqH,GAAUI,WAAYx3G,GAAQt1B,KAAMu4F,EAAW+zB,EAAM/kH,EAAOgxF,EAAUpK,MAM9E,OAJKg9B,EAAYzoG,EAAOpS,QACvBq7G,EAAO+T,YAAannC,EAAU+zB,KAAM/zB,EAAUpK,KAAK2rB,OAAQxpG,KAC1DoS,EAAOpS,KAAKjP,KAAMqhB,IAEbA,EAyBT,OArBAipG,EAAOx/G,IAAK5E,EAAOklI,GAAal0C,GAE3B4yB,EAAY5yB,EAAUpK,KAAK/sE,QAC/Bm3E,EAAUpK,KAAK/sE,MAAMphB,KAAMssH,EAAM/zB,GAIlCA,EACExzB,SAAUwzB,EAAUpK,KAAKppB,UACzBumB,KAAMiN,EAAUpK,KAAK7C,KAAMiN,EAAUpK,KAAKliF,UAC1C8uH,KAAMxiC,EAAUpK,KAAK4sC,MACrBgB,OAAQxjC,EAAUpK,KAAK4tC,QAEzBpQ,EAAOnmG,GAAG8nH,MACT3hB,EAAOv/G,OAAQ8+D,EAAM,CACpBohD,KAAMA,EACNihB,KAAMh1C,EACNuhB,MAAOvhB,EAAUpK,KAAK2rB,SAIjBvhB,EAGRozB,EAAO+gB,UAAY/gB,EAAOv/G,OAAQsgI,GAAW,CAE5CC,SAAU,CACTa,IAAK,CAAE,SAAU5yH,EAAM9Z,GACtB,IAAIy/H,EAAQl+H,KAAKoqI,YAAa7xH,EAAM9Z,GAEpC,OADAu/H,GAAWE,EAAMjU,KAAM1xG,EAAMklH,GAAQtyC,KAAM1sF,GAASy/H,GAC7CA,KAITkN,QAAS,SAAUlmI,EAAO4D,GACpBggH,EAAY5jH,IAChB4D,EAAW5D,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMgtB,MAAOimG,GAOtB,IAJA,IAAI5/G,EACH0a,EAAQ,EACRpzB,EAASqF,EAAMrF,OAERozB,EAAQpzB,EAAQozB,IACvB1a,EAAOrT,EAAO+tB,GACdo3G,GAAUC,SAAU/xH,GAAS8xH,GAAUC,SAAU/xH,IAAU,GAC3D8xH,GAAUC,SAAU/xH,GAAOib,QAAS1qB,IAItC2hI,WAAY,CA3Wb,SAA2BxgB,EAAM/kH,EAAO4mF,GACvC,IAAIvzE,EAAM9Z,EAAOg6B,EAAQ2kG,EAAOiO,EAASC,EAAWC,EAAgB7+G,EACnE8+G,EAAQ,UAAWtmI,GAAS,WAAYA,EACxCgmI,EAAOlrI,KACPwjI,EAAO,GACPn/H,EAAQ4lH,EAAK5lH,MACbiX,EAAS2uG,EAAKj5G,UAAY8sH,GAAoB7T,GAC9CwhB,EAAW/O,EAASr+H,IAAK4rH,EAAM,UA6BhC,IAAM1xG,KA1BAuzE,EAAK2rB,QAEa,OADvB2lB,EAAQ9T,EAAO+T,YAAapT,EAAM,OACvByhB,WACVtO,EAAMsO,SAAW,EACjBL,EAAUjO,EAAM3+E,MAAM06E,KACtBiE,EAAM3+E,MAAM06E,KAAO,WACZiE,EAAMsO,UACXL,MAIHjO,EAAMsO,WAENR,EAAKxR,OAAQ,WAGZwR,EAAKxR,OAAQ,WACZ0D,EAAMsO,WACApiB,EAAO7R,MAAOwS,EAAM,MAAOpqH,QAChCu9H,EAAM3+E,MAAM06E,YAOFj0H,EAEb,GADAzG,EAAQyG,EAAOqT,GACVsxH,GAAStmI,KAAM9E,GAAU,CAG7B,UAFOyG,EAAOqT,GACdkgB,EAASA,GAAoB,WAAVh6B,EACdA,KAAY6c,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAV7c,IAAoBgtI,QAAiCtqI,IAArBsqI,EAAUlzH,GAK9C,SAJA+C,GAAS,EAOXkoH,EAAMjrH,GAASkzH,GAAYA,EAAUlzH,IAAU+wG,EAAOjlH,MAAO4lH,EAAM1xG,GAMrE,IADA+yH,GAAahiB,EAAOoB,cAAexlH,MAChBokH,EAAOoB,cAAe8Y,GA8DzC,IAAMjrH,KAzDDizH,GAA2B,IAAlBvhB,EAAKj5G,WAMlB86E,EAAKpnF,SAAW,CAAEL,EAAMK,SAAUL,EAAMsnI,UAAWtnI,EAAMunI,WAIlC,OADvBL,EAAiBE,GAAYA,EAAS/+G,WAErC6+G,EAAiB7O,EAASr+H,IAAK4rH,EAAM,YAGrB,UADjBv9F,EAAU48F,EAAOtkH,IAAKilH,EAAM,cAEtBshB,EACJ7+G,EAAU6+G,GAIV5M,GAAU,CAAE1U,IAAQ,GACpBshB,EAAiBthB,EAAK5lH,MAAMqoB,SAAW6+G,EACvC7+G,EAAU48F,EAAOtkH,IAAKilH,EAAM,WAC5B0U,GAAU,CAAE1U,OAKG,WAAZv9F,GAAoC,iBAAZA,GAAgD,MAAlB6+G,IACrB,SAAhCjiB,EAAOtkH,IAAKilH,EAAM,WAGhBqhB,IACLJ,EAAKjiD,KAAM,WACV5kF,EAAMqoB,QAAU6+G,IAEM,MAAlBA,IACJ7+G,EAAUroB,EAAMqoB,QAChB6+G,EAA6B,SAAZ7+G,EAAqB,GAAKA,IAG7CroB,EAAMqoB,QAAU,iBAKdo/D,EAAKpnF,WACTL,EAAMK,SAAW,SACjBwmI,EAAKxR,OAAQ,WACZr1H,EAAMK,SAAWonF,EAAKpnF,SAAU,GAChCL,EAAMsnI,UAAY7/C,EAAKpnF,SAAU,GACjCL,EAAMunI,UAAY9/C,EAAKpnF,SAAU,MAKnC4mI,GAAY,EACE9H,EAGP8H,IACAG,EACC,WAAYA,IAChBnwH,EAASmwH,EAASnwH,QAGnBmwH,EAAW/O,EAASb,OAAQ5R,EAAM,SAAU,CAAEv9F,QAAS6+G,IAInD9yG,IACJgzG,EAASnwH,QAAUA,GAIfA,GACJqjH,GAAU,CAAE1U,IAAQ,GAKrBihB,EAAKjiD,KAAM,WASV,IAAM1wE,KAJA+C,GACLqjH,GAAU,CAAE1U,IAEbyS,EAASt0H,OAAQ6hH,EAAM,UACTuZ,EACbla,EAAOjlH,MAAO4lH,EAAM1xG,EAAMirH,EAAMjrH,OAMnC+yH,EAAYlB,GAAa9uH,EAASmwH,EAAUlzH,GAAS,EAAGA,EAAM2yH,GACtD3yH,KAAQkzH,IACfA,EAAUlzH,GAAS+yH,EAAUvsH,MACxBzD,IACJgwH,EAAU7oH,IAAM6oH,EAAUvsH,MAC1BusH,EAAUvsH,MAAQ,MAuMrB8sH,UAAW,SAAU/iI,EAAU2C,GACzBA,EACJ4+H,GAAUI,WAAWj3G,QAAS1qB,GAE9BuhI,GAAUI,WAAW5pI,KAAMiI,MAK9BwgH,EAAOwiB,MAAQ,SAAUA,EAAOpiI,EAAQ49G,GACvC,IAAI/3F,EAAMu8G,GAA0B,iBAAVA,EAAqBxiB,EAAOv/G,OAAQ,GAAI+hI,GAAU,CAC3EliI,SAAU09G,IAAOA,GAAM59G,GACtBo/G,EAAYgjB,IAAWA,EACxBtiI,SAAUsiI,EACVpiI,OAAQ49G,GAAM59G,GAAUA,IAAWo/G,EAAYp/G,IAAYA,GAoC5D,OAhCK4/G,EAAOnmG,GAAGrU,IACdygB,EAAI/lB,SAAW,EAGc,iBAAjB+lB,EAAI/lB,WACV+lB,EAAI/lB,YAAY8/G,EAAOnmG,GAAG4oH,OAC9Bx8G,EAAI/lB,SAAW8/G,EAAOnmG,GAAG4oH,OAAQx8G,EAAI/lB,UAGrC+lB,EAAI/lB,SAAW8/G,EAAOnmG,GAAG4oH,OAAOppI,UAMjB,MAAb4sB,EAAIkoF,QAA+B,IAAdloF,EAAIkoF,QAC7BloF,EAAIkoF,MAAQ,MAIbloF,EAAIi9C,IAAMj9C,EAAI3lB,SAEd2lB,EAAI3lB,SAAW,WACTk/G,EAAYv5F,EAAIi9C,MACpBj9C,EAAIi9C,IAAI7uE,KAAMqC,MAGVuvB,EAAIkoF,OACR6R,EAAO4T,QAASl9H,KAAMuvB,EAAIkoF,QAIrBloF,GAGR+5F,EAAOhC,GAAGv9G,OAAQ,CACjBiiI,OAAQ,SAAUF,EAAO17H,EAAI1G,EAAQZ,GAGpC,OAAO9I,KAAKgP,OAAQ8uH,IAAqB94H,IAAK,UAAW,GAAIuzB,OAG3D9V,MAAMwpH,QAAS,CAAEn+G,QAAS1d,GAAM07H,EAAOpiI,EAAQZ,IAElDmjI,QAAS,SAAU1zH,EAAMuzH,EAAOpiI,EAAQZ,GACvC,IAAI21C,EAAQ6qE,EAAOoB,cAAenyG,GACjC2zH,EAAS5iB,EAAOwiB,MAAOA,EAAOpiI,EAAQZ,GACtCqjI,EAAc,WAGb,IAAIjB,EAAOb,GAAWrqI,KAAMspH,EAAOv/G,OAAQ,GAAIwO,GAAQ2zH,IAGlDztF,GAASi+E,EAASr+H,IAAK2B,KAAM,YACjCkrI,EAAKj9H,MAAM,IAKd,OAFCk+H,EAAYC,OAASD,EAEf1tF,IAA0B,IAAjBytF,EAAOz0B,MACtBz3G,KAAKgqH,KAAMmiB,GACXnsI,KAAKy3G,MAAOy0B,EAAOz0B,MAAO00B,IAE5Bl+H,KAAM,SAAUvF,EAAM60H,EAAYwN,GACjC,IAAIsB,EAAY,SAAUjP,GACzB,IAAInvH,EAAOmvH,EAAMnvH,YACVmvH,EAAMnvH,KACbA,EAAM88H,IAYP,MATqB,iBAATriI,IACXqiI,EAAUxN,EACVA,EAAa70H,EACbA,OAAOvH,GAEHo8H,IAAuB,IAAT70H,GAClB1I,KAAKy3G,MAAO/uG,GAAQ,KAAM,IAGpB1I,KAAKgqH,KAAM,WACjB,IAAIkT,GAAU,EACbjqG,EAAgB,MAARvqB,GAAgBA,EAAO,aAC/B4jI,EAAShjB,EAAOgjB,OAChB/4H,EAAOmpH,EAASr+H,IAAK2B,MAEtB,GAAKizB,EACC1f,EAAM0f,IAAW1f,EAAM0f,GAAQhlB,MACnCo+H,EAAW94H,EAAM0f,SAGlB,IAAMA,KAAS1f,EACTA,EAAM0f,IAAW1f,EAAM0f,GAAQhlB,MAAQ67H,GAAKvmI,KAAM0vB,IACtDo5G,EAAW94H,EAAM0f,IAKpB,IAAMA,EAAQq5G,EAAOzsI,OAAQozB,KACvBq5G,EAAQr5G,GAAQg3F,OAASjqH,MACnB,MAAR0I,GAAgB4jI,EAAQr5G,GAAQwkF,QAAU/uG,IAE5C4jI,EAAQr5G,GAAQi4G,KAAKj9H,KAAM88H,GAC3B7N,GAAU,EACVoP,EAAOz3H,OAAQoe,EAAO,KAOnBiqG,GAAY6N,GAChBzhB,EAAO4T,QAASl9H,KAAM0I,MAIzB0jI,OAAQ,SAAU1jI,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAET1I,KAAKgqH,KAAM,WACjB,IAAI/2F,EACH1f,EAAOmpH,EAASr+H,IAAK2B,MACrBy3G,EAAQlkG,EAAM7K,EAAO,SACrB00H,EAAQ7pH,EAAM7K,EAAO,cACrB4jI,EAAShjB,EAAOgjB,OAChBzsI,EAAS43G,EAAQA,EAAM53G,OAAS,EAajC,IAVA0T,EAAK64H,QAAS,EAGd9iB,EAAO7R,MAAOz3G,KAAM0I,EAAM,IAErB00H,GAASA,EAAMnvH,MACnBmvH,EAAMnvH,KAAKtQ,KAAMqC,MAAM,GAIlBizB,EAAQq5G,EAAOzsI,OAAQozB,KACvBq5G,EAAQr5G,GAAQg3F,OAASjqH,MAAQssI,EAAQr5G,GAAQwkF,QAAU/uG,IAC/D4jI,EAAQr5G,GAAQi4G,KAAKj9H,MAAM,GAC3Bq+H,EAAOz3H,OAAQoe,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQpzB,EAAQozB,IAC3BwkF,EAAOxkF,IAAWwkF,EAAOxkF,GAAQm5G,QACrC30B,EAAOxkF,GAAQm5G,OAAOzuI,KAAMqC,aAKvBuT,EAAK64H,YAKf9iB,EAAOU,KAAM,CAAE,SAAU,OAAQ,QAAU,SAAUxsH,EAAGO,GACvD,IAAIwuI,EAAQjjB,EAAOhC,GAAIvpH,GACvBurH,EAAOhC,GAAIvpH,GAAS,SAAU+tI,EAAOpiI,EAAQZ,GAC5C,OAAgB,MAATgjI,GAAkC,kBAAVA,EAC9BS,EAAMxsI,MAAOC,KAAMJ,WACnBI,KAAKisI,QAAS/B,GAAOnsI,GAAM,GAAQ+tI,EAAOpiI,EAAQZ,MAKrDwgH,EAAOU,KAAM,CACZwiB,UAAWtC,GAAO,QAClBuC,QAASvC,GAAO,QAChBwC,YAAaxC,GAAO,UACpByC,OAAQ,CAAE7+G,QAAS,QACnB8+G,QAAS,CAAE9+G,QAAS,QACpB++G,WAAY,CAAE/+G,QAAS,WACrB,SAAU/vB,EAAMmH,GAClBokH,EAAOhC,GAAIvpH,GAAS,SAAU+tI,EAAOpiI,EAAQZ,GAC5C,OAAO9I,KAAKisI,QAAS/mI,EAAO4mI,EAAOpiI,EAAQZ,MAI7CwgH,EAAOgjB,OAAS,GAChBhjB,EAAOnmG,GAAG0lD,KAAO,WAChB,IAAIoiE,EACHztI,EAAI,EACJ8uI,EAAShjB,EAAOgjB,OAIjB,IAFA3C,GAAQ7+H,KAAK+sF,MAELr6F,EAAI8uI,EAAOzsI,OAAQrC,KAC1BytI,EAAQqB,EAAQ9uI,OAGC8uI,EAAQ9uI,KAAQytI,GAChCqB,EAAOz3H,OAAQrX,IAAK,GAIhB8uI,EAAOzsI,QACZypH,EAAOnmG,GAAGlV,OAEX07H,QAAQxoI,GAGTmoH,EAAOnmG,GAAG8nH,MAAQ,SAAUA,GAC3B3hB,EAAOgjB,OAAOzrI,KAAMoqI,GACpB3hB,EAAOnmG,GAAGpE,SAGXuqG,EAAOnmG,GAAG6mH,SAAW,GACrB1gB,EAAOnmG,GAAGpE,MAAQ,WACZ6qH,KAILA,IAAa,EACbG,OAGDzgB,EAAOnmG,GAAGlV,KAAO,WAChB27H,GAAa,MAGdtgB,EAAOnmG,GAAG4oH,OAAS,CAClBe,KAAM,IACNC,KAAM,IAGNpqI,SAAU,KAMX2mH,EAAOhC,GAAG5iC,MAAQ,SAAUvD,EAAMz4E,GAIjC,OAHAy4E,EAAOmoC,EAAOnmG,IAAKmmG,EAAOnmG,GAAG4oH,OAAQ5qD,IAAiBA,EACtDz4E,EAAOA,GAAQ,KAER1I,KAAKy3G,MAAO/uG,EAAM,SAAUytC,EAAMinF,GACxC,IAAIpb,EAAUp/G,EAAOyJ,WAAY8pC,EAAMgrC,GACvCi8C,EAAMnvH,KAAO,WACZrL,EAAOiL,aAAcm0G,OAMxB,WACC,IAAI3hE,EAAQx9C,EAASC,cAAe,SAEnCysB,EADS1sB,EAASC,cAAe,UACpB8B,YAAa/B,EAASC,cAAe,WAEnDu9C,EAAM33C,KAAO,WAIbmgH,EAAQmkB,QAA0B,KAAhB3sF,EAAM5hD,MAIxBoqH,EAAQokB,YAAc19G,EAAIjR,UAI1B+hC,EAAQx9C,EAASC,cAAe,UAC1BrE,MAAQ,IACd4hD,EAAM33C,KAAO,QACbmgH,EAAQqkB,WAA6B,MAAhB7sF,EAAM5hD,MApB5B,GAwBA,IAAI0uI,GACH7d,GAAahG,EAAO+H,KAAK/B,WAE1BhG,EAAOhC,GAAGv9G,OAAQ,CACjBd,KAAM,SAAUlL,EAAMU,GACrB,OAAOo9H,EAAQ77H,KAAMspH,EAAOrgH,KAAMlL,EAAMU,EAAOmB,UAAUC,OAAS,IAGnEutI,WAAY,SAAUrvI,GACrB,OAAOiC,KAAKgqH,KAAM,WACjBV,EAAO8jB,WAAYptI,KAAMjC,QAK5BurH,EAAOv/G,OAAQ,CACdd,KAAM,SAAUghH,EAAMlsH,EAAMU,GAC3B,IAAIqrH,EAAKsT,EACRiQ,EAAQpjB,EAAKj5G,SAGd,GAAe,IAAVq8H,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtBpjB,EAAKjoD,aACTsnD,EAAO/wG,KAAM0xG,EAAMlsH,EAAMU,IAKlB,IAAV4uI,GAAgB/jB,EAAOqN,SAAU1M,KACrCmT,EAAQ9T,EAAOgkB,UAAWvvI,EAAKyrD,iBAC5B8/D,EAAO+H,KAAKn/F,MAAMy2D,KAAKplF,KAAMxF,GAASovI,QAAWhsI,SAGtCA,IAAV1C,EACW,OAAVA,OACJ6qH,EAAO8jB,WAAYnjB,EAAMlsH,GAIrBq/H,GAAS,QAASA,QACuBj8H,KAA3C2oH,EAAMsT,EAAMhhD,IAAK6tC,EAAMxrH,EAAOV,IACzB+rH,GAGRG,EAAKruF,aAAc79B,EAAMU,EAAQ,IAC1BA,GAGH2+H,GAAS,QAASA,GAA+C,QAApCtT,EAAMsT,EAAM/+H,IAAK4rH,EAAMlsH,IACjD+rH,EAMM,OAHdA,EAAMR,EAAOp5F,KAAKjnB,KAAMghH,EAAMlsH,SAGToD,EAAY2oH,IAGlCwjB,UAAW,CACV5kI,KAAM,CACL0zE,IAAK,SAAU6tC,EAAMxrH,GACpB,IAAMoqH,EAAQqkB,YAAwB,UAAVzuI,GAC3Bm8F,EAAUqvB,EAAM,SAAY,CAC5B,IAAI16G,EAAM06G,EAAKxrH,MAKf,OAJAwrH,EAAKruF,aAAc,OAAQn9B,GACtB8Q,IACJ06G,EAAKxrH,MAAQ8Q,GAEP9Q,MAMX2uI,WAAY,SAAUnjB,EAAMxrH,GAC3B,IAAIV,EACHP,EAAI,EAIJ+vI,EAAY9uI,GAASA,EAAMyzB,MAAOimG,GAEnC,GAAKoV,GAA+B,IAAlBtjB,EAAKj5G,SACtB,KAAUjT,EAAOwvI,EAAW/vI,MAC3BysH,EAAKvsB,gBAAiB3/F,MAO1BovI,GAAW,CACV/wD,IAAK,SAAU6tC,EAAMxrH,EAAOV,GAQ3B,OAPe,IAAVU,EAGJ6qH,EAAO8jB,WAAYnjB,EAAMlsH,GAEzBksH,EAAKruF,aAAc79B,EAAMA,GAEnBA,IAITurH,EAAOU,KAAMV,EAAO+H,KAAKn/F,MAAMy2D,KAAK7oF,OAAOoyB,MAAO,QAAU,SAAU10B,EAAGO,GACxE,IAAIC,EAASsxH,GAAYvxH,IAAUurH,EAAOp5F,KAAKjnB,KAE/CqmH,GAAYvxH,GAAS,SAAUksH,EAAMlsH,EAAMstH,GAC1C,IAAIvB,EAAKhnD,EACR0qE,EAAgBzvI,EAAKyrD,cAYtB,OAVM6hE,IAGLvoD,EAASwsD,GAAYke,GACrBle,GAAYke,GAAkB1jB,EAC9BA,EAAqC,MAA/B9rH,EAAQisH,EAAMlsH,EAAMstH,GACzBmiB,EACA,KACDle,GAAYke,GAAkB1qE,GAExBgnD,KAOT,IAAI2jB,GAAa,sCAChBC,GAAa,gBAyIb,SAASC,GAAkBlvI,GAE1B,OADaA,EAAMyzB,MAAOimG,IAAmB,IAC/Bl3H,KAAM,KAItB,SAAS2sI,GAAU3jB,GAClB,OAAOA,EAAKjoD,cAAgBioD,EAAKjoD,aAAc,UAAa,GAG7D,SAAS6rE,GAAgBpvI,GACxB,OAAKqC,MAAMC,QAAStC,GACZA,EAEc,iBAAVA,GACJA,EAAMyzB,MAAOimG,IAEd,GAxJR7O,EAAOhC,GAAGv9G,OAAQ,CACjBwO,KAAM,SAAUxa,EAAMU,GACrB,OAAOo9H,EAAQ77H,KAAMspH,EAAO/wG,KAAMxa,EAAMU,EAAOmB,UAAUC,OAAS,IAGnEiuI,WAAY,SAAU/vI,GACrB,OAAOiC,KAAKgqH,KAAM,kBACVhqH,KAAMspH,EAAOykB,QAAShwI,IAAUA,QAK1CurH,EAAOv/G,OAAQ,CACdwO,KAAM,SAAU0xG,EAAMlsH,EAAMU,GAC3B,IAAIqrH,EAAKsT,EACRiQ,EAAQpjB,EAAKj5G,SAGd,GAAe,IAAVq8H,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB/jB,EAAOqN,SAAU1M,KAGrClsH,EAAOurH,EAAOykB,QAAShwI,IAAUA,EACjCq/H,EAAQ9T,EAAO8f,UAAWrrI,SAGZoD,IAAV1C,EACC2+H,GAAS,QAASA,QACuBj8H,KAA3C2oH,EAAMsT,EAAMhhD,IAAK6tC,EAAMxrH,EAAOV,IACzB+rH,EAGCG,EAAMlsH,GAASU,EAGpB2+H,GAAS,QAASA,GAA+C,QAApCtT,EAAMsT,EAAM/+H,IAAK4rH,EAAMlsH,IACjD+rH,EAGDG,EAAMlsH,IAGdqrI,UAAW,CACVnqH,SAAU,CACT5gB,IAAK,SAAU4rH,GAOd,IAAI+jB,EAAW1kB,EAAOp5F,KAAKjnB,KAAMghH,EAAM,YAEvC,OAAK+jB,EACG15H,SAAU05H,EAAU,IAI3BP,GAAWlqI,KAAM0mH,EAAKrvB,WACtB8yC,GAAWnqI,KAAM0mH,EAAKrvB,WACtBqvB,EAAKzuG,KAEE,GAGA,KAKXuyH,QAAS,CACRlzH,IAAO,UACPlB,MAAS,eAYLkvG,EAAQokB,cACb3jB,EAAO8f,UAAU9qH,SAAW,CAC3BjgB,IAAK,SAAU4rH,GAId,IAAIpxF,EAASoxF,EAAK32F,WAIlB,OAHKuF,GAAUA,EAAOvF,YACrBuF,EAAOvF,WAAWigG,cAEZ,MAERn3C,IAAK,SAAU6tC,GAId,IAAIpxF,EAASoxF,EAAK32F,WACbuF,IACJA,EAAO06F,cAEF16F,EAAOvF,YACXuF,EAAOvF,WAAWigG,kBAOvBjK,EAAOU,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFV,EAAOykB,QAAS/tI,KAAKwpD,eAAkBxpD,OA4BxCspH,EAAOhC,GAAGv9G,OAAQ,CACjBb,SAAU,SAAUzK,GACnB,IAAIiC,EAASupH,EAAMuF,EAAKye,EAAUC,EAAOv4E,EAAGw4E,EAC3C3wI,EAAI,EAEL,GAAKsrH,EAAYrqH,GAChB,OAAOuB,KAAKgqH,KAAM,SAAUr0D,GAC3B2zD,EAAQtpH,MAAOkJ,SAAUzK,EAAMd,KAAMqC,KAAM21D,EAAGi4E,GAAU5tI,UAM1D,IAFAU,EAAUmtI,GAAgBpvI,IAEboB,OACZ,KAAUoqH,EAAOjqH,KAAMxC,MAItB,GAHAywI,EAAWL,GAAU3jB,GACrBuF,EAAwB,IAAlBvF,EAAKj5G,UAAoB,IAAM28H,GAAkBM,GAAa,IAEzD,CAEV,IADAt4E,EAAI,EACMu4E,EAAQxtI,EAASi1D,MACrB65D,EAAIlvH,QAAS,IAAM4tI,EAAQ,KAAQ,IACvC1e,GAAO0e,EAAQ,KAMZD,KADLE,EAAaR,GAAkBne,KAE9BvF,EAAKruF,aAAc,QAASuyG,GAMhC,OAAOnuI,MAGR8U,YAAa,SAAUrW,GACtB,IAAIiC,EAASupH,EAAMuF,EAAKye,EAAUC,EAAOv4E,EAAGw4E,EAC3C3wI,EAAI,EAEL,GAAKsrH,EAAYrqH,GAChB,OAAOuB,KAAKgqH,KAAM,SAAUr0D,GAC3B2zD,EAAQtpH,MAAO8U,YAAarW,EAAMd,KAAMqC,KAAM21D,EAAGi4E,GAAU5tI,UAI7D,IAAMJ,UAAUC,OACf,OAAOG,KAAKiJ,KAAM,QAAS,IAK5B,IAFAvI,EAAUmtI,GAAgBpvI,IAEboB,OACZ,KAAUoqH,EAAOjqH,KAAMxC,MAMtB,GALAywI,EAAWL,GAAU3jB,GAGrBuF,EAAwB,IAAlBvF,EAAKj5G,UAAoB,IAAM28H,GAAkBM,GAAa,IAEzD,CAEV,IADAt4E,EAAI,EACMu4E,EAAQxtI,EAASi1D,MAG1B,KAAQ65D,EAAIlvH,QAAS,IAAM4tI,EAAQ,MAAS,GAC3C1e,EAAMA,EAAI/sH,QAAS,IAAMyrI,EAAQ,IAAK,KAMnCD,KADLE,EAAaR,GAAkBne,KAE9BvF,EAAKruF,aAAc,QAASuyG,GAMhC,OAAOnuI,MAGRouI,YAAa,SAAU3vI,EAAO4vI,GAC7B,IAAI3lI,SAAcjK,EACjB6vI,EAAwB,WAAT5lI,GAAqB5H,MAAMC,QAAStC,GAEpD,MAAyB,kBAAb4vI,GAA0BC,EAC9BD,EAAWruI,KAAKkJ,SAAUzK,GAAUuB,KAAK8U,YAAarW,GAGzDqqH,EAAYrqH,GACTuB,KAAKgqH,KAAM,SAAUxsH,GAC3B8rH,EAAQtpH,MAAOouI,YACd3vI,EAAMd,KAAMqC,KAAMxC,EAAGowI,GAAU5tI,MAAQquI,GACvCA,KAKIruI,KAAKgqH,KAAM,WACjB,IAAIv1G,EAAWjX,EAAG40B,EAAM3xB,EAExB,GAAK6tI,EAOJ,IAJA9wI,EAAI,EACJ40B,EAAOk3F,EAAQtpH,MACfS,EAAaotI,GAAgBpvI,GAEnBgW,EAAYhU,EAAYjD,MAG5B40B,EAAKm8G,SAAU95H,GACnB2d,EAAKtd,YAAaL,GAElB2d,EAAKlpB,SAAUuL,aAKItT,IAAV1C,GAAgC,YAATiK,KAClC+L,EAAYm5H,GAAU5tI,QAIrB08H,EAAStgD,IAAKp8E,KAAM,gBAAiByU,GAOjCzU,KAAK47B,cACT57B,KAAK47B,aAAc,QAClBnnB,IAAuB,IAAVhW,EACb,GACAi+H,EAASr+H,IAAK2B,KAAM,kBAAqB,QAO9CuuI,SAAU,SAAUvrI,GACnB,IAAIyR,EAAWw1G,EACdzsH,EAAI,EAGL,IADAiX,EAAY,IAAMzR,EAAW,IACnBinH,EAAOjqH,KAAMxC,MACtB,GAAuB,IAAlBysH,EAAKj5G,WACP,IAAM28H,GAAkBC,GAAU3jB,IAAW,KAAM3pH,QAASmU,IAAe,EAC5E,OAAO,EAIV,OAAO,KAOT,IAAI+5H,GAAU,MAEdllB,EAAOhC,GAAGv9G,OAAQ,CACjBwF,IAAK,SAAU9Q,GACd,IAAI2+H,EAAOtT,EAAK8a,EACf3a,EAAOjqH,KAAM,GAEd,OAAMJ,UAAUC,QA0BhB+kI,EAAkB9b,EAAYrqH,GAEvBuB,KAAKgqH,KAAM,SAAUxsH,GAC3B,IAAI+R,EAEmB,IAAlBvP,KAAKgR,WAWE,OANXzB,EADIq1H,EACEnmI,EAAMd,KAAMqC,KAAMxC,EAAG8rH,EAAQtpH,MAAOuP,OAEpC9Q,GAKN8Q,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEIzO,MAAMC,QAASwO,KAC1BA,EAAM+5G,EAAOx/G,IAAKyF,EAAK,SAAU9Q,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,OAItC2+H,EAAQ9T,EAAOmlB,SAAUzuI,KAAK0I,OAAU4gH,EAAOmlB,SAAUzuI,KAAK46F,SAASpxC,iBAGrD,QAAS4zE,QAA+Cj8H,IAApCi8H,EAAMhhD,IAAKp8E,KAAMuP,EAAK,WAC3DvP,KAAKvB,MAAQ8Q,OAzDT06G,GACJmT,EAAQ9T,EAAOmlB,SAAUxkB,EAAKvhH,OAC7B4gH,EAAOmlB,SAAUxkB,EAAKrvB,SAASpxC,iBAG/B,QAAS4zE,QACgCj8H,KAAvC2oH,EAAMsT,EAAM/+H,IAAK4rH,EAAM,UAElBH,EAMY,iBAHpBA,EAAMG,EAAKxrH,OAIHqrH,EAAIrnH,QAAS+rI,GAAS,IAIhB,MAAP1kB,EAAc,GAAKA,OAG3B,KAyCHR,EAAOv/G,OAAQ,CACd0kI,SAAU,CACTzP,OAAQ,CACP3gI,IAAK,SAAU4rH,GAEd,IAAI16G,EAAM+5G,EAAOp5F,KAAKjnB,KAAMghH,EAAM,SAClC,OAAc,MAAP16G,EACNA,EAMAo+H,GAAkBrkB,EAAOhqF,KAAM2qF,MAGlC/6E,OAAQ,CACP7wC,IAAK,SAAU4rH,GACd,IAAIxrH,EAAOugI,EAAQxhI,EAClBqK,EAAUoiH,EAAKpiH,QACforB,EAAQg3F,EAAKsJ,cACbsN,EAAoB,eAAd5W,EAAKvhH,KACXgiB,EAASm2G,EAAM,KAAO,GACtBnkH,EAAMmkH,EAAM5tG,EAAQ,EAAIprB,EAAQhI,OAUjC,IAPCrC,EADIy1B,EAAQ,EACRvW,EAGAmkH,EAAM5tG,EAAQ,EAIXz1B,EAAIkf,EAAKlf,IAKhB,KAJAwhI,EAASn3H,EAASrK,IAIJ8gB,UAAY9gB,IAAMy1B,KAG7B+rG,EAAOxkH,YACLwkH,EAAO1rG,WAAW9Y,WACnBogF,EAAUokC,EAAO1rG,WAAY,aAAiB,CAMjD,GAHA70B,EAAQ6qH,EAAQ0V,GAASzvH,MAGpBsxH,EACJ,OAAOpiI,EAIRisB,EAAO7pB,KAAMpC,GAIf,OAAOisB,GAGR0xD,IAAK,SAAU6tC,EAAMxrH,GAMpB,IALA,IAAIiwI,EAAW1P,EACdn3H,EAAUoiH,EAAKpiH,QACf6iB,EAAS4+F,EAAOsB,UAAWnsH,GAC3BjB,EAAIqK,EAAQhI,OAELrC,OACPwhI,EAASn3H,EAASrK,IAIN8gB,SACXgrG,EAAOuB,QAASvB,EAAOmlB,SAASzP,OAAO3gI,IAAK2gI,GAAUt0G,IAAY,KAElEgkH,GAAY,GAUd,OAHMA,IACLzkB,EAAKsJ,eAAiB,GAEhB7oG,OAOX4+F,EAAOU,KAAM,CAAE,QAAS,YAAc,WACrCV,EAAOmlB,SAAUzuI,MAAS,CACzBo8E,IAAK,SAAU6tC,EAAMxrH,GACpB,GAAKqC,MAAMC,QAAStC,GACnB,OAASwrH,EAAKxwG,QAAU6vG,EAAOuB,QAASvB,EAAQW,GAAO16G,MAAO9Q,IAAW,IAItEoqH,EAAQmkB,UACb1jB,EAAOmlB,SAAUzuI,MAAO3B,IAAM,SAAU4rH,GACvC,OAAwC,OAAjCA,EAAKjoD,aAAc,SAAqB,KAAOioD,EAAKxrH,UAW9DoqH,EAAQ8lB,QAAU,cAAe/rI,EAGjC,IAAIgsI,GAAc,kCACjBC,GAA0B,SAAUzsI,GACnCA,EAAE+K,mBAGJm8G,EAAOv/G,OAAQu/G,EAAOp8G,MAAO,CAE5B0rE,QAAS,SAAU1rE,EAAOqG,EAAM02G,EAAM6kB,GAErC,IAAItxI,EAAGgyH,EAAKgB,EAAKue,EAAYC,EAAQlsE,EAAQs3D,EAAS6U,EACrDC,EAAY,CAAEjlB,GAAQpnH,GACtB6F,EAAOlI,EAAO7C,KAAMuP,EAAO,QAAWA,EAAMxE,KAAOwE,EACnDu0H,EAAajhI,EAAO7C,KAAMuP,EAAO,aAAgBA,EAAM8iH,UAAUjgH,MAAO,KAAQ,GAKjF,GAHAy/G,EAAMyf,EAAcze,EAAMvG,EAAOA,GAAQpnH,EAGlB,IAAlBonH,EAAKj5G,UAAoC,IAAlBi5G,EAAKj5G,WAK5B49H,GAAYrrI,KAAMmF,EAAO4gH,EAAOp8G,MAAM00H,aAItCl5H,EAAKpI,QAAS,MAAS,IAG3BmhI,EAAa/4H,EAAKqH,MAAO,KACzBrH,EAAO+4H,EAAWtqE,QAClBsqE,EAAWnjG,QAEZ0wG,EAAStmI,EAAKpI,QAAS,KAAQ,GAAK,KAAOoI,GAG3CwE,EAAQA,EAAOo8G,EAAOgB,SACrBp9G,EACA,IAAIo8G,EAAO96E,MAAO9lC,EAAuB,iBAAVwE,GAAsBA,IAGhDg0H,UAAY4N,EAAe,EAAI,EACrC5hI,EAAM8iH,UAAYyR,EAAWxgI,KAAM,KACnCiM,EAAMu1H,WAAav1H,EAAM8iH,UACxB,IAAInpD,OAAQ,UAAY46D,EAAWxgI,KAAM,iBAAoB,WAC7D,KAGDiM,EAAMmT,YAASlf,EACT+L,EAAMvN,SACXuN,EAAMvN,OAASsqH,GAIhB12G,EAAe,MAARA,EACN,CAAErG,GACFo8G,EAAOsB,UAAWr3G,EAAM,CAAErG,IAG3BktH,EAAU9Q,EAAOp8G,MAAMktH,QAAS1xH,IAAU,GACpComI,IAAgB1U,EAAQxhD,UAAmD,IAAxCwhD,EAAQxhD,QAAQ74E,MAAOkqH,EAAM12G,IAAtE,CAMA,IAAMu7H,IAAiB1U,EAAQ2I,WAAaha,EAAUkB,GAAS,CAM9D,IAJA8kB,EAAa3U,EAAQ+G,cAAgBz4H,EAC/BkmI,GAAYrrI,KAAMwrI,EAAarmI,KACpC8mH,EAAMA,EAAIl8F,YAEHk8F,EAAKA,EAAMA,EAAIl8F,WACtB47G,EAAUruI,KAAM2uH,GAChBgB,EAAMhB,EAIFgB,KAAUvG,EAAKlmH,eAAiBlB,IACpCqsI,EAAUruI,KAAM2vH,EAAIzuB,aAAeyuB,EAAIxuB,cAAgBp/F,GAMzD,IADApF,EAAI,GACMgyH,EAAM0f,EAAW1xI,QAAY0P,EAAM4mF,wBAC5Cm7C,EAAczf,EACdtiH,EAAMxE,KAAOlL,EAAI,EAChBuxI,EACA3U,EAAQyH,UAAYn5H,GAGrBo6D,GAAW45D,EAASr+H,IAAKmxH,EAAK,WAAc,IAAMtiH,EAAMxE,OACvDg0H,EAASr+H,IAAKmxH,EAAK,YAEnB1sD,EAAO/iE,MAAOyvH,EAAKj8G,IAIpBuvD,EAASksE,GAAUxf,EAAKwf,KACTlsE,EAAO/iE,OAASs8H,EAAY7M,KAC1CtiH,EAAMmT,OAASyiD,EAAO/iE,MAAOyvH,EAAKj8G,IACZ,IAAjBrG,EAAMmT,QACVnT,EAAM6nC,kBA8CT,OA1CA7nC,EAAMxE,KAAOA,EAGPomI,GAAiB5hI,EAAM6pF,sBAEpBqjC,EAAQz3H,WACqC,IAApDy3H,EAAQz3H,SAAS5C,MAAOmvI,EAAUpzD,MAAOvoE,KACzC8oH,EAAYpS,IAIP+kB,GAAUlmB,EAAYmB,EAAMvhH,MAAaqgH,EAAUkB,MAGvDuG,EAAMvG,EAAM+kB,MAGX/kB,EAAM+kB,GAAW,MAIlB1lB,EAAOp8G,MAAM00H,UAAYl5H,EAEpBwE,EAAM4mF,wBACVm7C,EAAYzxG,iBAAkB90B,EAAMmmI,IAGrC5kB,EAAMvhH,KAEDwE,EAAM4mF,wBACVm7C,EAAYvvE,oBAAqBh3D,EAAMmmI,IAGxCvlB,EAAOp8G,MAAM00H,eAAYzgI,EAEpBqvH,IACJvG,EAAM+kB,GAAWxe,IAMdtjH,EAAMmT,SAKd8uH,SAAU,SAAUzmI,EAAMuhH,EAAM/8G,GAC/B,IAAI9K,EAAIknH,EAAOv/G,OACd,IAAIu/G,EAAO96E,MACXthC,EACA,CACCxE,KAAMA,EACNu6H,aAAa,IAIf3Z,EAAOp8G,MAAM0rE,QAASx2E,EAAG,KAAM6nH,MAKjCX,EAAOhC,GAAGv9G,OAAQ,CAEjB6uE,QAAS,SAAUlwE,EAAM6K,GACxB,OAAOvT,KAAKgqH,KAAM,WACjBV,EAAOp8G,MAAM0rE,QAASlwE,EAAM6K,EAAMvT,SAGpCovI,eAAgB,SAAU1mI,EAAM6K,GAC/B,IAAI02G,EAAOjqH,KAAM,GACjB,GAAKiqH,EACJ,OAAOX,EAAOp8G,MAAM0rE,QAASlwE,EAAM6K,EAAM02G,GAAM,MAc5CpB,EAAQ8lB,SACbrlB,EAAOU,KAAM,CAAE5qF,MAAO,UAAWy/B,KAAM,YAAc,SAAU2kE,EAAMnB,GAGpE,IAAI3/C,EAAU,SAAUx1E,GACvBo8G,EAAOp8G,MAAMiiI,SAAU9M,EAAKn1H,EAAMvN,OAAQ2pH,EAAOp8G,MAAMm1H,IAAKn1H,KAG7Do8G,EAAOp8G,MAAMktH,QAASiI,GAAQ,CAC7BN,MAAO,WACN,IAAIjmE,EAAM97D,KAAK+D,eAAiB/D,KAC/BqvI,EAAW3S,EAASb,OAAQ//D,EAAKumE,GAE5BgN,GACLvzE,EAAIt+B,iBAAkBgmG,EAAM9gD,GAAS,GAEtCg6C,EAASb,OAAQ//D,EAAKumE,GAAOgN,GAAY,GAAM,IAEhDnN,SAAU,WACT,IAAIpmE,EAAM97D,KAAK+D,eAAiB/D,KAC/BqvI,EAAW3S,EAASb,OAAQ//D,EAAKumE,GAAQ,EAEpCgN,EAKL3S,EAASb,OAAQ//D,EAAKumE,EAAKgN,IAJ3BvzE,EAAI4D,oBAAqB8jE,EAAM9gD,GAAS,GACxCg6C,EAASt0H,OAAQ0zD,EAAKumE,QAS3B,IAAI1xH,GAAW/N,EAAO+N,SAElBs4G,GAAQn+G,KAAK+sF,MAEby3C,GAAW,KAKfhmB,EAAOimB,SAAW,SAAUh8H,GAC3B,IAAIgY,EACJ,IAAMhY,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACCgY,GAAQ,IAAI3oB,EAAO4sI,WAAcC,gBAAiBl8H,EAAM,YACvD,MAAQnR,GACTmpB,OAAMpqB,EAMP,OAHMoqB,IAAOA,EAAI5nB,qBAAsB,eAAgB9D,QACtDypH,EAAOxnH,MAAO,gBAAkByR,GAE1BgY,GAIR,IACCmkH,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAarmF,EAAQroD,EAAK2uI,EAAav7H,GAC/C,IAAIzW,EAEJ,GAAK+C,MAAMC,QAASK,GAGnBkoH,EAAOU,KAAM5oH,EAAK,SAAU5D,EAAGuvF,GACzBgjD,GAAeL,GAASnsI,KAAMkmD,GAGlCj1C,EAAKi1C,EAAQsjC,GAKb+iD,GACCrmF,EAAS,KAAqB,iBAANsjC,GAAuB,MAALA,EAAYvvF,EAAI,IAAO,IACjEuvF,EACAgjD,EACAv7H,UAKG,GAAMu7H,GAAiC,WAAlB1mB,EAAQjoH,GAUnCoT,EAAKi1C,EAAQroD,QAPb,IAAMrD,KAAQqD,EACb0uI,GAAarmF,EAAS,IAAM1rD,EAAO,IAAKqD,EAAKrD,GAAQgyI,EAAav7H,GAYrE80G,EAAOza,MAAQ,SAAU3sG,EAAG6tI,GAC3B,IAAItmF,EACHlqD,EAAI,GACJiV,EAAM,SAAUzV,EAAKixI,GAGpB,IAAIvxI,EAAQqqH,EAAYknB,GACvBA,IACAA,EAEDzwI,EAAGA,EAAEM,QAAWwtD,mBAAoBtuD,GAAQ,IAC3CsuD,mBAA6B,MAAT5uD,EAAgB,GAAKA,IAG5C,GAAU,MAALyD,EACJ,MAAO,GAIR,GAAKpB,MAAMC,QAASmB,IAASA,EAAEwnH,SAAWJ,EAAOe,cAAenoH,GAG/DonH,EAAOU,KAAM9nH,EAAG,WACfsS,EAAKxU,KAAKjC,KAAMiC,KAAKvB,cAOtB,IAAMgrD,KAAUvnD,EACf4tI,GAAarmF,EAAQvnD,EAAGunD,GAAUsmF,EAAav7H,GAKjD,OAAOjV,EAAE0B,KAAM,MAGhBqoH,EAAOhC,GAAGv9G,OAAQ,CACjBkmI,UAAW,WACV,OAAO3mB,EAAOza,MAAO7uG,KAAKkwI,mBAE3BA,eAAgB,WACf,OAAOlwI,KAAK8J,IAAK,WAGhB,IAAIwnH,EAAWhI,EAAO/wG,KAAMvY,KAAM,YAClC,OAAOsxH,EAAWhI,EAAOsB,UAAW0G,GAAatxH,OAEjDgP,OAAQ,WACR,IAAItG,EAAO1I,KAAK0I,KAGhB,OAAO1I,KAAKjC,OAASurH,EAAQtpH,MAAOmO,GAAI,cACvC0hI,GAAatsI,KAAMvD,KAAK46F,YAAeg1C,GAAgBrsI,KAAMmF,KAC3D1I,KAAKyZ,UAAYmlH,GAAer7H,KAAMmF,MAEzCoB,IAAK,SAAUtM,EAAGysH,GAClB,IAAI16G,EAAM+5G,EAAQtpH,MAAOuP,MAEzB,OAAY,MAAPA,EACG,KAGHzO,MAAMC,QAASwO,GACZ+5G,EAAOx/G,IAAKyF,EAAK,SAAUA,GACjC,MAAO,CAAExR,KAAMksH,EAAKlsH,KAAMU,MAAO8Q,EAAI9M,QAASktI,GAAO,WAIhD,CAAE5xI,KAAMksH,EAAKlsH,KAAMU,MAAO8Q,EAAI9M,QAASktI,GAAO,WAClDtxI,SAKN,IACC8xI,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZ/F,GAAa,GAObgG,GAAa,GAGbC,GAAW,KAAKl/H,OAAQ,KAGxBm/H,GAAe9tI,EAASC,cAAe,KAIxC,SAAS8tI,GAA6BzwG,GAGrC,OAAO,SAAU0wG,EAAoBlxH,GAED,iBAAvBkxH,IACXlxH,EAAOkxH,EACPA,EAAqB,KAGtB,IAAIC,EACHtzI,EAAI,EACJuzI,EAAYF,EAAmBrnF,cAAct3B,MAAOimG,IAAmB,GAExE,GAAKrP,EAAYnpG,GAGhB,KAAUmxH,EAAWC,EAAWvzI,MAGR,MAAlBszI,EAAU,IACdA,EAAWA,EAASztI,MAAO,IAAO,KAChC88B,EAAW2wG,GAAa3wG,EAAW2wG,IAAc,IAAKt9G,QAAS7T,KAI/DwgB,EAAW2wG,GAAa3wG,EAAW2wG,IAAc,IAAKjwI,KAAM8e,IAQnE,SAASqxH,GAA+B7wG,EAAWt4B,EAASijI,EAAiBmG,GAE5E,IAAIC,EAAY,GACfC,EAAqBhxG,IAAcswG,GAEpC,SAASW,EAASN,GACjB,IAAIxyH,EAcJ,OAbA4yH,EAAWJ,IAAa,EACxBxnB,EAAOU,KAAM7pF,EAAW2wG,IAAc,GAAI,SAAUt+H,EAAG6+H,GACtD,IAAIC,EAAsBD,EAAoBxpI,EAASijI,EAAiBmG,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD7yH,EAAWgzH,QADf,GAHNzpI,EAAQkpI,UAAUv9G,QAAS89G,GAC3BF,EAASE,IACF,KAKFhzH,EAGR,OAAO8yH,EAASvpI,EAAQkpI,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAY5xI,EAAQif,GAC5B,IAAI7f,EAAKqrH,EACRonB,EAAcloB,EAAOmoB,aAAaD,aAAe,GAElD,IAAMzyI,KAAO6f,OACQzd,IAAfyd,EAAK7f,MACPyyI,EAAazyI,GAAQY,EAAWyqH,IAAUA,EAAO,KAAUrrH,GAAQ6f,EAAK7f,IAO5E,OAJKqrH,GACJd,EAAOv/G,QAAQ,EAAMpK,EAAQyqH,GAGvBzqH,EA/EPgxI,GAAan1H,KAAO7K,GAAS6K,KAgP9B8tG,EAAOv/G,OAAQ,CAGdirB,OAAQ,EAGR08G,aAAc,GACdC,KAAM,GAENF,aAAc,CACb5lF,IAAKl7C,GAAS6K,KACd9S,KAAM,MACNkpI,QAvRgB,4DAuRQruI,KAAMoN,GAASkhI,UACvC5rB,QAAQ,EACRzsD,aAAa,EACbvgD,OAAO,EACP00C,YAAa,mDAcbmkF,QAAS,CACR3G,IAAKuF,GACLpxG,KAAM,aACNsoC,KAAM,YACNr8C,IAAK,4BACL0iC,KAAM,qCAGPxuB,SAAU,CACTlU,IAAK,UACLq8C,KAAM,SACN3Z,KAAM,YAGP8jF,eAAgB,CACfxmH,IAAK,cACL+T,KAAM,eACN2uB,KAAM,gBAKP+jF,WAAY,CAGXC,SAAUviI,OAGVwiI,aAAa,EAGbC,YAAansI,KAAKC,MAGlBmsI,WAAY9oB,EAAOimB,UAOpBiC,YAAa,CACZ3lF,KAAK,EACLm3B,SAAS,IAOXqvD,UAAW,SAAU1yI,EAAQ2yI,GAC5B,OAAOA,EAGNf,GAAYA,GAAY5xI,EAAQ2pH,EAAOmoB,cAAgBa,GAGvDf,GAAYjoB,EAAOmoB,aAAc9xI,IAGnC4yI,cAAe3B,GAA6BnG,IAC5C+H,cAAe5B,GAA6BH,IAG5CtsG,KAAM,SAAU0nB,EAAKhkD,GAGA,iBAARgkD,IACXhkD,EAAUgkD,EACVA,OAAM1qD,GAIP0G,EAAUA,GAAW,GAErB,IAAI4qI,EAGHC,EAGAC,EACAC,EAGAC,EAGAC,EAGAtX,EAGAuX,EAGAv1I,EAGAw1I,EAGAzzI,EAAI+pH,EAAO+oB,UAAW,GAAIxqI,GAG1BorI,EAAkB1zI,EAAEyjF,SAAWzjF,EAG/B2zI,EAAqB3zI,EAAEyjF,UACpBiwD,EAAgBjiI,UAAYiiI,EAAgBvpB,QAC7CJ,EAAQ2pB,GACR3pB,EAAOp8G,MAGTysH,EAAWrQ,EAAOkQ,WAClB2Z,EAAmB7pB,EAAOqP,UAAW,eAGrCya,EAAa7zI,EAAE6zI,YAAc,GAG7BC,EAAiB,GACjBC,EAAsB,GAGtBC,EAAW,WAGXtC,EAAQ,CACPtV,WAAY,EAGZ6X,kBAAmB,SAAUz0I,GAC5B,IAAImzB,EACJ,GAAKspG,EAAY,CAChB,IAAMoX,EAEL,IADAA,EAAkB,GACR1gH,EAAQo+G,GAASnlD,KAAMwnD,IAChCC,EAAiB1gH,EAAO,GAAIs3B,cAAgB,MACzCopF,EAAiB1gH,EAAO,GAAIs3B,cAAgB,MAAS,IACrDh4C,OAAQ0gB,EAAO,IAGpBA,EAAQ0gH,EAAiB7zI,EAAIyqD,cAAgB,KAE9C,OAAgB,MAATt3B,EAAgB,KAAOA,EAAMjxB,KAAM,OAI3CwyI,sBAAuB,WACtB,OAAOjY,EAAYmX,EAAwB,MAI5Ce,iBAAkB,SAAU31I,EAAMU,GAMjC,OALkB,MAAb+8H,IACJz9H,EAAOu1I,EAAqBv1I,EAAKyrD,eAChC8pF,EAAqBv1I,EAAKyrD,gBAAmBzrD,EAC9Cs1I,EAAgBt1I,GAASU,GAEnBuB,MAIR2zI,iBAAkB,SAAUjrI,GAI3B,OAHkB,MAAb8yH,IACJj8H,EAAEq0I,SAAWlrI,GAEP1I,MAIRozI,WAAY,SAAUtpI,GACrB,IAAIwoE,EACJ,GAAKxoE,EACJ,GAAK0xH,EAGJyV,EAAMvX,OAAQ5vH,EAAKmnI,EAAM/iF,cAIzB,IAAMokB,KAAQxoE,EACbspI,EAAY9gE,GAAS,CAAE8gE,EAAY9gE,GAAQxoE,EAAKwoE,IAInD,OAAOtyE,MAIR6zI,MAAO,SAAU1lF,GAChB,IAAI2lF,EAAY3lF,GAAcolF,EAK9B,OAJKd,GACJA,EAAUoB,MAAOC,GAElB7qD,EAAM,EAAG6qD,GACF9zI,OAoBV,GAfA25H,EAASlB,QAASwY,GAKlB1xI,EAAEssD,MAAUA,GAAOtsD,EAAEssD,KAAOl7C,GAAS6K,MAAS,IAC5C/Y,QAAS+tI,GAAW7/H,GAASkhI,SAAW,MAG1CtyI,EAAEmJ,KAAOb,EAAQ4F,QAAU5F,EAAQa,MAAQnJ,EAAEkO,QAAUlO,EAAEmJ,KAGzDnJ,EAAEwxI,WAAcxxI,EAAEuxI,UAAY,KAAMtnF,cAAct3B,MAAOimG,IAAmB,CAAE,IAGxD,MAAjB54H,EAAEw0I,YAAsB,CAC5BjB,EAAYjwI,EAASC,cAAe,KAKpC,IACCgwI,EAAUt3H,KAAOjc,EAAEssD,IAInBinF,EAAUt3H,KAAOs3H,EAAUt3H,KAC3Bjc,EAAEw0I,YAAcpD,GAAakB,SAAW,KAAOlB,GAAaqD,MAC3DlB,EAAUjB,SAAW,KAAOiB,EAAUkB,KACtC,MAAQ5xI,GAIT7C,EAAEw0I,aAAc,GAalB,GARKx0I,EAAEgU,MAAQhU,EAAEi6D,aAAiC,iBAAXj6D,EAAEgU,OACxChU,EAAEgU,KAAO+1G,EAAOza,MAAOtvG,EAAEgU,KAAMhU,EAAEwwI,cAIlCiB,GAA+BvG,GAAYlrI,EAAGsI,EAASopI,GAGlDzV,EACJ,OAAOyV,EA6ER,IAAMzzI,KAxENu1I,EAAczpB,EAAOp8G,OAAS3N,EAAE0mH,SAGQ,GAApBqD,EAAOt0F,UAC1Bs0F,EAAOp8G,MAAM0rE,QAAS,aAIvBr5E,EAAEmJ,KAAOnJ,EAAEmJ,KAAKgK,cAGhBnT,EAAE00I,YAAc1D,GAAWhtI,KAAMhE,EAAEmJ,MAKnCgqI,EAAWnzI,EAAEssD,IAAIppD,QAAS2tI,GAAO,IAG3B7wI,EAAE00I,WAuBI10I,EAAEgU,MAAQhU,EAAEi6D,aACoD,KAAzEj6D,EAAEouD,aAAe,IAAKrtD,QAAS,uCACjCf,EAAEgU,KAAOhU,EAAEgU,KAAK9Q,QAAS0tI,GAAK,OAtB9B6C,EAAWzzI,EAAEssD,IAAIxoD,MAAOqvI,EAAS7yI,QAG5BN,EAAEgU,OAAUhU,EAAEi6D,aAAiC,iBAAXj6D,EAAEgU,QAC1Cm/H,IAAcpD,GAAO/rI,KAAMmvI,GAAa,IAAM,KAAQnzI,EAAEgU,YAGjDhU,EAAEgU,OAIO,IAAZhU,EAAE0vH,QACNyjB,EAAWA,EAASjwI,QAAS4tI,GAAY,MACzC2C,GAAa1D,GAAO/rI,KAAMmvI,GAAa,IAAM,KAAQ,KAASzpB,KAAY+pB,GAI3EzzI,EAAEssD,IAAM6mF,EAAWM,GASfzzI,EAAE20I,aACD5qB,EAAOooB,aAAcgB,IACzBzB,EAAMyC,iBAAkB,oBAAqBpqB,EAAOooB,aAAcgB,IAE9DppB,EAAOqoB,KAAMe,IACjBzB,EAAMyC,iBAAkB,gBAAiBpqB,EAAOqoB,KAAMe,MAKnDnzI,EAAEgU,MAAQhU,EAAE00I,aAAgC,IAAlB10I,EAAEouD,aAAyB9lD,EAAQ8lD,cACjEsjF,EAAMyC,iBAAkB,eAAgBn0I,EAAEouD,aAI3CsjF,EAAMyC,iBACL,SACAn0I,EAAEwxI,UAAW,IAAOxxI,EAAEuyI,QAASvyI,EAAEwxI,UAAW,IAC3CxxI,EAAEuyI,QAASvyI,EAAEwxI,UAAW,KACA,MAArBxxI,EAAEwxI,UAAW,GAAc,KAAOL,GAAW,WAAa,IAC7DnxI,EAAEuyI,QAAS,MAIFvyI,EAAE8b,QACZ41H,EAAMyC,iBAAkBl2I,EAAG+B,EAAE8b,QAAS7d,IAIvC,GAAK+B,EAAE40I,cAC+C,IAAnD50I,EAAE40I,WAAWx2I,KAAMs1I,EAAiBhC,EAAO1xI,IAAiBi8H,GAG9D,OAAOyV,EAAM4C,QAed,GAXAN,EAAW,QAGXJ,EAAiB3+H,IAAKjV,EAAEqK,UACxBqnI,EAAMhoD,KAAM1pF,EAAEiI,SACdypI,EAAMvY,KAAMn5H,EAAEuC,OAGd2wI,EAAYzB,GAA+BP,GAAYlxI,EAAGsI,EAASopI,GAK5D,CASN,GARAA,EAAMtV,WAAa,EAGdoX,GACJG,EAAmBt6D,QAAS,WAAY,CAAEq4D,EAAO1xI,IAI7Ci8H,EACJ,OAAOyV,EAIH1xI,EAAE0Z,OAAS1Z,EAAEyiH,QAAU,IAC3B6wB,EAAejwI,EAAOyJ,WAAY,WACjC4kI,EAAM4C,MAAO,YACXt0I,EAAEyiH,UAGN,IACCwZ,GAAY,EACZiX,EAAUtnF,KAAMkoF,EAAgBpqD,GAC/B,MAAQ7mF,GAGT,GAAKo5H,EACJ,MAAMp5H,EAIP6mF,GAAO,EAAG7mF,SAhCX6mF,GAAO,EAAG,gBAqCX,SAASA,EAAM/6B,EAAQkmF,EAAkBvyF,EAAWxmC,GACnD,IAAIg5H,EAAW7sI,EAAS1F,EAAO6I,EAAU2pI,EACxCnmF,EAAaimF,EAGT5Y,IAILA,GAAY,EAGPqX,GACJjwI,EAAOiL,aAAcglI,GAKtBJ,OAAYtxI,EAGZwxI,EAAwBt3H,GAAW,GAGnC41H,EAAMtV,WAAaztE,EAAS,EAAI,EAAI,EAGpCmmF,EAAYnmF,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCrM,IACJl3C,EA5lBJ,SAA8BpL,EAAG0xI,EAAOpvF,GAOvC,IALA,IAAI0yF,EAAI7rI,EAAM8rI,EAAeC,EAC5Bh1G,EAAWlgC,EAAEkgC,SACbsxG,EAAYxxI,EAAEwxI,UAGY,MAAnBA,EAAW,IAClBA,EAAU55E,aACEh2D,IAAPozI,IACJA,EAAKh1I,EAAEq0I,UAAY3C,EAAMuC,kBAAmB,iBAK9C,GAAKe,EACJ,IAAM7rI,KAAQ+2B,EACb,GAAKA,EAAU/2B,IAAU+2B,EAAU/2B,GAAOnF,KAAMgxI,GAAO,CACtDxD,EAAUv9G,QAAS9qB,GACnB,MAMH,GAAKqoI,EAAW,KAAOlvF,EACtB2yF,EAAgBzD,EAAW,OACrB,CAGN,IAAMroI,KAAQm5C,EAAY,CACzB,IAAMkvF,EAAW,IAAOxxI,EAAEyyI,WAAYtpI,EAAO,IAAMqoI,EAAW,IAAQ,CACrEyD,EAAgB9rI,EAChB,MAEK+rI,IACLA,EAAgB/rI,GAKlB8rI,EAAgBA,GAAiBC,EAMlC,GAAKD,EAIJ,OAHKA,IAAkBzD,EAAW,IACjCA,EAAUv9G,QAASghH,GAEb3yF,EAAW2yF,GAyiBLE,CAAqBn1I,EAAG0xI,EAAOpvF,IAI3Cl3C,EAtiBH,SAAsBpL,EAAGoL,EAAUsmI,EAAOoD,GACzC,IAAIM,EAAOlzE,EAASmzE,EAAMpkB,EAAKn6E,EAC9B27F,EAAa,GAGbjB,EAAYxxI,EAAEwxI,UAAU1tI,QAGzB,GAAK0tI,EAAW,GACf,IAAM6D,KAAQr1I,EAAEyyI,WACfA,EAAY4C,EAAKprF,eAAkBjqD,EAAEyyI,WAAY4C,GAOnD,IAHAnzE,EAAUsvE,EAAU55E,QAGZsK,GAcP,GAZKliE,EAAEwyI,eAAgBtwE,KACtBwvE,EAAO1xI,EAAEwyI,eAAgBtwE,IAAc92D,IAIlC0rC,GAAQg+F,GAAa90I,EAAEs1I,aAC5BlqI,EAAWpL,EAAEs1I,WAAYlqI,EAAUpL,EAAEuxI,WAGtCz6F,EAAOorB,EACPA,EAAUsvE,EAAU55E,QAKnB,GAAiB,MAAZsK,EAEJA,EAAUprB,OAGJ,GAAc,MAATA,GAAgBA,IAASorB,EAAU,CAM9C,KAHAmzE,EAAO5C,EAAY37F,EAAO,IAAMorB,IAAauwE,EAAY,KAAOvwE,IAI/D,IAAMkzE,KAAS3C,EAId,IADAxhB,EAAMmkB,EAAM5kI,MAAO,MACT,KAAQ0xD,IAGjBmzE,EAAO5C,EAAY37F,EAAO,IAAMm6E,EAAK,KACpCwhB,EAAY,KAAOxhB,EAAK,KACb,EAGG,IAATokB,EACJA,EAAO5C,EAAY2C,IAGgB,IAAxB3C,EAAY2C,KACvBlzE,EAAU+uD,EAAK,GACfugB,EAAUv9G,QAASg9F,EAAK,KAEzB,MAOJ,IAAc,IAATokB,EAGJ,GAAKA,GAAQr1I,EAAEu1I,OACdnqI,EAAWiqI,EAAMjqI,QAEjB,IACCA,EAAWiqI,EAAMjqI,GAChB,MAAQvI,GACT,MAAO,CACNwI,MAAO,cACP9I,MAAO8yI,EAAOxyI,EAAI,sBAAwBi0C,EAAO,OAASorB,IASjE,MAAO,CAAE72D,MAAO,UAAW2I,KAAM5I,GAycpBoqI,CAAax1I,EAAGoL,EAAUsmI,EAAOoD,GAGvCA,GAGC90I,EAAE20I,cACNI,EAAWrD,EAAMuC,kBAAmB,oBAEnClqB,EAAOooB,aAAcgB,GAAa4B,IAEnCA,EAAWrD,EAAMuC,kBAAmB,WAEnClqB,EAAOqoB,KAAMe,GAAa4B,IAKZ,MAAXpmF,GAA6B,SAAX3uD,EAAEmJ,KACxBylD,EAAa,YAGS,MAAXD,EACXC,EAAa,eAIbA,EAAaxjD,EAASC,MACtBpD,EAAUmD,EAAS4I,KAEnB8gI,IADAvyI,EAAQ6I,EAAS7I,UAMlBA,EAAQqsD,GACHD,GAAWC,IACfA,EAAa,QACRD,EAAS,IACbA,EAAS,KAMZ+iF,EAAM/iF,OAASA,EACf+iF,EAAM9iF,YAAeimF,GAAoBjmF,GAAe,GAGnDkmF,EACJ1a,EAASY,YAAa0Y,EAAiB,CAAEzrI,EAAS2mD,EAAY8iF,IAE9DtX,EAASgB,WAAYsY,EAAiB,CAAEhC,EAAO9iF,EAAYrsD,IAI5DmvI,EAAMmC,WAAYA,GAClBA,OAAajyI,EAER4xI,GACJG,EAAmBt6D,QAASy7D,EAAY,cAAgB,YACvD,CAAEpD,EAAO1xI,EAAG80I,EAAY7sI,EAAU1F,IAIpCqxI,EAAiB5Z,SAAU0Z,EAAiB,CAAEhC,EAAO9iF,IAEhD4kF,IACJG,EAAmBt6D,QAAS,eAAgB,CAAEq4D,EAAO1xI,MAG3C+pH,EAAOt0F,QAChBs0F,EAAOp8G,MAAM0rE,QAAS,cAKzB,OAAOq4D,GAGR+D,QAAS,SAAUnpF,EAAKt4C,EAAMzK,GAC7B,OAAOwgH,EAAOjrH,IAAKwtD,EAAKt4C,EAAMzK,EAAU,SAGzCmsI,UAAW,SAAUppF,EAAK/iD,GACzB,OAAOwgH,EAAOjrH,IAAKwtD,OAAK1qD,EAAW2H,EAAU,aAI/CwgH,EAAOU,KAAM,CAAE,MAAO,QAAU,SAAUxsH,EAAGiQ,GAC5C67G,EAAQ77G,GAAW,SAAUo+C,EAAKt4C,EAAMzK,EAAUJ,GAUjD,OAPKogH,EAAYv1G,KAChB7K,EAAOA,GAAQI,EACfA,EAAWyK,EACXA,OAAOpS,GAIDmoH,EAAOnlF,KAAMmlF,EAAOv/G,OAAQ,CAClC8hD,IAAKA,EACLnjD,KAAM+E,EACNqjI,SAAUpoI,EACV6K,KAAMA,EACN/L,QAASsB,GACPwgH,EAAOe,cAAex+D,IAASA,OAKpCy9D,EAAOub,SAAW,SAAUh5E,EAAKhkD,GAChC,OAAOyhH,EAAOnlF,KAAM,CACnB0nB,IAAKA,EAGLnjD,KAAM,MACNooI,SAAU,SACV7hB,OAAO,EACPh2G,OAAO,EACPgtG,QAAQ,EAKR+rB,WAAY,CACXkD,cAAe,cAEhBL,WAAY,SAAUlqI,GACrB2+G,EAAOqB,WAAYhgH,EAAU9C,OAMhCyhH,EAAOhC,GAAGv9G,OAAQ,CACjBorI,QAAS,SAAUvtE,GAClB,IAAItoD,EAyBJ,OAvBKtf,KAAM,KACL8oH,EAAYlhD,KAChBA,EAAOA,EAAKjqE,KAAMqC,KAAM,KAIzBsf,EAAOgqG,EAAQ1hD,EAAM5nE,KAAM,GAAI+D,eAAgBmmH,GAAI,GAAInkH,OAAO,GAEzD/F,KAAM,GAAIszB,YACdhU,EAAKsR,aAAc5wB,KAAM,IAG1Bsf,EAAKxV,IAAK,WAGT,IAFA,IAAImgH,EAAOjqH,KAEHiqH,EAAKmrB,mBACZnrB,EAAOA,EAAKmrB,kBAGb,OAAOnrB,IACJ/+G,OAAQlL,OAGNA,MAGRq1I,UAAW,SAAUztE,GACpB,OAAKkhD,EAAYlhD,GACT5nE,KAAKgqH,KAAM,SAAUxsH,GAC3B8rH,EAAQtpH,MAAOq1I,UAAWztE,EAAKjqE,KAAMqC,KAAMxC,MAItCwC,KAAKgqH,KAAM,WACjB,IAAI53F,EAAOk3F,EAAQtpH,MAClBy/B,EAAWrN,EAAKqN,WAEZA,EAAS5/B,OACb4/B,EAAS01G,QAASvtE,GAGlBx1C,EAAKlnB,OAAQ08D,MAKhBtoD,KAAM,SAAUsoD,GACf,IAAI0tE,EAAiBxsB,EAAYlhD,GAEjC,OAAO5nE,KAAKgqH,KAAM,SAAUxsH,GAC3B8rH,EAAQtpH,MAAOm1I,QAASG,EAAiB1tE,EAAKjqE,KAAMqC,KAAMxC,GAAMoqE,MAIlE2tE,OAAQ,SAAUvyI,GAIjB,OAHAhD,KAAK64B,OAAQ71B,GAAWiwH,IAAK,QAASjJ,KAAM,WAC3CV,EAAQtpH,MAAOslI,YAAatlI,KAAKguE,cAE3BhuE,QAKTspH,EAAO+H,KAAK1E,QAAQrxG,OAAS,SAAU2uG,GACtC,OAAQX,EAAO+H,KAAK1E,QAAQh4F,QAASs1F,IAEtCX,EAAO+H,KAAK1E,QAAQh4F,QAAU,SAAUs1F,GACvC,SAAWA,EAAKplH,aAAeolH,EAAK1pF,cAAgB0pF,EAAK0e,iBAAiB9oI,SAM3EypH,EAAOmoB,aAAa+D,IAAM,WACzB,IACC,OAAO,IAAI5yI,EAAO6yI,eACjB,MAAQrzI,MAGX,IAAIszI,GAAmB,CAGrBC,EAAG,IAIHC,KAAM,KAEPC,GAAevsB,EAAOmoB,aAAa+D,MAEpC3sB,EAAQitB,OAASD,IAAkB,oBAAqBA,GACxDhtB,EAAQ1kF,KAAO0xG,KAAiBA,GAEhCvsB,EAAOkpB,cAAe,SAAU3qI,GAC/B,IAAIiB,EAAUitI,EAGd,GAAKltB,EAAQitB,MAAQD,KAAiBhuI,EAAQksI,YAC7C,MAAO,CACN5oF,KAAM,SAAU9vC,EAASzR,GACxB,IAAIpM,EACHg4I,EAAM3tI,EAAQ2tI,MAWf,GATAA,EAAIr4H,KACHtV,EAAQa,KACRb,EAAQgkD,IACRhkD,EAAQoR,MACRpR,EAAQmuI,SACRnuI,EAAQ2yF,UAIJ3yF,EAAQouI,UACZ,IAAMz4I,KAAKqK,EAAQouI,UAClBT,EAAKh4I,GAAMqK,EAAQouI,UAAWz4I,GAmBhC,IAAMA,KAdDqK,EAAQ+rI,UAAY4B,EAAI7B,kBAC5B6B,EAAI7B,iBAAkB9rI,EAAQ+rI,UAQzB/rI,EAAQksI,aAAgB14H,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACVm6H,EAAI9B,iBAAkBl2I,EAAG6d,EAAS7d,IAInCsL,EAAW,SAAUJ,GACpB,OAAO,WACDI,IACJA,EAAWitI,EAAgBP,EAAI70F,OAC9B60F,EAAI30F,QAAU20F,EAAIU,QAAUV,EAAIW,UAC/BX,EAAIY,mBAAqB,KAEb,UAAT1tI,EACJ8sI,EAAI3B,QACgB,UAATnrI,EAKgB,iBAAf8sI,EAAItnF,OACftkD,EAAU,EAAG,SAEbA,EAGC4rI,EAAItnF,OACJsnF,EAAIrnF,YAINvkD,EACC8rI,GAAkBF,EAAItnF,SAAYsnF,EAAItnF,OACtCsnF,EAAIrnF,WAK+B,UAAjCqnF,EAAIa,cAAgB,SACM,iBAArBb,EAAIc,aACV,CAAEC,OAAQf,EAAI7qI,UACd,CAAE20B,KAAMk2G,EAAIc,cACbd,EAAI/B,4BAQT+B,EAAI70F,OAAS73C,IACbitI,EAAgBP,EAAI30F,QAAU20F,EAAIW,UAAYrtI,EAAU,cAKnC3H,IAAhBq0I,EAAIU,QACRV,EAAIU,QAAUH,EAEdP,EAAIY,mBAAqB,WAGA,IAAnBZ,EAAI7Z,YAMR/4H,EAAOyJ,WAAY,WACbvD,GACJitI,OAQLjtI,EAAWA,EAAU,SAErB,IAGC0sI,EAAIrqF,KAAMtjD,EAAQosI,YAAcpsI,EAAQ0L,MAAQ,MAC/C,MAAQnR,GAGT,GAAK0G,EACJ,MAAM1G,IAKTyxI,MAAO,WACD/qI,GACJA,QAWLwgH,EAAOipB,cAAe,SAAUhzI,GAC1BA,EAAEw0I,cACNx0I,EAAEkgC,SAAS2pF,QAAS,KAKtBE,EAAO+oB,UAAW,CACjBP,QAAS,CACR1oB,OAAQ,6FAGT3pF,SAAU,CACT2pF,OAAQ,2BAET4oB,WAAY,CACXkD,cAAe,SAAU51G,GAExB,OADAgqF,EAAOqB,WAAYrrF,GACZA,MAMVgqF,EAAOipB,cAAe,SAAU,SAAUhzI,QACxB4B,IAAZ5B,EAAE0vH,QACN1vH,EAAE0vH,OAAQ,GAEN1vH,EAAEw0I,cACNx0I,EAAEmJ,KAAO,SAKX4gH,EAAOkpB,cAAe,SAAU,SAAUjzI,GAIxC,IAAI6pH,EAAQtgH,EADb,GAAKvJ,EAAEw0I,aAAex0I,EAAEi3I,YAEvB,MAAO,CACNrrF,KAAM,SAAU34C,EAAG5I,GAClBw/G,EAASE,EAAQ,YACfrgH,KAAM1J,EAAEi3I,aAAe,IACvBj+H,KAAM,CAAEiB,QAASja,EAAEk3I,cAAe73H,IAAKrf,EAAEssD,MACzCj9C,GAAI,aAAc9F,EAAW,SAAU4tI,GACvCttB,EAAOhhH,SACPU,EAAW,KACN4tI,GACJ9sI,EAAuB,UAAb8sI,EAAIhuI,KAAmB,IAAM,IAAKguI,EAAIhuI,QAKnD7F,EAASo5D,KAAKr3D,YAAawkH,EAAQ,KAEpCyqB,MAAO,WACD/qI,GACJA,QAUL,IAqGKnE,GArGDgyI,GAAe,GAClBC,GAAS,oBAGVttB,EAAO+oB,UAAW,CACjBwE,MAAO,WACPC,cAAe,WACd,IAAIhuI,EAAW6tI,GAAa76D,OAAWwtC,EAAOgB,QAAU,IAAQrB,KAEhE,OADAjpH,KAAM8I,IAAa,EACZA,KAKTwgH,EAAOipB,cAAe,aAAc,SAAUhzI,EAAGw3I,EAAkB9F,GAElE,IAAIxhH,EAAcunH,EAAaC,EAC9BC,GAAuB,IAAZ33I,EAAEs3I,QAAqBD,GAAOrzI,KAAMhE,EAAEssD,KAChD,MACkB,iBAAXtsD,EAAEgU,MAE6C,KADnDhU,EAAEouD,aAAe,IACjBrtD,QAAS,sCACXs2I,GAAOrzI,KAAMhE,EAAEgU,OAAU,QAI5B,GAAK2jI,GAAiC,UAArB33I,EAAEwxI,UAAW,GA8D7B,OA3DAthH,EAAelwB,EAAEu3I,cAAgBhuB,EAAYvpH,EAAEu3I,eAC9Cv3I,EAAEu3I,gBACFv3I,EAAEu3I,cAGEI,EACJ33I,EAAG23I,GAAa33I,EAAG23I,GAAWz0I,QAASm0I,GAAQ,KAAOnnH,IAC/B,IAAZlwB,EAAEs3I,QACbt3I,EAAEssD,MAASyjF,GAAO/rI,KAAMhE,EAAEssD,KAAQ,IAAM,KAAQtsD,EAAEs3I,MAAQ,IAAMpnH,GAIjElwB,EAAEyyI,WAAY,eAAkB,WAI/B,OAHMiF,GACL3tB,EAAOxnH,MAAO2tB,EAAe,mBAEvBwnH,EAAmB,IAI3B13I,EAAEwxI,UAAW,GAAM,OAGnBiG,EAAcp0I,EAAQ6sB,GACtB7sB,EAAQ6sB,GAAiB,WACxBwnH,EAAoBr3I,WAIrBqxI,EAAMvX,OAAQ,gBAGQv4H,IAAhB61I,EACJ1tB,EAAQ1mH,GAASkrI,WAAYr+G,GAI7B7sB,EAAQ6sB,GAAiBunH,EAIrBz3I,EAAGkwB,KAGPlwB,EAAEu3I,cAAgBC,EAAiBD,cAGnCH,GAAa91I,KAAM4uB,IAIfwnH,GAAqBnuB,EAAYkuB,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAc71I,IAI5B,WAYT0nH,EAAQsuB,qBACHxyI,GAAO9B,EAAS4vG,eAAe0kC,mBAAoB,IAAKxyI,MACvDs7B,UAAY,6BACiB,IAA3Bt7B,GAAKqpE,WAAWnuE,QAQxBypH,EAAO+N,UAAY,SAAU9jH,EAAMyvE,EAASo0D,GAC3C,MAAqB,iBAAT7jI,EACJ,IAEgB,kBAAZyvE,IACXo0D,EAAcp0D,EACdA,GAAU,GAKLA,IAIA6lC,EAAQsuB,qBAMZ7oC,GALAtrB,EAAUngF,EAAS4vG,eAAe0kC,mBAAoB,KAKvCr0I,cAAe,SACzB0Y,KAAO3Y,EAAS8N,SAAS6K,KAC9BwnE,EAAQ/mB,KAAKr3D,YAAa0pG,IAE1BtrB,EAAUngF,GAKZ+8H,GAAWwX,GAAe,IAD1BC,EAASpgB,EAAW9rC,KAAM53E,IAKlB,CAAEyvE,EAAQlgF,cAAeu0I,EAAQ,MAGzCA,EAAS1X,GAAe,CAAEpsH,GAAQyvE,EAAS48C,GAEtCA,GAAWA,EAAQ//H,QACvBypH,EAAQsW,GAAUx3H,SAGZkhH,EAAOpsD,MAAO,GAAIm6E,EAAOrpE,cAlChC,IAAIsgC,EAAM+oC,EAAQzX,GAyCnBtW,EAAOhC,GAAG/nE,KAAO,SAAUsM,EAAKnsB,EAAQ52B,GACvC,IAAI9F,EAAU0F,EAAMiC,EACnBynB,EAAOpyB,KACP8O,EAAM+8C,EAAIvrD,QAAS,KAsDpB,OApDKwO,GAAO,IACX9L,EAAW2qI,GAAkB9hF,EAAIxoD,MAAOyL,IACxC+8C,EAAMA,EAAIxoD,MAAO,EAAGyL,IAIhBg6G,EAAYppF,IAGhB52B,EAAW42B,EACXA,OAASv+B,GAGEu+B,GAA4B,iBAAXA,IAC5Bh3B,EAAO,QAIH0pB,EAAKvyB,OAAS,GAClBypH,EAAOnlF,KAAM,CACZ0nB,IAAKA,EAKLnjD,KAAMA,GAAQ,MACdooI,SAAU,OACVv9H,KAAMmsB,IACHupD,KAAM,SAAUqtD,GAGnB3rI,EAAW/K,UAEXwyB,EAAKw1C,KAAM5kE,EAIVsmH,EAAQ,SAAUp+G,OAAQo+G,EAAO+N,UAAWif,IAAiBpmH,KAAMltB,GAGnEszI,KAKE5c,OAAQ5wH,GAAY,SAAUmoI,EAAO/iF,GACxC97B,EAAK43F,KAAM,WACVlhH,EAAS/I,MAAOC,KAAM2K,GAAY,CAAEsmI,EAAMqF,aAAcpoF,EAAQ+iF,QAK5DjxI,MAORspH,EAAOU,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,YACE,SAAUxsH,EAAGkL,GACf4gH,EAAOhC,GAAI5+G,GAAS,SAAU4+G,GAC7B,OAAOtnH,KAAK4O,GAAIlG,EAAM4+G,MAOxBgC,EAAO+H,KAAK1E,QAAQ2qB,SAAW,SAAUrtB,GACxC,OAAOX,EAAOyB,KAAMzB,EAAOgjB,OAAQ,SAAUhlB,GAC5C,OAAO2C,IAAS3C,EAAG2C,OAChBpqH,QAMLypH,EAAO/jG,OAAS,CACfgyH,UAAW,SAAUttB,EAAMpiH,EAASrK,GACnC,IAAIg6I,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvDvzI,EAAWglH,EAAOtkH,IAAKilH,EAAM,YAC7B6tB,EAAUxuB,EAAQW,GAClB/kH,EAAQ,GAGS,WAAbZ,IACJ2lH,EAAK5lH,MAAMC,SAAW,YAGvBszI,EAAYE,EAAQvyH,SACpBmyH,EAAYpuB,EAAOtkH,IAAKilH,EAAM,OAC9B4tB,EAAavuB,EAAOtkH,IAAKilH,EAAM,SACI,aAAb3lH,GAAwC,UAAbA,KAC9CozI,EAAYG,GAAav3I,QAAS,SAAY,GAMhDq3I,GADAH,EAAcM,EAAQxzI,YACDC,IACrBkzI,EAAUD,EAAYlmH,OAGtBqmH,EAASprI,WAAYmrI,IAAe,EACpCD,EAAUlrI,WAAYsrI,IAAgB,GAGlC/uB,EAAYjhH,KAGhBA,EAAUA,EAAQlK,KAAMssH,EAAMzsH,EAAG8rH,EAAOv/G,OAAQ,GAAI6tI,KAGjC,MAAf/vI,EAAQtD,MACZW,EAAMX,IAAQsD,EAAQtD,IAAMqzI,EAAUrzI,IAAQozI,GAE1B,MAAhB9vI,EAAQypB,OACZpsB,EAAMosB,KAASzpB,EAAQypB,KAAOsmH,EAAUtmH,KAASmmH,GAG7C,UAAW5vI,EACfA,EAAQkwI,MAAMp6I,KAAMssH,EAAM/kH,GAG1B4yI,EAAQ9yI,IAAKE,KAKhBokH,EAAOhC,GAAGv9G,OAAQ,CAGjBwb,OAAQ,SAAU1d,GAGjB,GAAKjI,UAAUC,OACd,YAAmBsB,IAAZ0G,EACN7H,KACAA,KAAKgqH,KAAM,SAAUxsH,GACpB8rH,EAAO/jG,OAAOgyH,UAAWv3I,KAAM6H,EAASrK,KAI3C,IAAIw6I,EAAMC,EACThuB,EAAOjqH,KAAM,GAEd,OAAMiqH,EAQAA,EAAK0e,iBAAiB9oI,QAK5Bm4I,EAAO/tB,EAAKxjE,wBACZwxF,EAAMhuB,EAAKlmH,cAAcg+F,YAClB,CACNx9F,IAAKyzI,EAAKzzI,IAAM0zI,EAAIvxF,YACpBp1B,KAAM0mH,EAAK1mH,KAAO2mH,EAAIpxF,cARf,CAAEtiD,IAAK,EAAG+sB,KAAM,QATxB,GAuBDhtB,SAAU,WACT,GAAMtE,KAAM,GAAZ,CAIA,IAAIwhC,EAAcjc,EAAQu2C,EACzBmuD,EAAOjqH,KAAM,GACbk4I,EAAe,CAAE3zI,IAAK,EAAG+sB,KAAM,GAGhC,GAAwC,UAAnCg4F,EAAOtkH,IAAKilH,EAAM,YAGtB1kG,EAAS0kG,EAAKxjE,4BAER,CAON,IANAlhC,EAASvlB,KAAKulB,SAIdu2C,EAAMmuD,EAAKlmH,cACXy9B,EAAeyoF,EAAKzoF,cAAgBs6B,EAAInV,gBAChCnlB,IACLA,IAAiBs6B,EAAIn3D,MAAQ68B,IAAiBs6B,EAAInV,kBACT,WAA3C2iE,EAAOtkH,IAAKw8B,EAAc,aAE1BA,EAAeA,EAAalO,WAExBkO,GAAgBA,IAAiByoF,GAAkC,IAA1BzoF,EAAaxwB,YAG1DknI,EAAe5uB,EAAQ9nF,GAAejc,UACzBhhB,KAAO+kH,EAAOtkH,IAAKw8B,EAAc,kBAAkB,GAChE02G,EAAa5mH,MAAQg4F,EAAOtkH,IAAKw8B,EAAc,mBAAmB,IAKpE,MAAO,CACNj9B,IAAKghB,EAAOhhB,IAAM2zI,EAAa3zI,IAAM+kH,EAAOtkH,IAAKilH,EAAM,aAAa,GACpE34F,KAAM/L,EAAO+L,KAAO4mH,EAAa5mH,KAAOg4F,EAAOtkH,IAAKilH,EAAM,cAAc,MAc1EzoF,aAAc,WACb,OAAOxhC,KAAK8J,IAAK,WAGhB,IAFA,IAAI03B,EAAexhC,KAAKwhC,aAEhBA,GAA2D,WAA3C8nF,EAAOtkH,IAAKw8B,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBmlB,QAM1B2iE,EAAOU,KAAM,CAAEr5F,WAAY,cAAeiS,UAAW,eAAiB,SAAUn1B,EAAQ8K,GACvF,IAAIhU,EAAM,gBAAkBgU,EAE5B+wG,EAAOhC,GAAI75G,GAAW,SAAU8B,GAC/B,OAAOssH,EAAQ77H,KAAM,SAAUiqH,EAAMx8G,EAAQ8B,GAG5C,IAAI0oI,EAOJ,GANKlvB,EAAUkB,GACdguB,EAAMhuB,EACuB,IAAlBA,EAAKj5G,WAChBinI,EAAMhuB,EAAKloB,kBAGC5gG,IAARoO,EACJ,OAAO0oI,EAAMA,EAAK1/H,GAAS0xG,EAAMx8G,GAG7BwqI,EACJA,EAAIn/G,SACFv0B,EAAY0zI,EAAIpxF,YAAVt3C,EACPhL,EAAMgL,EAAM0oI,EAAIvxF,aAIjBujE,EAAMx8G,GAAW8B,GAEhB9B,EAAQ8B,EAAK3P,UAAUC,WAU5BypH,EAAOU,KAAM,CAAE,MAAO,QAAU,SAAUxsH,EAAG+a,GAC5C+wG,EAAOuf,SAAUtwH,GAAS2tH,GAAcrd,EAAQoe,cAC/C,SAAUhd,EAAM+b,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQ9b,EAAM1xG,GAGlBotH,GAAUpiI,KAAMyiI,GACtB1c,EAAQW,GAAO3lH,WAAYiU,GAAS,KACpCytH,MAQL1c,EAAOU,KAAM,CAAEmuB,OAAQ,SAAUC,MAAO,SAAW,SAAUr6I,EAAM2K,GAClE4gH,EAAOU,KAAM,CAAE/qD,QAAS,QAAUlhE,EAAMgc,QAASrR,EAAM2vI,GAAI,QAAUt6I,GACpE,SAAUu6I,EAAcC,GAGxBjvB,EAAOhC,GAAIixB,GAAa,SAAUhrG,EAAQ9uC,GACzC,IAAIq9H,EAAYl8H,UAAUC,SAAYy4I,GAAkC,kBAAX/qG,GAC5D+6F,EAAQgQ,KAA6B,IAAX/qG,IAA6B,IAAV9uC,EAAiB,SAAW,UAE1E,OAAOo9H,EAAQ77H,KAAM,SAAUiqH,EAAMvhH,EAAMjK,GAC1C,IAAIq9D,EAEJ,OAAKitD,EAAUkB,GAGyB,IAAhCsuB,EAASj4I,QAAS,SACxB2pH,EAAM,QAAUlsH,GAChBksH,EAAKpnH,SAAS8jD,gBAAiB,SAAW5oD,GAIrB,IAAlBksH,EAAKj5G,UACT8qD,EAAMmuD,EAAKtjE,gBAIJxwC,KAAKuG,IACXutG,EAAKtlH,KAAM,SAAW5G,GAAQ+9D,EAAK,SAAW/9D,GAC9CksH,EAAKtlH,KAAM,SAAW5G,GAAQ+9D,EAAK,SAAW/9D,GAC9C+9D,EAAK,SAAW/9D,UAIDoD,IAAV1C,EAGN6qH,EAAOtkH,IAAKilH,EAAMvhH,EAAM4/H,GAGxBhf,EAAOjlH,MAAO4lH,EAAMvhH,EAAMjK,EAAO6pI,IAChC5/H,EAAMozH,EAAYvuF,OAASpsC,EAAW26H,QAM5CxS,EAAOU,KAAM,wLAEgDj6G,MAAO,KACnE,SAAUvS,EAAGO,GAGburH,EAAOhC,GAAIvpH,GAAS,SAAUwV,EAAM+zG,GACnC,OAAO1nH,UAAUC,OAAS,EACzBG,KAAK4O,GAAI7Q,EAAM,KAAMwV,EAAM+zG,GAC3BtnH,KAAK44E,QAAS76E,MAIjBurH,EAAOhC,GAAGv9G,OAAQ,CACjB6C,MAAO,SAAU4rI,EAAQC,GACxB,OAAOz4I,KAAKojI,WAAYoV,GAASnV,WAAYoV,GAASD,MAOxDlvB,EAAOhC,GAAGv9G,OAAQ,CAEjB/K,KAAM,SAAU4hI,EAAOrtH,EAAM+zG,GAC5B,OAAOtnH,KAAK4O,GAAIgyH,EAAO,KAAMrtH,EAAM+zG,IAEpCoxB,OAAQ,SAAU9X,EAAOtZ,GACxB,OAAOtnH,KAAK8O,IAAK8xH,EAAO,KAAMtZ,IAG/BqxB,SAAU,SAAU31I,EAAU49H,EAAOrtH,EAAM+zG,GAC1C,OAAOtnH,KAAK4O,GAAIgyH,EAAO59H,EAAUuQ,EAAM+zG,IAExCsxB,WAAY,SAAU51I,EAAU49H,EAAOtZ,GAGtC,OAA4B,IAArB1nH,UAAUC,OAChBG,KAAK8O,IAAK9L,EAAU,MACpBhD,KAAK8O,IAAK8xH,EAAO59H,GAAY,KAAMskH,MAQtCgC,EAAOuvB,MAAQ,SAAUvxB,EAAItkC,GAC5B,IAAIwtC,EAAKjuH,EAAMs2I,EAUf,GARwB,iBAAZ71D,IACXwtC,EAAMlJ,EAAItkC,GACVA,EAAUskC,EACVA,EAAKkJ,GAKA1H,EAAYxB,GAalB,OARA/kH,EAAOc,EAAM1F,KAAMiC,UAAW,IAC9Bi5I,EAAQ,WACP,OAAOvxB,EAAGvnH,MAAOijF,GAAWhjF,KAAMuC,EAAKiP,OAAQnO,EAAM1F,KAAMiC,eAItDsrH,KAAO5D,EAAG4D,KAAO5D,EAAG4D,MAAQ5B,EAAO4B,OAElC2tB,GAGRvvB,EAAOwvB,UAAY,SAAUC,GACvBA,EACJzvB,EAAOmS,YAEPnS,EAAOgO,OAAO,IAGhBhO,EAAOvoH,QAAUD,MAAMC,QACvBuoH,EAAO0vB,UAAYhzI,KAAKC,MACxBqjH,EAAO1uB,SAAWA,EAClB0uB,EAAOR,WAAaA,EACpBQ,EAAOP,SAAWA,EAClBO,EAAO8S,UAAYA,EACnB9S,EAAO5gH,KAAO2gH,EAEdC,EAAOzxB,IAAM/sF,KAAK+sF,IAElByxB,EAAO2vB,UAAY,SAAU73I,GAK5B,IAAIsH,EAAO4gH,EAAO5gH,KAAMtH,GACxB,OAAkB,WAATsH,GAA8B,WAATA,KAK5BupB,MAAO7wB,EAAMmL,WAAYnL,UAoBrBD,KAAAZ,EAAA,WACL,OAAO+oH,GADFvpH,MAAAzC,EAAY,OAAZC,EAAAD,QAAAiD,GAQP,IAGC24I,GAAUt2I,EAAO0mH,OAGjB6vB,GAAKv2I,EAAOqE,EAwBb,OAtBAqiH,EAAO8vB,WAAa,SAAUhvB,GAS7B,OARKxnH,EAAOqE,IAAMqiH,IACjB1mH,EAAOqE,EAAIkyI,IAGP/uB,GAAQxnH,EAAO0mH,SAAWA,IAC9B1mH,EAAO0mH,OAAS4vB,IAGV5vB,GAMFd,IACL5lH,EAAO0mH,OAAS1mH,EAAOqE,EAAIqiH,GAMrBA,mBCp2UP/rH,EAAAD,QAAA,WACA,UAAAgF,MAAA,iECEE/E,EAAOD,QAAUkC,EAAQ;;;;;;;;GCMd,IAAIF,EAAEE,EAAQ,IAAiBqtF,EAAErtF,EAAQ,GACtD,SAASlB,EAAE4D,GAAG,IAAI,IAAIC,EAAEvC,UAAUC,OAAO,EAAE/B,EAAE,yDAAyDoE,EAAErE,EAAE,EAAEA,EAAEsE,EAAEtE,IAAIC,GAAG,WAAWuvD,mBAAmBztD,UAAU/B,EAAE,KADlG,SAAYqE,EAAEC,EAAErE,EAAED,EAAEwE,EAAED,EAAEkrF,EAAED,GAAG,IAAInrF,EAAE,CAAU,GAATA,OAAE,OAAU,IAASC,EAAED,EAAEI,MAAM,qIAAqI,CAAC,IAAIurF,EAAE,CAAC/vF,EAAED,EAAEwE,EAAED,EAAEkrF,EAAED,GAAGD,EAAE,GAAElrF,EAAEI,MAAMH,EAAEM,QAAQ,MAAM,WAAW,OAAOorF,EAAET,SAAUrvF,KAAK,sBAAsC,MAAhBmE,EAAEQ,YAAY,EAAQR,GAClO+qF,EAAG,EAAG,yBAAyB/qF,EAAE,4HAA4HpE,GAClU,IAAIivF,EAAE,mBAAoBxuF,QAAQA,OAAOsc,IAAIqyE,EAAGH,EAAExuF,OAAOsc,IAAI,gBAAgB,MAAMoQ,EAAE8hE,EAAExuF,OAAOsc,IAAI,kBAAkB,MAAM0yE,EAAGR,EAAExuF,OAAOsc,IAAI,qBAAqB,MAAM+0E,EAAG7C,EAAExuF,OAAOsc,IAAI,kBAAkB,MAAM+Q,EAAEmhE,EAAExuF,OAAOsc,IAAI,kBAAkB,MAAM40E,EAAG1C,EAAExuF,OAAOsc,IAAI,iBAAiB,MAAM60E,EAAG3C,EAAExuF,OAAOsc,IAAI,yBAAyB,MAAMu3E,EAAGrF,EAAExuF,OAAOsc,IAAI,qBAAqB,MAAMsyE,EAAEJ,EAAExuF,OAAOsc,IAAI,kBAAkB,MAAMw3E,EAAGtF,EAAExuF,OAAOsc,IAAI,cAAc,MAAMy3E,EAAGvF,EAAExuF,OAAOsc,IAAI,cAAc,MAC9d,SAAS2yE,EAAEtrF,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEgQ,aAAahQ,EAAEnE,MAAM,KAAK,GAAG,iBAAkBmE,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKwtF,EAAG,MAAM,iBAAiB,KAAKzkE,EAAE,MAAM,WAAW,KAAKiiE,EAAG,MAAM,SAAS,KAAK0C,EAAG,MAAM,WAAW,KAAKrC,EAAG,MAAM,aAAa,KAAKJ,EAAE,MAAM,WAAW,GAAG,iBAAkBjrF,EAAE,OAAOA,EAAE2sF,UAAU,KAAKY,EAAG,MAAM,mBAAmB,KAAK7jE,EAAE,MAAM,mBAAmB,KAAKwmE,EAAG,IAAIjwF,EAAED,EAAE2E,OAAmC,OAA5B1E,EAAEA,EAAE+P,aAAa/P,EAAEpE,MAAM,GAAUmE,EAAEgQ,cAAc,KAAK/P,EAAE,cAAcA,EAAE,IACjf,cAAc,KAAKkwF,EAAG,OAAO7E,EAAEtrF,EAAEwG,MAAM,KAAK4pF,EAAG,GAAGpwF,EAAE,IAAIA,EAAE0uF,QAAQ1uF,EAAE2uF,QAAQ,KAAK,OAAOrD,EAAEtrF,GAAG,OAAO,KAAK,IAAI4rF,EAAEjB,EAAEkF,mDAAmDjE,EAAEzuF,eAAe,4BAA4ByuF,EAAEkE,uBAAuB,CAACvwB,QAAQ,OAAO,IAAI8xB,EAAG,GAAG,SAAStF,EAAE/rF,EAAEC,GAAG,IAAI,IAAIrE,EAAiB,EAAfoE,EAAEquF,aAAezyF,GAAGqE,EAAErE,IAAIoE,EAAEpE,GAAGoE,EAAEouF,eAAepuF,EAAEquF,aAAazyF,EAAE,EAC1L,IAAI,IAAIowF,EAAE,IAAImrD,YAAY,IAAIhrD,EAAE,EAAE,GAAGA,EAAEA,IAAIH,EAAEG,GAAGA,EAAE,EAAEH,EAAE,IAAI,EAC/N,IAAIsE,EAAG,8VAA8VC,EAAGv0F,OAAOkB,UAAUC,eAAeqzF,EAAG,GAAGG,EAAG,GACjZ,SAASE,EAAG7wF,GAAG,QAAGuwF,EAAG90F,KAAKk1F,EAAG3wF,KAAeuwF,EAAG90F,KAAK+0F,EAAGxwF,KAAeswF,EAAGjvF,KAAKrB,GAAU2wF,EAAG3wF,IAAG,GAAGwwF,EAAGxwF,IAAG,GAAS,IAChH,SAASgxF,EAAGhxF,EAAEC,EAAErE,EAAED,GAAG,GAAG,MAAOsE,GADoF,SAAYD,EAAEC,EAAErE,EAAED,GAAG,GAAG,OAAOC,GAAG,IAAIA,EAAE4K,KAAK,OAAM,EAAG,cAAcvG,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGtE,IAAc,OAAOC,GAASA,EAAEk/F,gBAAmD,WAAnC96F,EAAEA,EAAEsnD,cAAcnmD,MAAM,EAAE,KAAsB,UAAUnB,GAAE,QAAQ,OAAM,GACnT+wF,CAAG/wF,EAAEC,EAAErE,EAAED,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOC,EAAE,OAAOA,EAAE4K,MAAM,KAAK,EAAE,OAAOvG,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO8vB,MAAM9vB,GAAG,KAAK,EAAE,OAAO8vB,MAAM9vB,IAAI,EAAEA,EAAE,OAAM,EAAG,SAASosF,EAAErsF,EAAEC,EAAErE,EAAED,EAAEwE,GAAGrC,KAAKg9F,gBAAgB,IAAI76F,GAAG,IAAIA,GAAG,IAAIA,EAAEnC,KAAKihB,cAAcpjB,EAAEmC,KAAKi9F,mBAAmB56F,EAAErC,KAAKk9F,gBAAgBp/F,EAAEkC,KAAKm9F,aAAaj7F,EAAElC,KAAK0I,KAAKvG,EAAE,IAAIqsF,EAAE,GACnY,uIAAuIz+E,MAAM,KAAKxK,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeqD,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAE,GAAGssF,EAAErsF,GAAG,IAAIosF,EAAEpsF,EAAE,GAAE,EAAGD,EAAE,GAAG,QAAQ,CAAC,kBAAkB,YAAY,aAAa,SAASqD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QACnd,CAAC,cAAc,4BAA4B,YAAY,iBAAiBjkD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAE,QAAQ,gMAAgM6N,MAAM,KAAKxK,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAAQ,CAAC,UAAU,WAAW,QAAQ,YAAYjkD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAE,QACnd,CAAC,UAAU,YAAYqD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,OAAO,OAAO,OAAO,QAAQqD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAE,QAAQ,CAAC,UAAU,SAASqD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAAQ,IAAIilC,EAAE,gBAAgB,SAAS7M,EAAE1/E,GAAG,OAAOA,EAAE,GAAGwQ,cACvR,0jCAA0jC3C,MAAM,KAAKxK,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQgsF,EACzmC7M,GAAG4M,EAAErsF,GAAG,IAAIosF,EAAEpsF,EAAE,GAAE,EAAGD,EAAE,QAAQ,sFAAsF6N,MAAM,KAAKxK,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQgsF,EAAE7M,GAAG4M,EAAErsF,GAAG,IAAIosF,EAAEpsF,EAAE,GAAE,EAAGD,EAAE,kCAAkC,CAAC,WAAW,WAAW,aAAaqD,QAAQ,SAASrD,GAAG,IAAIC,EAAED,EAAEO,QAAQgsF,EAAE7M,GAAG4M,EAAErsF,GAAG,IAAIosF,EAAEpsF,EAAE,GAAE,EAAGD,EAAE,0CAA0C,CAAC,WAAW,eAAeqD,QAAQ,SAASrD,GAAGssF,EAAEtsF,GAAG,IAAIqsF,EAAErsF,EAAE,GAAE,EAAGA,EAAEsnD,cAAc,QAAQ,IAAI4pC,EAAG,UAC1c,SAASxE,EAAE1sF,GAAG,GAAG,kBAAmBA,GAAG,iBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIC,EAAEixF,EAAGjI,KAAKjpF,GAAG,GAAGC,EAAE,CAAC,IAAStE,EAALC,EAAE,GAAKuE,EAAE,EAAE,IAAIxE,EAAEsE,EAAE8wB,MAAMp1B,EAAEqE,EAAErC,OAAOhC,IAAI,CAAC,OAAOqE,EAAEy7D,WAAW9/D,IAAI,KAAK,GAAGsE,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAASE,IAAIxE,IAAIC,GAAGoE,EAAEgsG,UAAU7rG,EAAExE,IAAIwE,EAAExE,EAAE,EAAEC,GAAGqE,EAAED,EAAEG,IAAIxE,EAAEC,EAAEoE,EAAEgsG,UAAU7rG,EAAExE,GAAGC,EAAE,OAAOoE,EAAE,IAAI6sF,EAAE,KAAK7K,EAAE,KAAK8K,EAAE,KAAKC,GAAE,EAAGI,GAAE,EAAGC,EAAE,KAAKF,EAAE,EAAE,SAASO,IAA6B,OAAzB,OAAOZ,GAAEzwF,EAAE,OAAqBywF,EAC3d,SAAShvC,IAAmB,OAAd,EAAEqvC,GAAG9wF,EAAE,OAAa,CAACmzG,cAAc,KAAKgG,MAAM,KAAKthE,KAAK,MAAM,SAAS05C,IAAoG,OAAhG,OAAOb,EAAE,OAAO9K,GAAG+K,GAAE,EAAG/K,EAAE8K,EAAEjvC,MAAOkvC,GAAE,EAAGD,EAAE9K,GAAG,OAAO8K,EAAE74C,MAAM84C,GAAE,EAAGD,EAAEA,EAAE74C,KAAK4J,MAAOkvC,GAAE,EAAGD,EAAEA,EAAE74C,MAAa64C,EAAE,SAASqE,EAAGnxF,EAAEC,EAAErE,EAAED,GAAG,KAAKwxF,GAAGA,GAAE,EAAGD,GAAG,EAAEJ,EAAE,KAAKlxF,EAAEoE,EAAEC,EAAEtE,GAAyB,OAAtBqmF,EAAE6K,EAAE,KAAKK,EAAE,EAAEJ,EAAEM,EAAE,KAAYxxF,EAAE,SAASw1F,EAAGpxF,EAAEC,GAAG,MAAM,mBAAoBA,EAAEA,EAAED,GAAGC,EAC1U,SAASqxF,EAAGtxF,EAAEC,EAAErE,GAAe,GAAZixF,EAAEY,IAAIX,EAAEa,IAAOZ,EAAE,CAAC,IAAIpxF,EAAEmxF,EAAEyoB,MAAmB,GAAbt1G,EAAEtE,EAAEk6G,SAAY,OAAOzoB,QAAe,KAAXxxF,EAAEwxF,EAAEjxF,IAAIR,IAAe,CAACyxF,EAAE52D,OAAO76B,GAAGA,EAAEmxF,EAAEyiB,cAAc,GAAG5zG,EAAEqE,EAAErE,EAAEC,EAAE+a,QAAQ/a,EAAEA,EAAEq4C,WAAW,OAAOr4C,GAAqB,OAAlBkxF,EAAEyiB,cAAc5zG,EAAQ,CAACA,EAAEsE,GAAG,MAAM,CAAC6sF,EAAEyiB,cAActvG,GAA+I,OAA5ID,EAAEA,IAAIoxF,EAAG,mBAAoBnxF,EAAEA,IAAIA,OAAE,IAASrE,EAAEA,EAAEqE,GAAGA,EAAE6sF,EAAEyiB,cAAcvvG,EAAsCA,GAApCA,EAAE8sF,EAAEyoB,MAAM,CAAC/sD,KAAK,KAAKqtD,SAAS,OAAUA,SACzV,SAAY71G,EAAEC,EAAErE,GAAwB,GAArB,GAAGsxF,GAAS9wF,EAAE,OAAU4D,IAAI6sF,EAAE,GAAGM,GAAE,EAAGntF,EAAE,CAAC2W,OAAO/a,EAAEq4C,KAAK,MAAM,OAAOm5C,IAAIA,EAAE,IAAI6lB,UAAgB,KAAXr3G,EAAEwxF,EAAEjxF,IAAI8D,IAAcmtF,EAAElT,IAAIj6E,EAAED,OAAO,CAAC,IAAIC,EAAErE,EAAE,OAAOqE,EAAEg0C,MAAMh0C,EAAEA,EAAEg0C,KAAKh0C,EAAEg0C,KAAKj0C,IADkLlD,KAAK,KAAK+vF,EAAE7sF,GAAS,CAAC8sF,EAAEyiB,cAAcvvG,GACrN,SAASwxF,KAC/L,IAAI5D,EAAE,EAAE6D,EAAG,CAACglB,YAAY,SAASz2G,GAAG,IAAIC,EAAE2tF,EAAS,OAAP7B,EAAE/rF,EAAEC,GAAUD,EAAEC,IAAI8uF,WAAW,SAAS/uF,GAAGytF,IAAI,IAAIxtF,EAAE2tF,EAAS,OAAP7B,EAAE/rF,EAAEC,GAAUD,EAAEC,IAAImvF,QAAQ,SAASpvF,EAAEC,GAAmC,GAAhC4sF,EAAEY,IAAUxtF,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA7B6sF,EAAEa,KAAoC,CAAC,IAAI/xF,EAAEkxF,EAAEyiB,cAAc,GAAG,OAAO3zG,GAAG,OAAOqE,EAAE,CAACD,EAAE,CAAC,IAAIrE,EAAEC,EAAE,GAAG,GAAG,OAAOD,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAIwE,EAAE,EAAEA,EAAExE,EAAEgC,QAAQwC,EAAEF,EAAEtC,OAAOwC,IAAI,CAAC,IAAID,EAAED,EAAEE,GAAGirF,EAAEzvF,EAAEwE,GAAG,IAAID,IAAIkrF,GAAG,IAAIlrF,GAAG,EAAEA,GAAI,EAAEkrF,KAAKlrF,GAAIA,GAAGkrF,GAAIA,GAAG,CAACzvF,GAAE,EAAG,MAAMqE,GAAGrE,GAAE,GAAI,GAAGA,EAAE,OAAOC,EAAE,IAAgC,OAA5BoE,EAAEA,IAAI8sF,EAAEyiB,cAAc,CAACvvG,EAAEC,GAAUD,GAAGqvF,WAAWiC,EAAGhC,OAAO,SAAStvF,GAAG6sF,EAAEY,IAAU,IAAIxtF,GAAV6sF,EAAEa,KAAY4hB,cACpf,OAAO,OAAOtvG,GAAGD,EAAE,CAACu/D,QAAQv/D,GAAG8sF,EAAEyiB,cAAcvvG,GAAGC,GAAGsvF,SAAS,SAASvvF,GAAG,OAAOsxF,EAAGF,EAAGpxF,IAAImvF,gBAAgB,aAAaL,YAAY,SAAS9uF,GAAG,OAAOA,GAAGivF,oBAAoBuC,EAAGxC,UAAUwC,EAAGtC,cAAcsC,GAAIO,EAAG,CAACrsB,KAAK,+BAA+BujC,OAAO,qCAAqCC,IAAI,8BAA8B,SAAShX,EAAGlyF,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCACld,IAAIoyF,GAAG,CAAC+Z,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGx8E,KAAI,EAAGy8E,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGruD,OAAM,EAAGsuD,QAAO,EAAG73D,MAAK,EAAG83D,MAAK,EAAGC,OAAM,EAAG/uG,QAAO,EAAGgvG,OAAM,EAAGC,KAAI,GAAIxa,GAAGj1F,EAAE,CAAC8uG,UAAS,GAAI9Z,IAAIpC,GAAE,CAAC8Z,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGz1F,SAAQ,EAAG01F,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAC7fC,iBAAgB,EAAGngF,YAAW,EAAGogF,WAAU,EAAGC,YAAW,EAAG1/E,SAAQ,EAAGlH,OAAM,EAAG6mF,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGhhF,aAAY,EAAGG,cAAa,EAAGkB,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGG,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAI+lE,GAAG,CAAC,SAAS,KAAK,MAAM,KAAKt2F,OAAOmC,KAAK6xF,IAAG3sF,QAAQ,SAASrD,GAAGsyF,GAAGjvF,QAAQ,SAASpD,GAAGA,EAAEA,EAAED,EAAEspD,OAAO,GAAG94C,cAAcxQ,EAAEgsG,UAAU,GAAGhc,GAAE/vF,GAAG+vF,GAAEhwF,OACvZ,IAAIuyF,GAAG,WAAWC,GAAG,OAAOvC,GAAEtF,EAAEkD,SAASrsF,QAAQkxF,GAAG9G,EAAEkE,uBAAuB6C,GAAG,CAACykD,SAAQ,EAAGC,KAAI,EAAGn6E,UAAS,GAAI01B,GAAG,8BAA8BC,GAAG,GAAGE,GAAG,GAAwH,IAAII,GAAGn3F,OAAOkB,UAAUC,eAAei2F,GAAG,CAACptF,SAAS,KAAKuiG,wBAAwB,KAAK+uC,+BAA+B,KAAKC,yBAAyB,MAAM,SAASlkD,GAAGrzF,EAAEC,QAAG,IAASD,GAAG5D,EAAE,MAAMkvF,EAAErrF,IAAI,aACtd,SAASqzF,GAAGtzF,EAAEC,EAAErE,GAAG,SAASD,EAAEA,EAAEwE,GAAG,IAAID,EAlBvC,SAAYF,EAAEC,EAAErE,GAAG,IAAID,EAAEqE,EAAEoyG,YAAY,GAAG,iBAAkBz2G,GAAG,OAAOA,EAAE,OAAOowF,EAAEpwF,EAAEC,GAAGD,EAAEC,GAAG,GAAGoE,EAAEA,EAAEouG,aAAa,CAAM,IAAI,IAAIjuG,KAAbvE,EAAE,GAAgBoE,EAAEpE,EAAEuE,GAAGF,EAAEE,GAAGF,EAAErE,OAAOqE,EAAEoxF,EAAG,OAAOpxF,EAkB1HowF,CAAGlwF,EAAEF,EAAErE,GAAGuvF,EAAE,GAAGC,GAAE,EAAG7vF,EAAE,CAACgwF,UAAU,WAAW,OAAM,GAAIC,mBAAmB,WAAW,GAAG,OAAOL,EAAE,OAAO,MAAMM,oBAAoB,SAASzrF,EAAEC,GAAGmrF,GAAE,EAAGD,EAAE,CAAClrF,IAAIyrF,gBAAgB,SAAS1rF,EAAEC,GAAG,GAAG,OAAOkrF,EAAE,OAAO,KAAKA,EAAExsF,KAAKsB,KAAKgiB,OAAE,EAAO,GAAG9hB,EAAEjD,WAAWiD,EAAEjD,UAAU+uF,kBAAkB,GAAGhqE,EAAE,IAAI9hB,EAAExE,EAAEqH,MAAM9C,EAAE3E,GAAG,mBAAoB4E,EAAEkV,yBAAyB,CAAC,IAAI7Y,EAAE2D,EAAEkV,yBAAyB5Z,KAAK,KAAKE,EAAEqH,MAAMif,EAAEvZ,OAAO,MAAMlM,IAAIylB,EAAEvZ,MAAMtL,EAAE,GAAG6kB,EAAEvZ,MAAMlM,UAAU,GAAGqwF,EAAE,GAAG5qE,EAAE9hB,EAAExE,EAAEqH,MACxf9C,EAAE3E,GAAuB,OAApB0mB,EAAEkvE,EAAGhxF,EAAExE,EAAEqH,MAAMif,EAAE/hB,KAAY,MAAM+hB,EAAEtd,OAAoB,YAAR0uF,GAAJrzF,EAAEiiB,EAAO9hB,GAAyF,GAA/E8hB,EAAEjf,MAAMrH,EAAEqH,MAAMif,EAAE6+D,QAAQ5gF,EAAE+hB,EAAE6pE,QAAQvwF,OAAY,KAAVA,EAAE0mB,EAAEvZ,SAAmBuZ,EAAEvZ,MAAMnN,EAAE,MAAS,mBAAoB0mB,EAAEywF,2BAA2B,mBAAoBzwF,EAAE0wF,mBAAmB,GAAG,mBAAoB1wF,EAAE0wF,oBAAoB,mBAAoBxyG,EAAEkV,0BAA0B4M,EAAE0wF,qBAAqB,mBAAoB1wF,EAAEywF,2BAA2B,mBAAoBvyG,EAAEkV,0BAA0B4M,EAAEywF,4BAA4BvnB,EAAExtF,OAAO,CAACpC,EAAE4vF,EAAE,IAAIzvF,EACtf0vF,EAAc,GAAZD,EAAE,KAAKC,GAAE,EAAM1vF,GAAG,IAAIH,EAAEoC,OAAOskB,EAAEvZ,MAAMnN,EAAE,OAAO,CAACiB,EAAEd,EAAEH,EAAE,GAAG0mB,EAAEvZ,MAAM,IAAIkiF,GAAE,EAAG,IAAIlvF,EAAEA,EAAE,EAAE,EAAEA,EAAEH,EAAEoC,OAAOjC,IAAI,CAAC,IAAIovF,EAAEvvF,EAAEG,GAAmD,OAAhDovF,EAAE,mBAAoBA,EAAEA,EAAErvF,KAAKwmB,EAAEzlB,EAAEb,EAAEqH,MAAM9C,GAAG4qF,KAAYF,GAAGA,GAAE,EAAGpuF,EAAEY,EAAE,GAAGZ,EAAEsuF,IAAI1tF,EAAEZ,EAAEsuF,IAAI7oE,EAAEvZ,MAAMlM,QAAQ2uF,EAAE,KAAmC,GAAjBkI,GAAbrzF,EAAEiiB,EAAEtd,SAAcxE,GAAGxE,OAAE,EAAU,mBAAoBsmB,EAAE2sF,iBAAwC,iBAAtB1uG,EAAEC,EAAEouG,mBAA8D,IAAI,IAAIthB,KAA9BtxF,EAAEsmB,EAAE2sF,kBAAiC3hB,KAAK/sF,GAAS9D,EAAE,MAAMkvF,EAAEnrF,IAAI,UAAU8sF,GAAGtxF,IAAIsE,EAAE7C,EAAE,GAAG6C,EAAEtE,IAAI,KAAKgvF,EAAE97E,eAAe7O,IAAI,CAAC,IAAIG,EAAEH,EAAEE,EAAEC,EAAEqG,KAAK,GAAG,mBAAoBtG,EAAE,MAC3fvE,EAAEwE,EAAED,GAAG,MAAM,CAACq2D,MAAMv2D,EAAE8gF,QAAQ7gF,GAC9B,IAAIszF,GAAG,WAAW,SAASvzF,EAAEC,EAAErE,GAAG,KAAKkC,gBAAgBkC,GAAG,MAAM,IAAIsN,UAAU,qCAAqCq9E,EAAE97E,eAAe5O,GAAGA,EAAEuG,OAAOuiB,EAAE9oB,EAAE,CAACA,IAAIA,EAAEA,EAAE+C,MAAMgD,SAAS/F,EAAE0qF,EAAE97E,eAAe5O,GAAG,CAACA,GAAGgwF,GAAEhwF,IAAIA,EAAEgwF,GAAEhwF,GAAGA,EAAE,CAACuG,KAAK,KAAKgxI,aAAazlD,EAAGrsB,KAAK1/D,SAAS/F,EAAEw3I,WAAW,EAAE32D,QAAQuQ,EAAG3Z,OAAO,IAAI,IAAI/7E,EAAEqwF,EAAE,GAAG,GAAG,IAAIrwF,EAAE,CAAC,IAAIwE,EAAE6rF,EAAiB9rF,EAAE,GAAjBvE,EAAEwE,EAAExC,QAAiB,OAAOuC,GAAS9D,EAAE,OAAO,IAAIgvF,EAAE,IAAI+rD,YAAYj3I,GAAyB,IAAtBkrF,EAAElR,IAAI/5E,IAAG6rF,EAAEZ,GAAI,GAAGzvF,EAAE,EAAMwE,EAAExE,EAAEwE,EAAED,EAAE,EAAEC,IAAI6rF,EAAE7rF,GAAGA,EAAE,EAAE6rF,EAAE9rF,EAAE,GAAG,OAAO8rF,EAAE,GAAGA,EAAErwF,GAAGmC,KAAK45I,SAAS/7I,EAAEmC,KAAKo8G,MAAM,CAACj6G,GAAGnC,KAAK65I,WACpf,EAAG75I,KAAK85I,mBAAmB,KAAK95I,KAAK+5I,qBAAoB,EAAG/5I,KAAKg6I,iBAAiBl8I,EAAEkC,KAAKi6I,cAAc,EAAEj6I,KAAKk6I,cAAc,EAAEl6I,KAAKm6I,aAAa,GAAGn6I,KAAKo6I,kBAAkB,GAY+C,OAZ5Cl4I,EAAE9C,UAAUkY,QAAQ,WAAW,IAAItX,KAAK65I,UAAU,CAAC75I,KAAK65I,WAAU,EAAG75I,KAAKq6I,iBAAiB,IAAIn4I,EAAElC,KAAK45I,SAAS1rD,EAAEhsF,GAAGgsF,EAAE,GAAGA,EAAE,GAAGhsF,IAAIA,EAAE9C,UAAUk7I,aAAa,SAASp4I,GAAG,IAAIC,IAAInC,KAAKk6I,aAAar8I,EAAEqE,EAAEwG,KAAK+nF,SAASpuF,EAAErC,KAAK45I,SAAS3rD,EAAEpwF,EAAEwE,GAAG,IAAID,EAAEvE,EAAEwE,GAAGrC,KAAKm6I,aAAah4I,GAAGtE,EAAEmC,KAAKo6I,kBAAkBj4I,GAAGC,EAAEvE,EAAEwE,GAAGH,EAAEgD,MAAMzG,OAAOyD,EAAE9C,UAAUm7I,YACrf,WAAW,IAAIr4I,EAAElC,KAAKk6I,aAAap8I,EAAEkC,KAAKm6I,aAAaj4I,GAAGrE,EAAEmC,KAAKo6I,kBAAkBl4I,GAAGlC,KAAKm6I,aAAaj4I,GAAG,KAAKlC,KAAKo6I,kBAAkBl4I,GAAG,KAAKlC,KAAKk6I,eAAep8I,EAAEkC,KAAK45I,UAAU/7I,GAAGqE,EAAE9C,UAAUi7I,eAAe,WAAW,IAAI,IAAIn4I,EAAElC,KAAKk6I,aAAa,GAAGh4I,EAAEA,IAAIlC,KAAKm6I,aAAaj4I,GAAGlC,KAAK45I,UAAU55I,KAAKo6I,kBAAkBl4I,IAAIA,EAAE9C,UAAUo7I,KAAK,SAASt4I,GAAG,GAAGlC,KAAK65I,UAAU,OAAO,KAAK,IAAI13I,EAAE2tF,EAAEA,EAAE9vF,KAAK45I,SAAS,IAAI/7I,EAAE+2F,GAAGnzB,QAAQmzB,GAAGnzB,QAAQkyB,EAAG,IAAI,IAAI,IAAItxF,EAAE,CAAC,IAAID,GAAE,EAAGC,EAAE,GAAGxC,OAAOqC,GAAG,CAAC,GAAG,IAAIlC,KAAKo8G,MAAMv8G,OAAO,CAACG,KAAK65I,WAC1f,EAAG,IAAIvsD,EAAEttF,KAAK45I,SAAS1rD,EAAEZ,GAAGY,EAAE,GAAGA,EAAE,GAAGZ,EAAE,MAAM,IAAID,EAAErtF,KAAKo8G,MAAMp8G,KAAKo8G,MAAMv8G,OAAO,GAAG,GAAGuC,GAAGirF,EAAEssD,YAAYtsD,EAAEnlF,SAASrI,OAAO,CAAC,IAAIguF,EAAER,EAAEzT,OAA8D,GAAvD,KAAKiU,IAAI7tF,KAAK+5I,qBAAoB,GAAI/5I,KAAKo8G,MAAMtgC,MAAS,WAAWuR,EAAE3kF,KAAK1I,KAAK85I,mBAAmB,UAAU,GAAG,MAAMzsD,EAAE3kF,MAAM,MAAM2kF,EAAE3kF,KAAKA,MAAM2kF,EAAE3kF,KAAKA,KAAKmmF,WAAWjjE,EAAE5rB,KAAKu6I,YAAYltD,EAAE3kF,WAAW,GAAG2kF,EAAE3kF,OAAOykF,EAAE,CAACntF,KAAKi6I,gBAAgB,IAAI7sD,EAAE/qF,EAAEy5E,MAAM,GAAG15E,EAAE,CAACA,GAAE,EAAG,IAAInD,EAAEouF,EAAEotD,cAAcx7I,GAASX,EAAE,OAAO0B,KAAKo8G,MAAMv7G,KAAK5B,GAAG,SAAcoD,EAAErC,KAAKi6I,gBAAgB7sD,EAAE/qF,EAAErC,KAAKi6I,gBACzfpsD,MAAM,CAAC,IAAIpwF,EAAE4vF,EAAEnlF,SAASmlF,EAAEssD,cAAcx1H,EAAE,GAAG,IAAIA,GAAGnkB,KAAK6G,OAAOpJ,EAAE4vF,EAAErK,QAAQqK,EAAEqsD,cAAc,MAAMh7I,GAAG,MAAMA,EAAY2D,EAAExC,QAAQG,KAAKi6I,eAAe53I,EAAExB,KAAK,IAAIwB,EAAErC,KAAKi6I,gBAAgB91H,GAAG,OAAO9hB,EAAE,GAFgP,QAErOuyF,GAAGnzB,QAAQ5jE,EAAEiyF,EAAE3tF,IAAID,EAAE9C,UAAUyH,OAAO,SAAS3E,EAAEpE,EAAED,GAAG,GAAG,iBAAkBqE,GAAG,iBAAkBA,EAAU,MAAG,MAAVrE,EAAE,GAAGqE,GAAkB,GAAMlC,KAAKg6I,iBAAwBprD,EAAE/wF,GAAMmC,KAAK+5I,oBAA0B,iBAAiBnrD,EAAE/wF,IAAGmC,KAAK+5I,qBAAoB,EAAUnrD,EAAE/wF,IAC7c,GADweqE,GAAxBpE,EAAE03F,GAAGtzF,EAAEpE,EAAEkC,KAAK45I,WAAcnhF,MAAM36D,EAAEA,EAAEklF,QACnf,OAAO9gF,IAAG,IAAKA,EAAE,MAAM,GAAG,IAAI2qF,EAAE97E,eAAe7O,GAAG,CAAC,GAAG,MAAMA,GAAG,MAAMA,EAAE2sF,SAAS,CAAC,IAAI1sF,EAAED,EAAE2sF,SAAS1sF,IAAI+qF,GAAG5uF,EAAE,OAAcA,EAAE,MAAM6D,EAAE4d,YAA2G,OAA/F7d,EAAEiwF,GAAEjwF,GAAGlC,KAAKo8G,MAAMv7G,KAAK,CAAC6H,KAAK,KAAKgxI,aAAa77I,EAAEqK,SAAShG,EAAEy3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,KAAW,GAAY,GAAG,iBAAZz3E,EAAED,EAAEwG,MAA4B,OAAO1I,KAAK06I,UAAUx4I,EAAEpE,EAAED,GAAG,OAAOsE,GAAG,KAAKorF,EAAG,KAAKmC,EAAG,KAAKE,EAAG,KAAK3kE,EAAE,OAAO/oB,EAAEiwF,GAAEjwF,EAAEgD,MAAMgD,UAAUlI,KAAKo8G,MAAMv7G,KAAK,CAAC6H,KAAK,KAAKgxI,aAAa77I,EAAEqK,SAAShG,EAAEy3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,KAAK,GAAG,KAAKuT,EAAE7uF,EAAE,OAAO,GAAG,iBACpe6D,GAAG,OAAOA,EAAE,OAAOA,EAAE0sF,UAAU,KAAKuD,EAAGrD,EAAE,GAAG,IAAI3sF,EAAED,EAAE0E,OAAO3E,EAAEgD,MAAMhD,EAAEiQ,KAAmI,OAA9H/P,EAAEixF,EAAGlxF,EAAE0E,OAAO3E,EAAEgD,MAAM9C,EAAEF,EAAEiQ,KAAK/P,EAAE+vF,GAAE/vF,GAAGpC,KAAKo8G,MAAMv7G,KAAK,CAAC6H,KAAK,KAAKgxI,aAAa77I,EAAEqK,SAAS9F,EAAEu3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,KAAW,GAAG,KAAKyY,EAAG,OAAOnwF,EAAE,CAAC2qF,EAAE/pF,cAAcX,EAAEuG,KAAKpJ,EAAE,CAAC6S,IAAIjQ,EAAEiQ,KAAKjQ,EAAEgD,SAASlF,KAAKo8G,MAAMv7G,KAAK,CAAC6H,KAAK,KAAKgxI,aAAa77I,EAAEqK,SAAShG,EAAEy3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,KAAK,GAAG,KAAKhuD,EAAE,OAA6B/tB,EAAE,CAAC6K,KAAKxG,EAAEw3I,aAAa77I,EAAEqK,SAA/C/F,EAAEgwF,GAAEjwF,EAAEgD,MAAMgD,UAA8CyxI,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,IAAI55E,KAAKs6I,aAAap4I,GAAGlC,KAAKo8G,MAAMv7G,KAAKhD,GACpgB,GAAG,KAAK4xF,EAAGttF,EAAED,EAAEwG,KAAKtG,EAAEF,EAAEgD,MAAM,IAAIooF,EAAEttF,KAAK45I,SAA2H,OAAlH3rD,EAAE9rF,EAAEmrF,GAAGnrF,EAAEgwF,GAAE/vF,EAAE8F,SAAS/F,EAAEmrF,KAAKttF,KAAKo8G,MAAMv7G,KAAK,CAAC6H,KAAKxG,EAAEw3I,aAAa77I,EAAEqK,SAAS/F,EAAEw3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO,KAAW,GAAG,KAAK0Y,EAAGh0F,EAAE,OAAOA,EAAE,MAAM,MAAM6D,EAAEA,SAASA,EAAE,KAAKD,EAAE9C,UAAUs7I,UAAU,SAASx4I,EAAEpE,EAAED,GAAG,IAAIsE,EAAED,EAAEwG,KAAK8gD,cAAc3rD,IAAIo2F,EAAGrsB,MAAMwsB,EAAGjyF,GAAG4yF,GAAG11F,eAAe8C,KAAK2yF,GAAGvxF,KAAKpB,IAAU7D,EAAE,KAAK6D,GAAG4yF,GAAG5yF,IAAG,GAAI,IAAIC,EAAEF,EAAEgD,MAAM,GAAG,UAAU/C,EAAEC,EAAE9C,EAAE,CAACoJ,UAAK,GAAQtG,EAAE,CAAC07F,oBAAe,EAAOC,kBAAa,EAAOt/F,MAAM,MAAM2D,EAAE3D,MAAM2D,EAAE3D,MAAM2D,EAAE27F,aACzetkF,QAAQ,MAAMrX,EAAEqX,QAAQrX,EAAEqX,QAAQrX,EAAE07F,sBAAsB,GAAG,aAAa37F,EAAE,CAAC,IAAImrF,EAAElrF,EAAE3D,MAAM,GAAG,MAAM6uF,EAAE,CAACA,EAAElrF,EAAE27F,aAAa,IAAI1Q,EAAEjrF,EAAE8F,SAAS,MAAMmlF,IAAI,MAAMC,GAAEhvF,EAAE,MAAawC,MAAMC,QAAQssF,KAAK,GAAGA,EAAExtF,QAAcvB,EAAE,MAAM+uF,EAAEA,EAAE,IAAIC,EAAE,GAAGD,GAAG,MAAMC,IAAIA,EAAE,IAAIlrF,EAAE9C,EAAE,GAAG8C,EAAE,CAAC3D,WAAM,EAAOyJ,SAAS,GAAGolF,SAAS,GAAG,WAAWnrF,EAAEnC,KAAK85I,mBAAmB,MAAM13I,EAAE3D,MAAM2D,EAAE3D,MAAM2D,EAAE27F,aAAa37F,EAAE9C,EAAE,GAAG8C,EAAE,CAAC3D,WAAM,SAAc,GAAG,WAAW0D,EAAE,CAACkrF,EAAErtF,KAAK85I,mBAAmB,IAAIjsD,EAbjS,SAAY3rF,GAAG,GAAG,MAASA,EAAY,OAAOA,EAAE,IAAIC,EAAE,GAAsD,OAAnD0qF,EAAEkD,SAASxqF,QAAQrD,EAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,KAAYC,EAagLgzF,CAAG/yF,EAAE8F,UAAU,GAAG,MAAMmlF,EAAE,CAAC,IAAID,EAAE,MAAMhrF,EAAE3D,MAAM2D,EAAE3D,MACjf,GAAGovF,EAAO,GAALP,GAAE,EAAMxsF,MAAMC,QAAQssF,IAAG,IAAI,IAAIpuF,EAAE,EAAEA,EAAEouF,EAAExtF,OAAOZ,IAAK,GAAG,GAAGouF,EAAEpuF,KAAKmuF,EAAE,CAACE,GAAE,EAAG,YAAYA,EAAE,GAAGD,IAAID,EAAEhrF,EAAE9C,EAAE,CAACgf,cAAS,EAAOpW,cAAS,GAAQ9F,EAAE,CAACkc,SAASgvE,EAAEplF,SAAS2lF,KAC9H,IAAIriE,KADkI8hE,EAAElrF,KAAEmyF,GAAGpyF,KAAK,MAAMmrF,EAAEplF,UAAU,MAAMolF,EAAEmd,0BAAwBnsG,EAAE,MAAM6D,EAAE,IAAY,MAAMmrF,EAAEmd,0BAA0B,MAAMnd,EAAEplF,UAAS5J,EAAE,MAAa,iBAAkBgvF,EAAEmd,yBAAyB,WAAWnd,EAAEmd,yBAA+BnsG,EAAE,OAAO,MAAMgvF,EAAEjpF,OAAO,iBAAkBipF,EAAEjpF,OAAM/F,EAAE,KAAK,KAAWgvF,EAAElrF,EAAEirF,EAAErtF,KAAKg6I,iBACzensD,EAAE,IAAI7tF,KAAKo8G,MAAMv8G,OAAOutF,EAAE,IAAIlrF,EAAEwG,KAAc4kF,EAAE,GAAG+H,GAAG13F,KAAK2vF,EAAE9hE,GAAG,CAAC,IAAI/tB,EAAE6vF,EAAE9hE,GAAG,GAAG,MAAM/tB,EAAE,CAAC,GAAG,UAAU+tB,EAAE,CAACvsB,OAAE,EAAO,IAAIklB,EAAE,GAAGzlB,EAAE,GAAG,IAAIO,KAAKxB,EAAE,GAAGA,EAAE4B,eAAeJ,GAAG,CAAC,IAAIrB,EAAE,IAAIqB,EAAEqB,QAAQ,MAAMwsF,EAAErvF,EAAEwB,GAAG,GAAG,MAAM6tF,EAAE,CAAC,IAAIE,EAAE/tF,EAAE,GAAGg2F,GAAG51F,eAAe2tF,GAAGA,EAAEiI,GAAGjI,OAAO,CAAC,IAAImC,EAAEnC,EAAEvqF,QAAQgyF,GAAG,OAAOjrC,cAAc/mD,QAAQiyF,GAAG,QAAQ1H,EAAEiI,GAAGjI,GAAGmC,EAAEhrE,GAAGzlB,EAAEsuF,EAAE,IAAItuF,EAAEO,EAA2HklB,GAAzHvmB,EAAE,MAAMkvF,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGlvF,GAAG,iBAAkBkvF,GAAG,IAAIA,GAAGoF,GAAE7yF,eAAeX,IAAIwzF,GAAExzF,IAAI,GAAGouF,GAAGtgC,OAAOsgC,EAAE,KAAUpuF,EAAE,KAAKjB,EAAE0mB,GAAG,KAAKllB,EAAE,KAAKkD,EAAE,GAAGvE,EAAEuE,EAAE2qF,EAAEQ,GAAG,IACpf1vF,EAAE0C,QAAQ,KAAK1C,EAAE,iBAAkBkvF,EAAE3+E,QAAQ,OAAOvQ,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgBA,GAAE,EAAG,MAAMuE,EAAE,QAAQvE,GAAE,EAAMA,EAAE03F,GAAGj2F,eAAemsB,KAASvsB,EAAE8zF,EAAN9zF,EAAEusB,IAAW,MAAM/tB,EAAEwB,EAAE,KAAS2vF,EAAEnxF,GAAG,IAAK,KAASG,EAAE4tB,EAAEvsB,EAAExB,EAAEA,EAAE+wF,EAAEnvF,eAAezB,GAAG4wF,EAAE5wF,GAAG,MAAQkvF,EAAE,UAAUlvF,KAAEkvF,EAAE,OAAOrvF,EAAE,IAAIA,EAAEiL,KAAO,EAAE9K,EAAEiC,SAAS,MAAMjC,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,KAASkvF,GAAGoG,EAAGt1F,EAAEqB,EAAExB,GAAE,GAAIwB,EAAE,GAAG,OACjfxB,GAAGG,EAAEH,EAAEwjB,cAAuBhiB,EAAE,KAAXxB,EAAEA,EAAEiL,OAAc,IAAIjL,IAAG,IAAKwB,EAAErB,EAAE,MAAMA,EAAE,KAASgxF,EAAE3vF,GAAG,KAAMA,EAAE8zF,EAAGn1F,GAAGA,EAAE,KAASgxF,EAAE3vF,GAAG,IAAK,IAAGA,IAAImuF,GAAG,IAAInuF,IAAIouF,GAAGQ,IAAIT,GAAG,sBAAsB,IAAI5hE,EAAE4hE,EAAEE,EAAE,GAAGgH,GAAGj1F,eAAe8C,GAAGqpB,GAAG,MAAMA,GAAG,IAAI8hE,EAAE,KAAKprF,EAAEwG,KAAK,KAAKxG,EAAE,CAA6B,GAAG,OAA/BmrF,EAAEjrF,EAAEqoG,0BAAoC,GAAG,MAAMpd,EAAEkiB,OAAO,CAACliB,EAAEA,EAAEkiB,OAAO,MAAMrtG,QAAQ,GAAgB,iBAAbmrF,EAAEjrF,EAAE8F,WAA8B,iBAAkBmlF,EAAE,CAACA,EAAEuB,EAAEvB,GAAG,MAAMnrF,EAAEmrF,EAAE,KAC1L,OAD+L,MAAMA,GAAGjrF,EAAE,GAAGyyF,GAAG1yF,IAAI,OAAOkrF,EAAE7hC,OAAO,KAAKhgC,GAAG,MAAMA,GAAG6hE,GAAGjrF,EAAE+vF,GAAE/vF,EAAE8F,UAAUhG,EAAEA,EAAEwG,KAAK7K,EAAE,MAAMA,GAAG,iCAC3eA,EAAEu2F,EAAGlyF,GAAG,+BAA+BrE,GAAG,kBAAkBqE,EAAE,+BAA+BrE,EAAEmC,KAAKo8G,MAAMv7G,KAAK,CAAC64I,aAAa77I,EAAE6K,KAAKvG,EAAE+F,SAAS9F,EAAEu3I,WAAW,EAAE32D,QAAQllF,EAAE87E,OAAO0T,IAAIttF,KAAK+5I,qBAAoB,EAAUvuH,GAAUtpB,EAbzN,GAa8NwzF,GAAG,CAAChmE,eAAe,SAASxtB,GAAGA,EAAE,IAAIuzF,GAAGvzF,GAAE,GAAI,IAAI,OAAOA,EAAEs4I,KAAKG,KAAlB,QAAoCz4I,EAAEoV,YAAYsjI,qBAAqB,SAAS14I,GAAGA,EAAE,IAAIuzF,GAAGvzF,GAAE,GAAI,IAAI,OAAOA,EAAEs4I,KAAKG,KAAlB,QAAoCz4I,EAAEoV,YAAYujI,mBAAmB,WAAWv8I,EAAE,QAAQw8I,yBAAyB,WAAWx8I,EAAE,QACrfyK,QAAQ,UAAUgtF,GAAG,CAAC70F,QAAQw0F,IAAIM,GAAGD,IAAIL,IAAIK,GAAGx4F,EAAOD,QAAQ04F,GAAG90F,SAAS80F,iCCjD3E,IACQ3gF,EADJC,EAAatV,MAAQA,KAAKsV,YACtBD,EAAgB,SAAUvX,EAAGqE,GAI7B,OAHAkT,EAAgBnX,OAAOqX,gBAClB,CAAE9T,UAAW,cAAgBX,OAAS,SAAUhD,EAAGqE,GAAKrE,EAAE2D,UAAYU,IACvE,SAAUrE,EAAGqE,GAAK,IAAK,IAAI7C,KAAK6C,EAAOA,EAAE9C,eAAeC,KAAIxB,EAAEwB,GAAK6C,EAAE7C,MACpDxB,EAAGqE,IAErB,SAAUrE,EAAGqE,GAEhB,SAASqT,IAAOxV,KAAKwB,YAAc1D,EADnCuX,EAAcvX,EAAGqE,GAEjBrE,EAAEsB,UAAkB,OAAN+C,EAAajE,OAAOY,OAAOqD,IAAMqT,EAAGpW,UAAY+C,EAAE/C,UAAW,IAAIoW,KAGnFC,EAAYzV,MAAQA,KAAKyV,UAAa,WAStC,OARAA,EAAWvX,OAAOwB,QAAU,SAAShB,GACjC,IAAK,IAAIa,EAAG/B,EAAI,EAAGyB,EAAIW,UAAUC,OAAQrC,EAAIyB,EAAGzB,IAE5C,IAAK,IAAI8B,KADTC,EAAIK,UAAUpC,GACOU,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KACzDZ,EAAEY,GAAKC,EAAED,IAEjB,OAAOZ,IAEKqB,MAAMC,KAAMJ,YAEhCtC,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBkW,EAAWlW,EAAQ,GACnBmW,EAA0BnW,EAAQ,IAClCoW,EAAgBpW,EAAQ,IACxB+O,EAAU/O,EAAQ,IAElBqW,EAAYrW,EAAQ,IACpBsW,EAA2B,SAAUC,GAErC,SAASD,IACL,IAAIE,EAAmB,OAAXD,GAAmBA,EAAOhW,MAAMC,KAAMJ,YAAcI,KAgBhE,OAfAgW,EAAMpL,MAAQ,CACV2I,KAAM,IAEVyC,EAAM7D,IAAM,KACZ6D,EAAMC,UAAY,KAClBD,EAAME,OAAS,eAAgB,IAAIpL,KAAS,IAAMqL,KAAKC,MAAsB,QAAhBD,KAAKE,UAClEL,EAAMM,MAAQ,KACdN,EAAMO,mBAAqB,WAElBP,EAAMC,YACPD,EAAMC,UAAYN,EAAwBa,cAAcR,EAAM9Q,cACvD8Q,EAAMC,UAAN,YACAD,EAAMC,UAAN,UAGRD,EAyCX,OA3DAV,EAAUQ,EAAWC,GAoBrBD,EAAU1W,UAAUqX,kBAAoB,WACpC,IAAIC,EAAShB,EAASiB,YAAY3W,KAAKmS,KACnCyE,EAAO5W,KACP6W,EAAK7W,KAAKkF,MAAO4R,EAAUD,EAAGC,QAASvD,EAAOsD,EAAGtD,KAAM1L,EAAUgP,EAAGhP,QACpEkP,EAAcnB,EAAcoB,eAAehX,KAAKkF,OACpD,IAAI2Q,EAAUa,EAAQjB,EAAS,CAAEqB,QAASA,GAAWC,EAAa,CAAEE,OAAQ,aACxEC,cAAe,WACXN,EAAKN,MAAQtW,KACb4W,EAAK1R,MAAMgS,eAAgBN,EAAK1R,MAAMgS,iBAE1CC,WAAY,WACRP,EAAK1R,MAAMiS,YAAaP,EAAK1R,MAAMiS,eAClCtP,EAAS,CAAE0L,KAAMA,KAGtBA,GAAQA,EAAK1T,OAAS,GACtBG,KAAKoX,SAAS,CAAE7D,KAAMA,KAG9BuC,EAAU1W,UAAUiY,qBAAuB,WACvCrX,KAAKsW,MAAMgB,WAGfxB,EAAU1W,UAAUo1G,0BAA4B,SAAUtvG,GACtD,IAAI8Q,EAAQhW,KACPuO,EAAQpI,YAAYnG,KAAK4K,MAAM2I,KAAMrO,EAAMqO,OAE5CvT,KAAKoX,SAAS,CAAE7D,KAAMrO,EAAMqO,MAAQ,WAChCyC,EAAMM,MAAMoB,QAAQ1B,EAAMpL,MAAM2I,SAI5CuC,EAAU1W,UAAUyH,OAAS,WACzB,IAAImP,EAAQhW,KAEZA,KAAKuW,qBACL,IAAI9B,EAAYzU,KAAKkF,MAAMuP,UAC3B,OAAO5O,EAAM/C,cAAc,MAAO2S,EAAS,CAAEtD,IAAK,SAAUA,GAAO,OAAQ6D,EAAM7D,IAAMA,GAASwF,gBAAiB3X,KAAKkW,QAAUlW,KAAKiW,UAAW,CAAExB,UAAWA,MAE1JqB,EA5DoB,CA6D7BjQ,EAAM+R,WACRta,EAAO,QAAcwY,gCC9FrB,IACQT,EAaJwB,EAdAvB,EAAatV,MAAQA,KAAKsV,YACtBD,EAAgB,SAAUvX,EAAGqE,GAI7B,OAHAkT,EAAgBnX,OAAOqX,gBAClB,CAAE9T,UAAW,cAAgBX,OAAS,SAAUhD,EAAGqE,GAAKrE,EAAE2D,UAAYU,IACvE,SAAUrE,EAAGqE,GAAK,IAAK,IAAI7C,KAAK6C,EAAOA,EAAE9C,eAAeC,KAAIxB,EAAEwB,GAAK6C,EAAE7C,MACpDxB,EAAGqE,IAErB,SAAUrE,EAAGqE,GAEhB,SAASqT,IAAOxV,KAAKwB,YAAc1D,EADnCuX,EAAcvX,EAAGqE,GAEjBrE,EAAEsB,UAAkB,OAAN+C,EAAajE,OAAOY,OAAOqD,IAAMqT,EAAGpW,UAAY+C,EAAE/C,UAAW,IAAIoW,KAGvFlY,EAAQsB,YAAa,EAErB,IAAIiH,EAAQrG,EAAQ,GAChB4O,EAAmB5O,EAAQ,IAC3Bu7I,EAAev7I,EAAQ,IACvBw7I,EAAsBx7I,EAAQ,IAC9By7I,EAAwBz7I,EAAQ,IAMpC,IAAIsX,EAAU,CACV,CAAEvO,MAAO,OAAQypB,MAAO,OAAQxtB,MAAO,KACvC,CAAE+D,MAAO,MAAOypB,MAAO,MAAO+M,MAAO,OAAQS,UAAW,YACxD,CAAEj3B,MAAO,kBAAmBypB,MAAO,SACnC,CAAEzpB,MAAO,gBAAiBypB,MAAO,OACjC,CAAEzpB,MAAO,SAAUypB,MAAO,SAAU+M,MAAO,SAAUS,UAAW,QAChE,CAAEj3B,MAAO,UAAWypB,MAAO,SAAU+M,MAAO,SAAUS,UAAW,aACjE,CAAEj3B,MAAO,SAAUypB,MAAO,SAAU+M,MAAO,SAAUS,UAZ3ChgC,EAAQ,IAYsD4G,eAAeP,EAAM/C,cAXjG,SAAsBoC,GAClB,IAAIs9E,EAAWt9E,EAAMoB,KAAKmtC,MAAM5hB,IAAIte,KACpC,OAAO1N,EAAM/C,cAAc,SAAU,CAAE6iB,QAAS,WAAc,OAAOu1H,MAAM14D,EAASzkF,QAAY,SASyB,SAEzHwV,EAAO,CACP,CAAEsE,GAAI,EAAG9Z,KAAM,UAAWo9I,IAAK,KAAM5uH,MAAO,MAAO6uH,IAAK,aAAcC,OAAQ,EAAGC,QAAQ,EAAMC,KAAM,CAAC,MAAO,QAC7G,CAAE1jI,GAAI,EAAG9Z,KAAM,WAAYo9I,IAAK,IAAK5uH,MAAO,QAAS6uH,IAAK,aAAcC,OAAQ,EAAGC,QAAQ,EAAMC,KAAM,CAAC,QACxG,CAAE1jI,GAAI,EAAG9Z,KAAM,qBAAsBo9I,IAAK,KAAM5uH,MAAO,QAAS6uH,IAAK,aAAcC,OAAQ,EAAGC,QAAQ,GACtG,CAAEzjI,GAAI,EAAG9Z,KAAM,kBAAmBo9I,IAAK,MAAO5uH,MAAO,MAAO6uH,IAAK,aAAcC,OAAQ,IAAKC,QAAQ,GACpG,CAAEzjI,GAAI,EAAG9Z,KAAM,oBAAqBo9I,IAAK,KAAM5uH,MAAO,SAAU6uH,IAAK,aAAcC,OAAQ,EAAGC,QAAQ,GACtG,CACIzjI,GAAI,EACJ9Z,KAAM,SACNo9I,IAAK,KACL5uH,MAAO,QACP6uH,IAAK,aACLC,OAAQ,EACRC,QAAQ,EACRC,KAAM,CAAC,MAAO,SAElB,CAAE1jI,GAAI,EAAG9Z,KAAM,SAAUo9I,IAAK,KAAM5uH,MAAO,SAAU6uH,IAAK,aAAcC,OAAQ,EAAGC,QAAQ,EAAMC,KAAM,CAAC,SAGxGC,IAAgB3kI,EAAK,IAAO,IAAM,SAAUA,EAAG4kI,IAAM,MAAO5kI,EAAG6kI,MAAQ,QAAS7kI,EAAG8kI,OAAS,SAAU9kI,GAEtG+kI,EAAkB,CAClB,CAAErzI,MAAO,OAAQypB,MAAO,OAAQxtB,MAAO,IAAK+5B,OAAQ,QAASrB,aAAc,SAC3E,CAAE30B,MAAO,MAAOypB,MAAO,MAAO+M,MAAO,OAAQS,UAAW,WAAYjB,OAAQ,YAC5E,CACIh2B,MAAO,kBACPypB,MAAO,QACPuM,OAAQ,SACR8/B,aAAc,CAAEuD,YAAY,EAAMJ,iBAAiB,EAAM92C,OAAQ8wH,GACjEt+G,aAAc,SACdmoC,mBAAoB,CAAE36C,OAAQ8wH,IAElC,CAAEjzI,MAAO,gBAAiBypB,MAAO,MAAOuM,OAAQw8G,EAAY,QAAa18E,aAAc,CAAEp8D,OAAQ,eACjG,CACIsG,MAAO,OACPypB,MAAO,OACPuM,OAAQy8G,EAAmB,QAC3B38E,aAAc,CAAE3zC,OAjBP,CAAC,CAAE7S,GAAI,MAAO9Z,KAAM,OAAS,CAAE8Z,GAAI,MAAO9Z,KAAM,OAAS,CAAE8Z,GAAI,OAAQ9Z,KAAM,UAkBtFyhC,UAAWy7G,EAAqB,QAChC10I,gBAAiB,CAAElC,MAAO,SAE9B,CAAEkE,MAAO,UAAWypB,MAAO,SAAU+M,MAAO,SAAUS,UAAW,YAAajB,QAAQ,IAEtFzoB,EAA2B,SAAUC,GAErC,SAASD,IACL,IAAIE,EAAmB,OAAXD,GAAmBA,EAAOhW,MAAMC,KAAMJ,YAAcI,KAehE,OAdAgW,EAAMpL,MAAQ,CACV2I,KAAM,IAEVyC,EAAM7D,IAAM,KACZ6D,EAAM66B,SAAW,SAAUzuC,EAAGyvB,GAC1BhwB,QAAQ0L,IAAI,cAAeyI,EAAM7D,IAAImE,OACrCzU,QAAQ0L,IAAI,mCAAoCskB,EAAKzvB,IAEzD4T,EAAM0B,QAAU,WACZ1B,EAAMoB,SAAS,CAAE7D,KAAMA,KAE3ByC,EAAMuyB,UAAY,WACdvyB,EAAMoB,SAAS,CAAE7D,KAAM,MAEpByC,EAuBX,OAxCAV,EAAUQ,EAAWC,GAmBrBD,EAAU1W,UAAUyH,OAAS,WACzB,IAAImP,EAAQhW,KAKZ,OAAQ6F,EAAM/C,cAAc,MAAO,KAC/B+C,EAAM/C,cAAcsL,EAAgB,QAAa,CAAE+D,IAAK,SAAUA,GAAO,OAAQ6D,EAAM7D,IAAMA,GAAS2E,QAASA,EAASvD,KAAMA,EAAMs9B,SAAU7wC,KAAK6wC,SAAUhpC,QALnJ,CACVpD,OAAQ,IACR+2B,aAAa,GAGkKqgH,mBAAoB,wBAAyBpnI,UAAW,qBACvO5O,EAAM/C,cAAc,KAAM,KACtB,qCACA+C,EAAM/C,cAAc,SAAU,CAAE6iB,QAAS3lB,KAAK0X,SAAW,YACzD,IACA7R,EAAM/C,cAAc,SAAU,CAAE6iB,QAAS3lB,KAAKuoC,WAAa,UAC/D1iC,EAAM/C,cAAcsL,EAAgB,QAAa,CAAE0I,QAASA,EAASvD,KAAMvT,KAAK4K,MAAM2I,OACtF1N,EAAM/C,cAAc,KAAM,KAAM,kBAChC+C,EAAM/C,cAAcsL,EAAgB,QAAa,CAAE0I,QAAS8kI,EAAiBroI,KAAMA,EAAM4qB,WAAY,SAAU73B,GAAQ,OAAOzE,QAAQ0L,IAAI,aAAcjH,IAAUsgC,WAAY,SAAUk1G,GAAW,OAAOj6I,QAAQ0L,IAAI,aAAcuuI,IAAanlG,cAAe9wC,EAAM/C,cAAc,OAAQ,KAAM,YAClS+C,EAAM/C,cAAc,IAAK,KACrB+C,EAAM/C,cAAc,IAAK,CAAE0Y,KAAM,2CAA4C7b,OAAQ,UAAY,0CACrGkG,EAAM/C,cAAc,IAAK,KACrB+C,EAAM/C,cAAc,IAAK,CAAE0Y,KAAM,qCAAsC7b,OAAQ,UAAY,gCAEhGmW,EAzCoB,CA0C7BjQ,EAAM+R,WACRta,EAAO,QAAcwY,gCCxHrB,IACQT,EADJC,EAAatV,MAAQA,KAAKsV,YACtBD,EAAgB,SAAUvX,EAAGqE,GAI7B,OAHAkT,EAAgBnX,OAAOqX,gBAClB,CAAE9T,UAAW,cAAgBX,OAAS,SAAUhD,EAAGqE,GAAKrE,EAAE2D,UAAYU,IACvE,SAAUrE,EAAGqE,GAAK,IAAK,IAAI7C,KAAK6C,EAAOA,EAAE9C,eAAeC,KAAIxB,EAAEwB,GAAK6C,EAAE7C,MACpDxB,EAAGqE,IAErB,SAAUrE,EAAGqE,GAEhB,SAASqT,IAAOxV,KAAKwB,YAAc1D,EADnCuX,EAAcvX,EAAGqE,GAEjBrE,EAAEsB,UAAkB,OAAN+C,EAAajE,OAAOY,OAAOqD,IAAMqT,EAAGpW,UAAY+C,EAAE/C,UAAW,IAAIoW,KAGvFlY,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBsG,EAActG,EAAQ,GACtBu8I,EAAav8I,EAAQ,IAErBw8I,EAAW,CACXx3I,MAAO,OACPC,OAAQ,OACRue,SAAU,MACVD,WAAY,WAEZk5H,EAAwB,SAAUlmI,GAElC,SAASkmI,IACL,IAAIjmI,EAAmB,OAAXD,GAAmBA,EAAOhW,MAAMC,KAAMJ,YAAcI,KA8BhE,OA7BAgW,EAAMpL,MAAQ,CAAEnM,MAAO,IACvBuX,EAAM7D,IAAM,KACZ6D,EAAM/T,OAAS+T,EAAM9Q,MAAMm5D,aAAap8D,QAAU,aAClD+T,EAAMkmI,kBAAoB,SAAUz9I,QAClB,IAAVA,IAAoBA,EAAQuX,EAAMpL,MAAMnM,OAC5C,IAAI+I,EAAUwO,EAAM9Q,MAAMsC,QACtB6Y,EAAS5hB,EACT4hB,EAAO/f,QAAQ,KAAO,IAEtB+f,EAAS07H,EAAW95I,OAAOxD,EAAOuX,EAAM/T,SAE5CuF,EAAQ6Y,IAEZrK,EAAMgpD,SAAW,SAAUm9E,GACvB,IAAI19I,EAAQ09I,EAAGx8I,OAAOlB,MACtBuX,EAAMoB,SAAS,CAAE3Y,MAAOA,KAE5BuX,EAAMomI,WAAa,SAAUD,GACzB,IAAIr9E,EAAS9oD,EAAM9Q,MAAM45D,OACN,KAAfq9E,EAAGh9E,QACHnpD,EAAMkmI,oBAEc,KAAfC,EAAGh9E,SACRL,KAGR9oD,EAAMqmI,OAAS,WACXrmI,EAAMkmI,qBAEHlmI,EAmBX,OAnDAV,EAAU2mI,EAAQlmI,GAkClBkmI,EAAO78I,UAAUqX,kBAAoB,WACjC,IAAIT,EAAQhW,KACZA,KAAKkF,MAAMsB,WAAW,WAClB,IAAI/H,EAAQuX,EAAM9Q,MAAMoB,KAAKw5B,WAC7B9pB,EAAMoB,SAAS,CAAE3Y,MAAOA,IACxBuX,EAAM7D,IAAIitB,WAGlB68G,EAAO78I,UAAUyH,OAAS,WACtB,IAAImP,EAAQhW,KACRsG,EAAOtG,KAAKkF,MAAMoB,KAClBg2I,EAAUP,EAAW91I,MAAMK,EAAKw5B,WAAY9/B,KAAKiC,OAAQ,IAAI6I,KAAQ,CAAEyxI,sBAAsB,IAC7F99I,EAAQs9I,EAAW95I,OAAOq6I,EAtDN,cAuDxB,OAAQz2I,EAAM/C,cAAc,QAAS,CAAE4F,KAAM,OAAQyJ,IAAK,SAAU7T,GAAK,OAAQ0X,EAAM7D,IAAM7T,GAAOy/F,aAAct/F,EAE9G49I,OAAQr8I,KAAKq8I,OAAQr9E,SAAUh/D,KAAKg/D,SAAUw9E,QAASx8I,KAAKo8I,WAAY/3I,MAAO23I,KAEhFC,EApDiB,CAqD1Bp2I,EAAM+R,WAORta,EAAO,QANP,SAAmBgJ,EAAME,EAAYgB,EAASs3D,EAAQT,GAClD,IAAIjqD,EAAYvR,SAASC,cAAc,OAGvC,OAFAsR,EAAU/P,MAAMI,OAAS,OACzBqB,EAAYe,OAAOhB,EAAM/C,cAAcm5I,EAAQ,CAAE31I,KAAMA,EAAME,WAAYA,EAAYgB,QAASA,EAASs3D,OAAQA,EAAQT,aAAcA,IAAiBjqD,GAC/IA,iCClFX,IACQiB,EADJC,EAAatV,MAAQA,KAAKsV,YACtBD,EAAgB,SAAUvX,EAAGqE,GAI7B,OAHAkT,EAAgBnX,OAAOqX,gBAClB,CAAE9T,UAAW,cAAgBX,OAAS,SAAUhD,EAAGqE,GAAKrE,EAAE2D,UAAYU,IACvE,SAAUrE,EAAGqE,GAAK,IAAK,IAAI7C,KAAK6C,EAAOA,EAAE9C,eAAeC,KAAIxB,EAAEwB,GAAK6C,EAAE7C,MACpDxB,EAAGqE,IAErB,SAAUrE,EAAGqE,GAEhB,SAASqT,IAAOxV,KAAKwB,YAAc1D,EADnCuX,EAAcvX,EAAGqE,GAEjBrE,EAAEsB,UAAkB,OAAN+C,EAAajE,OAAOY,OAAOqD,IAAMqT,EAAGpW,UAAY+C,EAAE/C,UAAW,IAAIoW,KAGvFlY,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBsG,EAActG,EAAQ,GACtB+O,EAAU/O,EAAQ,IAGlBi9I,EAAYj9I,EAAQ,IAQpBy8I,EAAwB,SAAUlmI,GAElC,SAASkmI,IACL,IAAIjmI,EAAmB,OAAXD,GAAmBA,EAAOhW,MAAMC,KAAMJ,YAAcI,KAgDhE,OA/CAgW,EAAMpL,MAAQ,CAAEnM,MAAO,GAAIisB,OAAQ,GAAIgyH,WAAW,GAClD1mI,EAAM7D,IAAM,KACZ6D,EAAMkmI,kBAAoB,SAAUxxH,QACjB,IAAXA,IAAqBA,EAAS1U,EAAMpL,MAAM8f,QAC9C,IAAI7T,EAAKb,EAAM9Q,MAAOsC,EAAUqP,EAAGrP,QAAkBqP,EAAGioD,OAExDt3D,EAAQkjB,IAGZ1U,EAAM2mI,aAAe,SAAUn/I,GAE3B,IACIo/I,EADS5mI,EAAMpL,MAAM8f,OACF1b,OAAO,SAAUs4B,EAAMrU,GAAS,OAAOA,IAAUz1B,IACxEwY,EAAMoB,SAAS,CAAEsT,OAAQkyH,GAAa,WAClC5mI,EAAMkmI,kBAAkBU,MAGhC5mI,EAAM6mI,eAAiB,SAAUv1G,GAC7B,IAAI5c,EAAS1U,EAAMpL,MAAM8f,OACrB4c,EAAKvpC,OAEL2sB,EAAO7pB,KAAK,CAAEgX,GAAIyvB,EAAKvpC,KAAMA,KAAMupC,EAAKvpC,OACxCiY,EAAMoB,SAAS,CAAEsT,OAAQA,GAAU,WAC/B1U,EAAMkmI,kBAAkBxxH,OAKpC1U,EAAM8mI,WAAa,WACf,IAAIh+E,EAAS9oD,EAAM9Q,MAAM45D,OACrBnpB,EAAW3/B,EAAM7D,IAAIkuC,MAAMA,MAAM5hD,MACrC,GAAIk3C,EAAU,CAEV,IAAIjrB,EAASnc,EAAQxI,MAAMiQ,EAAMpL,MAAM8f,QACvCA,EAAO7pB,KAAK,CAAEgX,GAAI89B,EAAU53C,KAAM43C,IAElC3/B,EAAMkmI,kBAAkBxxH,QAGxBo0C,IAEJ,IAAIhuC,EAAKhrB,EAAY6Q,YAAYX,EAAM7D,KACnC2e,GAAMA,EAAGisH,cAAcA,cAAcA,gBACrCjsH,EAAGisH,cAAcA,cAAcA,cAAc14I,MAAMK,SAAW,WAI/DsR,EAuBX,OAzEAV,EAAU2mI,EAAQlmI,GAoDlBkmI,EAAO78I,UAAUqX,kBAAoB,WACjC,IAAIT,EAAQhW,KACZA,KAAKkF,MAAMsB,WAAW,WAClB,IAAIsqB,EAAKhrB,EAAY6Q,YAAYX,EAAM7D,KACvC2e,EAAGzsB,MAAMupG,OAAS,EAClB98E,EAAGisH,cAAcA,cAAcA,cAAc14I,MAAMK,SAAW,UAC9DosB,EAAGhqB,cAAc,SAASs4B,QAC1B,IAAI1U,GAAU1U,EAAM9Q,MAAMoB,KAAKw5B,YAAc,IAAIh2B,IAAI,SAAUw9B,GAC3D,MAAuB,iBAATA,EAAoB,CAAEzvB,GAAIyvB,EAAMvpC,KAAMupC,GAASA,IAEjEtxB,EAAMoB,SAAS,CAAEsT,OAAQA,OAGjCuxH,EAAO78I,UAAUyH,OAAS,WACtB,IAAImP,EAAQhW,KACRq+D,EAAer+D,KAAKkF,MAAMm5D,aAC1B3zC,EAAS1qB,KAAK4K,MAAM8f,OACpBsyH,EAAc3+E,EAAa3zC,OAC/B,OAAQ7kB,EAAM/C,cAAc,MAAO,KAC/B+C,EAAM/C,cAAc25I,EAAW,CAAEtqI,IAAK,SAAUA,GAAO,OAAQ6D,EAAM7D,IAAMA,GAASoL,YAAa,iBAAkB0/H,KAAMvyH,EAAQsyH,YAAaA,EAAaE,UAAU,EAAMC,YAAY,EAAMT,UAAW18I,KAAK4K,MAAM8xI,UAAWG,eAAgB78I,KAAK68I,eAAgBF,aAAc38I,KAAK28I,aAAcG,WAAY98I,KAAK88I,WAAYM,eAAgB,MAElVnB,EA1EiB,CA2E1Bp2I,EAAM+R,WAORta,EAAO,QANP,SAAmBgJ,EAAME,EAAYgB,EAASs3D,EAAQT,GAClD,IAAIjqD,EAAYvR,SAASC,cAAc,OAGvC,OAFAsR,EAAU/P,MAAMI,OAAS,OACzBqB,EAAYe,OAAOhB,EAAM/C,cAAcm5I,EAAQ,CAAE31I,KAAMA,EAAME,WAAYA,EAAYgB,QAASA,EAASs3D,OAAQA,EAAQT,aAAcA,IAAiBjqD,GAC/IA,iCC1GX,IAAIvO,EAAQrG,EAAQ,GAChB+oH,EAAY/oH,EAAQ,GACpB69I,EAAM79I,EAAQ,IACd89I,EAAQ99I,EAAQ,IAChB+9I,EAAc/9I,EAAQ,IAEtBg+I,EACK,GADLA,EAEG,EAFHA,EAGS,EAHTA,EAIQ,GAJRA,EAKU,GAGVC,EAAc,CAChBzzF,KAAM,aACN0zF,YAAa,aACbp/H,SAAU,uBACVq/H,YAAa,2BACbC,gBAAiB,gCACjBv8F,OAAQ,qBACRw8F,YAAa,2BACbb,YAAa,0BACbc,iBAAkB,YAClBC,mBAAoB,eAGlBtB,EAAa,SAAUuB,GACzB,SAASvB,EAAWv3I,GAClB84I,EAAWrgJ,KAAKqC,KAAMkF,GAEtBlF,KAAK4K,MAAQ,CACXs8C,MAAO,GACP+2F,SAAS,EACTC,YAAY,EACZ3qB,eAAgB,EAChB9yH,WAAYvC,OAAOwB,OAAO,GAAI+9I,EAAaz9I,KAAKkF,MAAMzE,aAGxDT,KAAKm+I,mBAAqB,CAIxBn/E,SAAU,aACVq9E,OAAQr8I,KAAK88I,WAAW99I,KAAKgB,MAC7Bo+I,QAASp+I,KAAKq+I,YAAYr/I,KAAKgB,MAC/Bs+I,QAASt+I,KAAKu+I,YAAYv/I,KAAKgB,MAC/Bw+I,UAAWx+I,KAAKy+I,cAAcz/I,KAAKgB,OAuKvC,OAnKKg+I,IAAavB,EAAUh7I,UAAYu8I,GACxCvB,EAAUr9I,UAAYlB,OAAOY,OAAQk/I,GAAcA,EAAW5+I,WAC9Dq9I,EAAUr9I,UAAUoC,YAAci7I,EAElCA,EAAUr9I,UAAUo1G,0BAA4B,SAAoCjsB,GAClFvoF,KAAKoX,SAAS,CACZ3W,WAAYvC,OAAOwB,OAAO,GAAI+9I,EAAal1D,EAAS9nF,eAIxDg8I,EAAUr9I,UAAUm/I,YAAc,SAAsBn8I,GACtD,IAAI8kD,EAAQ9kD,EAAEzC,OAAOlB,MAEjBuB,KAAKkF,MAAMw5I,mBACb1+I,KAAKkF,MAAMw5I,kBAAkBx3F,GAG/BlnD,KAAKoX,SAAS,CAAE8vC,MAAOA,KAGzBu1F,EAAUr9I,UAAUq/I,cAAgB,SAAwBr8I,GAC1D,IAAI+P,EAAMnS,KAAK4K,MACXs8C,EAAQ/0C,EAAI+0C,MACZqsE,EAAgBphH,EAAIohH,cACpBorB,EAAQ3+I,KAAKkF,MACb05I,EAAaD,EAAMC,WACnBC,EAAiBF,EAAME,gBAGvBD,EAAWt+I,QAAQ8B,EAAE+8D,UAAY,GAAK0/E,EAAev+I,QAAQ8B,EAAErD,MAAQ,MACrEmoD,GAASqsE,GAAiB,IAC5BnxH,EAAE2yC,iBAGJ/0C,KAAK8+I,mBAIH18I,EAAE+8D,UAAYq+E,GAAmC,IAAjBt2F,EAAMrnD,QAAgBG,KAAKkF,MAAM65I,gBACnE/+I,KAAKg/I,UAAUh/I,KAAKkF,MAAM+3I,KAAKp9I,OAAS,GAGtCuC,EAAE+8D,UAAYq+E,IAChBp7I,EAAE2yC,iBAGEw+E,GAAiB,EACnBvzH,KAAKoX,SAAS,CAAEm8G,cAAevzH,KAAKg9I,YAAYpyI,MAAM/C,QAAQhI,OAAS,IAEvEG,KAAKoX,SAAS,CAAEm8G,cAAeA,EAAgB,KAI/CnxH,EAAE+8D,UAAYq+E,IAChBp7I,EAAE2yC,iBAEF/0C,KAAKoX,SAAS,CAAEm8G,eAAgBA,EAAgB,GAAKvzH,KAAKg9I,YAAYpyI,MAAM/C,QAAQhI,WAIxF48I,EAAUr9I,UAAU0/I,gBAAkB,WACpC,IAAI3sI,EAAMnS,KAAK4K,MACXs8C,EAAQ/0C,EAAI+0C,MACZqsE,EAAgBphH,EAAIohH,cAExB,GAAIrsE,EAAMrnD,QAAUG,KAAKkF,MAAMk4I,eAAgB,CAE7C,IAAIlrH,EAAQlyB,KAAKg9I,YAAYpyI,MAAM/C,QAAQgoB,UAAU,SAAUovH,GAC7D,OAAwE,IAAjEA,EAAWlhJ,KAAKsjD,OAAO,IAAIwlB,OAAQ,IAAM3f,EAAQ,IAAM,QAG5Dj0B,GAA2B,IAAnBsgG,EAAuBrhG,EAAQqhG,EAEvCtgG,GAAS,EACXjzB,KAAKk/I,OAAOl/I,KAAKg9I,YAAYpyI,MAAM/C,QAAQorB,IAClCjzB,KAAKkF,MAAMg4I,UACpBl9I,KAAKk/I,OAAO,CAAEnhJ,KAAMmpD,MAK1Bu1F,EAAUr9I,UAAU+/I,YAAc,SAAsB/8I,GAClDS,SAAS27F,gBAAkBp8F,EAAEzC,QAC/BK,KAAKqgD,MAAMA,MAAMjhB,SAIrBq9G,EAAUr9I,UAAU09I,WAAa,WAC/B98I,KAAKoX,SAAS,CAAE6mI,SAAS,EAAO1qB,eAAgB,IAE5CvzH,KAAKkF,MAAM43I,YACb98I,KAAKkF,MAAM43I,aAGT98I,KAAKkF,MAAMk6I,WACbp/I,KAAK8+I,mBAITrC,EAAUr9I,UAAUi/I,YAAc,WAChCr+I,KAAKoX,SAAS,CAAE6mI,SAAS,IAErBj+I,KAAKkF,MAAMm5I,aACbr+I,KAAKkF,MAAMm5I,eAIf5B,EAAUr9I,UAAU8/I,OAAS,SAAiBvqD,GACxCA,EAAIn6E,WAIiC,mBAA9Bxa,KAAKkF,MAAMm6I,gBAAkCr/I,KAAKkF,MAAMm6I,eAAe1qD,MAIlF30F,KAAKkF,MAAM23I,eAAeloD,GAG1B30F,KAAKoX,SAAS,CACZ8vC,MAAO,GACPqsE,eAAgB,MAIpBkpB,EAAUr9I,UAAU4/I,UAAY,SAAoBxhJ,GAClDwC,KAAKkF,MAAMy3I,aAAan/I,GAEpBwC,KAAKkF,MAAMo6I,oBAA2C,KAArBt/I,KAAK4K,MAAMs8C,OAC9ClnD,KAAKoX,SAAS,CAAE8vC,MAAO,MAI3Bu1F,EAAUr9I,UAAUyH,OAAS,WAC3B,IAAI04I,EAASv/I,KAITw/I,EAAex/I,KAAKkF,MAAMu6I,cAAgBpC,EAE1CJ,EAAOj9I,KAAKkF,MAAM+3I,KAAKnzI,IAAI,SAAU6qF,EAAKn3F,GAAK,OACjDqI,EAAM/C,cAAe08I,EAAc,CACjCzgJ,IAAKvB,EAAGm3F,IAAKA,EAAKl0F,WAAY8+I,EAAO30I,MAAMnK,WAAYi/I,SAAUH,EAAOP,UAAUhgJ,KAAKugJ,EAAQ/hJ,OAG/F0gJ,EAAal+I,KAAK4K,MAAMqzI,SAAWj+I,KAAK4K,MAAMs8C,MAAMrnD,QAAUG,KAAKkF,MAAMk4I,eACzE38I,EAAa,CAACT,KAAK4K,MAAMnK,WAAWupD,MAIxC,OAFAhqD,KAAK4K,MAAMqzI,SAAWx9I,EAAWI,KAAKb,KAAK4K,MAAMnK,WAAWi9I,aAG1D73I,EAAM/C,cAAe,MAAO,CAAE2R,UAAWhU,EAAWQ,KAAK,KAAM0kB,QAAS3lB,KAAKm/I,YAAYngJ,KAAKgB,OAC5F6F,EAAM/C,cAAe,MAAO,CAAE2R,UAAWzU,KAAK4K,MAAMnK,WAAW6d,SAAUqhI,YAAa,SAAUC,gBAAiB,sBAC/G3C,GAEFp3I,EAAM/C,cAAe,MAAO,CAAE2R,UAAWzU,KAAK4K,MAAMnK,WAAW4gD,QAC7Dx7C,EAAM/C,cAAew6I,EAAOp/I,OAAOwB,OAAO,GAAIM,KAAK4K,MAAO,CAAEi1I,gBAAiB7/I,KAAKkF,MAAM26I,gBAAiB1B,mBAAoBn+I,KAAKm+I,mBAAoBhsI,IAAK,SAAUtU,GAAK0hJ,EAAOl/F,MAAQxiD,GAAKiiJ,UApBpL,oBAoB0MpD,UAAW18I,KAAKkF,MAAMw3I,UAAWS,WAAYn9I,KAAKkF,MAAMi4I,WAAYe,WAAYA,EAAY3gI,YAAavd,KAAKkF,MAAMqY,eACxU1X,EAAM/C,cAAey6I,EAAar/I,OAAOwB,OAAO,GAAIM,KAAK4K,MAAO,CAAEuH,IAAK,SAAUtU,GAAK0hJ,EAAOvC,YAAcn/I,GAAKiiJ,UArBtG,oBAqB4H5B,WAAYA,EAAYlB,YAAah9I,KAAKkF,MAAM83I,YAAa+C,kBAAmB//I,KAAKkF,MAAM66I,kBAAmBb,OAAQl/I,KAAKk/I,OAAOlgJ,KAAKgB,MAAOggJ,qBAAsBhgJ,KAAKkF,MAAM86I,2BAMtTvD,EA3LQ,CA4Lf52I,EAAM+R,WAER6kI,EAAU3qI,aAAe,CACvBmrI,KAAM,GACN1/H,YAAa,cACby/H,YAAa,GACb+C,kBAAmB,KACnBrD,WAAW,EACXS,YAAY,EACZyB,WAAY,CAACpB,EAAUA,GACvBqB,eAAgB,GAChBzB,eAAgB,EAChB4C,qBAAsB,EACtB9C,UAAU,EACV6B,gBAAgB,EAChBU,aAAc,KACdI,gBAAiB,GACjBT,WAAW,EACXE,oBAAoB,GAGtB7C,EAAU5qI,UAAY,CACpBorI,KAAM10B,EAAUL,QAAQK,EAAUrpH,QAClCqe,YAAagrG,EAAUj2G,OACvB0qI,YAAaz0B,EAAUL,QAAQK,EAAUrpH,QACzC6gJ,kBAAmBx3B,EAAU5oG,KAC7B+8H,UAAWn0B,EAAU5/B,KACrBw0D,WAAY50B,EAAU5/B,KACtBi2D,WAAYr2B,EAAUL,QAAQK,EAAU/oD,QACxCq/E,eAAgBt2B,EAAUL,QAAQK,EAAUj2G,QAC5CqqI,aAAcp0B,EAAU5oG,KAAKxO,WAC7B0rI,eAAgBt0B,EAAU5oG,KAAKxO,WAC/ButI,kBAAmBn2B,EAAU5oG,KAC7B0+H,YAAa91B,EAAU5oG,KACvBm9H,WAAYv0B,EAAU5oG,KACtB0/H,eAAgB92B,EAAU5oG,KAC1By9H,eAAgB70B,EAAU/oD,OAC1BwgF,qBAAsBz3B,EAAU/oD,OAChC/+D,WAAY8nH,EAAUrpH,OACtBg+I,SAAU30B,EAAU5/B,KACpBo2D,eAAgBx2B,EAAU5/B,KAC1B82D,aAAcl3B,EAAU3/B,UAAU,CAChC2/B,EAAU5oG,KACV4oG,EAAUxlH,UAEZ88I,gBAAiBt3B,EAAUrpH,OAC3BkgJ,UAAW72B,EAAU5/B,KACrB22D,mBAAoB/2B,EAAU5/B,MAGhCprF,EAAOD,QAAUm/I,gCCzQjB,IAAI52I,EAAQrG,EAAQ,GAEpBjC,EAAOD,QAAU,SAAU4H,GAAS,OAClCW,EAAM/C,cAAe,SAAU,CAAE4F,KAAM,SAAU+L,UAAWvP,EAAMzE,WAAWk9I,YAAap1I,MAAO,sBAAuBod,QAASzgB,EAAMw6I,UACrI75I,EAAM/C,cAAe,OAAQ,CAAE2R,UAAWvP,EAAMzE,WAAWm9I,iBAAmB14I,EAAMyvF,IAAI52F,sCCJ5F,IAAI8H,EAAQrG,EAAQ,GAEhBygJ,EAAe,CACjB37I,SAAU,WACVE,MAAO,EACPC,OAAQ,EACRsqB,WAAY,SACZrqB,SAAU,SACV26D,WAAY,OAGV6gF,EAAc,CAChB,WACA,aACA,aACA,YACA,iBAGE5C,EAAS,SAAUU,GACrB,SAASV,EAAOp4I,GACd84I,EAAWrgJ,KAAKqC,KAAMkF,GACtBlF,KAAK4K,MAAQ,CAAEu1I,WAAY,MAmE7B,OAhEKnC,IAAaV,EAAM77I,UAAYu8I,GACpCV,EAAMl+I,UAAYlB,OAAOY,OAAQk/I,GAAcA,EAAW5+I,WAC1Dk+I,EAAMl+I,UAAUoC,YAAc87I,EAE9BA,EAAMl+I,UAAUqX,kBAAoB,WAC9BzW,KAAKkF,MAAMi4I,aACbn9I,KAAKogJ,kBACLpgJ,KAAKqgJ,oBAGHrgJ,KAAKkF,MAAMw3I,WACb18I,KAAKqgD,MAAMjhB,SAIfk+G,EAAMl+I,UAAUqY,mBAAqB,WACnCzX,KAAKqgJ,oBAGP/C,EAAMl+I,UAAUghJ,gBAAkB,WAChC,IAAIb,EAASv/I,KAETsgJ,EAAa19I,OAAOqzD,iBAAiBj2D,KAAKqgD,OAE9C6/F,EAAY36I,QAAQ,SAAUgT,GAC5BgnI,EAAOgB,MAAMl8I,MAAMkU,GAAQ+nI,EAAW/nI,MAI1C+kI,EAAMl+I,UAAUihJ,iBAAmB,WACjC,IAAIF,EAEAngJ,KAAKkF,MAAMi4I,aAGbgD,EAAahqI,KAAK42B,KAAK/sC,KAAKugJ,MAAM/uH,aAAe,GAG/C2uH,IAAengJ,KAAK4K,MAAMu1I,YAC5BngJ,KAAKoX,SAAS,CAAE+oI,WAAYA,KAIhC7C,EAAMl+I,UAAUyH,OAAS,WACvB,IAAI04I,EAASv/I,KAETmS,EAAMnS,KAAKkF,MACX26I,EAAkB1tI,EAAI0tI,gBACtB1B,EAAqBhsI,EAAIgsI,mBACzBj3F,EAAQ/0C,EAAI+0C,MACZ3pC,EAAcpL,EAAIoL,YAClB2gI,EAAa/rI,EAAI+rI,WACjB4B,EAAY3tI,EAAI2tI,UAChBvsB,EAAgBphH,EAAIohH,cAExB,OACE1tH,EAAM/C,cAAe,MAAO,CAAE2R,UAAWzU,KAAKkF,MAAMzE,WAAWo9I,aAC7Dh4I,EAAM/C,cAAe,QAAS5E,OAAOwB,OAAO,GAC1CmgJ,EAAiB1B,EAAoB,CAAEhsI,IAAK,SAAUtU,GAAK0hJ,EAAOl/F,MAAQxiD,GAAKY,MAAOyoD,EAAO3pC,YAAaA,EAAaO,KAAM,WAAY0iI,oBAAqB,OAAQC,aAAcljI,EAAamjI,YAAaZ,EAAWa,wBAAyBptB,GAAiB,EAAKusB,EAAY,IAAMvsB,EAAiB,KAAMqtB,gBAAiB1C,EAAY75I,MAAO,CAAEG,MAAOxE,KAAK4K,MAAMu1I,eAC3Wt6I,EAAM/C,cAAe,MAAO,CAAEqP,IAAK,SAAUtU,GAAK0hJ,EAAOgB,MAAQ1iJ,GAAKwG,MAAO47I,GAAgB/4F,GAAS3pC,KAKrG+/H,EAtEI,CAuEXz3I,EAAM+R,WAERra,EAAOD,QAAUggJ,gCC5FjB,IAAIz3I,EAAQrG,EAAQ,GAEpB,SAASqhJ,EAAiB35F,GACxB,OAAOA,EAAMzkD,QAAQ,uBAAwB,QAG/C,SAASq+I,EAAQzgG,EAAO6G,GACtB,GAAIA,EAAO,CACT,IAAI0f,EAAQC,OAAOg6E,EAAgB35F,GAAQ,MAC3C7G,EAAQA,EAAM59C,QAAQmkE,EAAO,mBAG/B,MAAO,CACL2oC,OAAQlvD,GAIZ,SAAS0gG,EAAmB75F,EAAO81F,EAAan9I,EAAQkgJ,GACtD,IAAKA,EAAmB,CACtB,IAAIn5E,EAAQ,IAAIC,OAAQ,YAAeg6E,EAAgB35F,GAAU,KACjE64F,EAAoB,SAAUz4G,GAAQ,OAAOs/B,EAAMrjE,KAAK+jC,EAAKvpC,OAG/D,OAAOi/I,EAAYhuI,OAAO,SAAUs4B,GAAQ,OAAOy4G,EAAkBz4G,EAAM4f,KAAW7jD,MAAM,EAAGxD,GAGjG,IAAI09I,EAAe,SAAUS,GAC3B,SAAST,EAAar4I,GACpB84I,EAAWrgJ,KAAKqC,KAAMkF,GAEtBlF,KAAK4K,MAAQ,CACX/C,QAASk5I,EAAkB/gJ,KAAKkF,MAAMgiD,MAAOlnD,KAAKkF,MAAM83I,YAAah9I,KAAKkF,MAAM86I,qBAAsBhgJ,KAAKkF,MAAM66I,oBAsDrH,OAlDK/B,IAAaT,EAAY97I,UAAYu8I,GAC1CT,EAAYn+I,UAAYlB,OAAOY,OAAQk/I,GAAcA,EAAW5+I,WAChEm+I,EAAYn+I,UAAUoC,YAAc+7I,EAEpCA,EAAYn+I,UAAUo1G,0BAA4B,SAAoCjsB,GACpFvoF,KAAKoX,SAAS,CACZvP,QAASk5I,EAAkBx4D,EAASrhC,MAAOqhC,EAASy0D,YAAaz0D,EAASy3D,qBAAsBz3D,EAASw3D,sBAI7GxC,EAAYn+I,UAAU4hJ,gBAAkB,SAA0B15G,EAAMllC,GAEtEA,EAAE2yC,iBACF/0C,KAAKkF,MAAMg6I,OAAO53G,IAGpBi2G,EAAYn+I,UAAUyH,OAAS,WAC7B,IAAI04I,EAASv/I,KAEb,IAAKA,KAAKkF,MAAMg5I,aAAel+I,KAAK4K,MAAM/C,QAAQhI,OAChD,OAAO,KAGT,IAAIgI,EAAU7H,KAAK4K,MAAM/C,QAAQiC,IAAI,SAAUw9B,EAAM9pC,GACnD,IAAIuB,EAAOwgJ,EAAOr6I,MAAM46I,UAAa,IAAMtiJ,EACvCiD,EAAa,GAUjB,OARI8+I,EAAOr6I,MAAMquH,gBAAkB/1H,GACjCiD,EAAWI,KAAK0+I,EAAOr6I,MAAMzE,WAAWq9I,kBAGtCx2G,EAAK9sB,UACP/Z,EAAWI,KAAK0+I,EAAOr6I,MAAMzE,WAAWs9I,oBAIxCl4I,EAAM/C,cAAe,KAAM,CACzB+U,GAAI9Y,EAAKA,IAAKA,EAAK+e,KAAM,SAAUrJ,UAAWhU,EAAWQ,KAAK,KAAMggJ,iBAAmC,IAAlB35G,EAAK9sB,SAAmByL,YAAas5H,EAAOyB,gBAAgBhiJ,KAAKugJ,EAAQj4G,IAC9JzhC,EAAM/C,cAAe,OAAQ,CAAE2nG,wBAAyBq2C,EAAOx5G,EAAKvpC,KAAMwhJ,EAAOr6I,MAAMgiD,YAK7F,OACErhD,EAAM/C,cAAe,MAAO,CAAE2R,UAAWzU,KAAKkF,MAAMzE,WAAWu8I,aAC7Dn3I,EAAM/C,cAAe,KAAM,CAAEgb,KAAM,UAAWjG,GAAI7X,KAAKkF,MAAM46I,WAAaj4I,KAKzE01I,EA3DU,CA4DjB13I,EAAM+R,WAERra,EAAOD,QAAUigJ,gCCzFjBjgJ,EAAQsB,YAAa,EACrB,IAAIiH,EAAQrG,EAAQ,GAChBsG,EAActG,EAAQ,GACtB0hJ,EAAe,WACf,IAAIpwH,EAAKjuB,SAASC,cAAc,OAEhC,OADAguB,EAAGzsB,MAAMI,OAAS,OACXqsB,GAqBXxzB,EAAO,QAhBP,SAAmBgJ,EAAMC,EAAiBC,GACtC,IAAInC,EAAQkC,EAAgBlC,OAAS,GACjCyP,EAAMxN,EAAKw5B,YAAc,GACzB/lB,EAAUjG,GAAOA,EAAIjU,OAAS,GAAuB,iBAAXiU,EAAI,GAAkBjO,EAAM/C,cAAc,OAAQ,KAAMgR,EAAI7S,KAAK,OAAS4E,EAAM/C,cAAc,OAAQ,MACtI,SAAVuB,IAEA0V,EAAWlU,EAAM/C,cAAc,MAAO,KAAMgR,EAAIhK,IAAI,SAAUw9B,GAC1D,MAAuB,iBAATA,EAAoBzhC,EAAM/C,cAAc,OAAQ,CAAE/D,IAAKuoC,GAAQA,GAAQzhC,EAAM/C,cAAc,OAAQ,CAAE/D,IAAKuoC,EAAKvpC,MAAQupC,EAAKvpC,UAGlJ,IAAI+yB,EAAKowH,IAIT,OAHApwH,EAAGrc,UAAY,gCACfqc,EAAGvoB,MAAQuL,GAAOA,EAAIjU,OAAS,GAAuB,iBAAXiU,EAAI,GAAkBA,EAAI7S,KAAK,MAAQ,GAClF6E,EAAYe,OAAOkT,EAAS+W,GACrBA,iCCxBX,IAAI9sB,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAMR,SAAsB8B,EAAU0/E,GAC9B,OAAO,SAAuBtgF,GAC5B,IAAImC,EAAMnC,EAAE0gF,cACRnjF,EAASyC,EAAEzC,OACXwnD,GAAU,EAAIg6F,EAAkBjgJ,SAASqD,EAAKvB,GAC9CmkD,EAAQlzC,KAAK,SAAUie,GACzB,OAAO,EAAI4yD,EAAU5jF,SAASgxB,EAAOvyB,MACnC+iF,EAAQ/kF,KAAKqC,KAAMoC,KAX3B,IAAI0iF,EAAY9gF,EAAuBxE,EAAQ,KAE3C2hJ,EAAoBn9I,EAAuBxE,EAAQ,KAavDjC,EAAOD,QAAUA,EAAO,sCCpBxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAIR,SAAuB46D,QACT,IAARA,IACFA,GAAM,EAAIupB,EAAenkF,YAG3B,IACE,OAAO46D,EAAI0iC,cACX,MAAOp8F,MATX,IAAIijF,EAAiBrhF,EAAuBxE,EAAQ,KAcpDjC,EAAOD,QAAUA,EAAO,sCCnBxBY,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAEI8R,EAAUvM,EAFDxE,EAAQ,IAIjB4hJ,EAAW5hJ,EAAQ,IAInBgR,EAA+BxM,EAFDxE,EAAQ,KAI1C,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAgBvF9D,EAAQ4D,SAAU,EAAIsP,EAA6BtP,SAdnD,SAAqBgE,EAAOuL,EAAUC,EAAeC,EAAUC,GAC7D,IAAIC,EAAY3L,EAAMuL,GAEtB,OAAIF,EAAQrP,QAAQ6P,eAAeF,GAC1B,IAAIvO,MAAM,WAAaqO,EAAW,KAAOC,EAAe,uCAA+CF,EAAgB,oFAG3H,EAAI0wI,EAASC,oBAAoBxwI,GAI/B,KAHE,IAAIvO,MAAM,WAAaqO,EAAW,KAAOC,EAAe,eAAiBC,EAAY,kBAA0BH,EAAgB,sFAO1InT,EAAOD,QAAUA,EAAO,sCC9BtBC,EAAOD,QAAUkC,EAAQ;;;;;;;;GCMdtB,OAAOC,eAAeb,EAAQ,aAAa,CAACmB,OAAM,IAC/D,IAAI0D,EAAE,mBAAoB5D,QAAQA,OAAOsc,IAAIhd,EAAEsE,EAAE5D,OAAOsc,IAAI,iBAAiB,MAAM/c,EAAEqE,EAAE5D,OAAOsc,IAAI,gBAAgB,MAAMzY,EAAED,EAAE5D,OAAOsc,IAAI,kBAAkB,MAAMxY,EAAEF,EAAE5D,OAAOsc,IAAI,qBAAqB,MAAMwyE,EAAElrF,EAAE5D,OAAOsc,IAAI,kBAAkB,MAAMyyE,EAAEnrF,EAAE5D,OAAOsc,IAAI,kBAAkB,MAAMsJ,EAAEhiB,EAAE5D,OAAOsc,IAAI,iBAAiB,MAAMpd,EAAE0E,EAAE5D,OAAOsc,IAAI,oBAAoB,MAAMjd,EAAEuE,EAAE5D,OAAOsc,IAAI,yBAAyB,MAAM5b,EAAEkD,EAAE5D,OAAOsc,IAAI,qBAAqB,MAAMvb,EAAE6C,EAAE5D,OAAOsc,IAAI,kBAAkB,MAAMgyE,EAAE1qF,EAAE5D,OAAOsc,IAAI,cACpf,MAAMvc,EAAE6D,EAAE5D,OAAOsc,IAAI,cAAc,MAAM,SAASnc,EAAEwD,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI4qF,EAAE5qF,EAAE2sF,SAAS,OAAO/B,GAAG,KAAKjvF,EAAE,OAAOqE,EAAEA,EAAEwG,MAAQ,KAAKjL,EAAE,KAAKG,EAAE,KAAKwE,EAAE,KAAKirF,EAAE,KAAKhrF,EAAE,KAAK/C,EAAE,OAAO4C,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE2sF,UAAY,KAAK1qE,EAAE,KAAKllB,EAAE,KAAKquF,EAAE,OAAOprF,EAAE,QAAQ,OAAO4qF,GAAG,KAAKxuF,EAAE,KAAKuuF,EAAE,KAAK/uF,EAAE,OAAOgvF,IAAI,SAASC,EAAE7qF,GAAG,OAAOxD,EAAEwD,KAAKtE,EAAEN,EAAQgkJ,OAAO5iJ,EAAEpB,EAAQikJ,UAAU9jJ,EAAEH,EAAQkkJ,eAAe5jJ,EAAEN,EAAQmkJ,gBAAgBt9H,EAAE7mB,EAAQokJ,gBAAgBp0D,EAAEhwF,EAAQqkJ,QAAQ9jJ,EAAEP,EAAQskJ,WAAW3iJ,EACxe3B,EAAQorF,SAAStmF,EAAE9E,EAAQukJ,KAAKvjJ,EAAEhB,EAAQwkJ,KAAKj1D,EAAEvvF,EAAQykJ,OAAOjkJ,EAAER,EAAQ0kJ,SAAS30D,EAAE/vF,EAAQo0F,WAAWrvF,EAAE/E,EAAQq0F,SAASryF,EAAEhC,EAAQ+jJ,mBAAmB,SAASn/I,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAIE,GAAGF,IAAItE,GAAGsE,IAAImrF,GAAGnrF,IAAIG,GAAGH,IAAI5C,GAAG,iBAAkB4C,GAAG,OAAOA,IAAIA,EAAE2sF,WAAWvwF,GAAG4D,EAAE2sF,WAAWhC,GAAG3qF,EAAE2sF,WAAWvB,GAAGprF,EAAE2sF,WAAW1qE,GAAGjiB,EAAE2sF,WAAW5vF,IAAI3B,EAAQ2kJ,YAAY,SAAS//I,GAAG,OAAO6qF,EAAE7qF,IAAIxD,EAAEwD,KAAKzE,GAAGH,EAAQ4kJ,iBAAiBn1D,EAAEzvF,EAAQ6kJ,kBAAkB,SAASjgJ,GAAG,OAAOxD,EAAEwD,KAAKiiB,GAChf7mB,EAAQ8kJ,kBAAkB,SAASlgJ,GAAG,OAAOxD,EAAEwD,KAAKorF,GAAGhwF,EAAQ+kJ,UAAU,SAASngJ,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE2sF,WAAWhxF,GAAGP,EAAQglJ,aAAa,SAASpgJ,GAAG,OAAOxD,EAAEwD,KAAKjD,GAAG3B,EAAQilJ,WAAW,SAASrgJ,GAAG,OAAOxD,EAAEwD,KAAKE,GAAG9E,EAAQklJ,OAAO,SAAStgJ,GAAG,OAAOxD,EAAEwD,KAAK5D,GAAGhB,EAAQmlJ,OAAO,SAASvgJ,GAAG,OAAOxD,EAAEwD,KAAK2qF,GAAGvvF,EAAQolJ,SAAS,SAASxgJ,GAAG,OAAOxD,EAAEwD,KAAKpE,GAAGR,EAAQqlJ,WAAW,SAASzgJ,GAAG,OAAOxD,EAAEwD,KAAKmrF,GAAG/vF,EAAQslJ,aAAa,SAAS1gJ,GAAG,OAAOxD,EAAEwD,KAAKG,GACjd/E,EAAQulJ,WAAW,SAAS3gJ,GAAG,OAAOxD,EAAEwD,KAAK5C,iCCZ7C,IAAI0E,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAI4hJ,EAAY9+I,EAAuBxE,EAAQ,KAE/ClC,EAAQ4L,SAAW45I,EAAU5hJ,QAE7B,IAAI6hJ,EAAe/+I,EAAuBxE,EAAQ,KAElDlC,EAAQwX,YAAciuI,EAAa7hJ,QAEnC,IAAI8hJ,EAAYh/I,EAAuBxE,EAAQ,KAE/ClC,EAAQixI,SAAWyU,EAAU9hJ,QAC7B,IAAIyB,EAAW,CACbuG,SAAU45I,EAAU5hJ,QACpB4T,YAAaiuI,EAAa7hJ,QAC1BqtI,SAAUyU,EAAU9hJ,SAEtB5D,EAAQ4D,QAAUyB,gCCrBlB,IAAIqB,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAIR,SAAkB6B,EAAS0R,GACrB1R,EAAQguB,UAAWhuB,EAAQguB,UAAUvc,IAAIC,IAAqB,EAAIuuI,EAAU9hJ,SAAS6B,EAAS0R,KAA6C,iBAAtB1R,EAAQ0R,UAAwB1R,EAAQ0R,UAAY1R,EAAQ0R,UAAY,IAAMA,EAAe1R,EAAQ64B,aAAa,SAAU74B,EAAQ0R,WAAa1R,EAAQ0R,UAAU0uE,SAAW,IAAM,IAAM1uE,KAHrT,IAAIuuI,EAAYh/I,EAAuBxE,EAAQ,KAM/CjC,EAAOD,QAAUA,EAAO,sCCXxB,SAAS2lJ,EAAiBC,EAAWC,GACnC,OAAOD,EAAUzgJ,QAAQ,IAAIokE,OAAO,UAAYs8E,EAAgB,YAAa,KAAM,MAAM1gJ,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,IAGtIlF,EAAOD,QAAU,SAAqByF,EAAS0R,GACzC1R,EAAQguB,UAAWhuB,EAAQguB,UAAU3oB,OAAOqM,GAAiD,iBAAtB1R,EAAQ0R,UAAwB1R,EAAQ0R,UAAYwuI,EAAiBlgJ,EAAQ0R,UAAWA,GAAgB1R,EAAQ64B,aAAa,QAASqnH,EAAiBlgJ,EAAQ0R,WAAa1R,EAAQ0R,UAAU0uE,SAAW,GAAI1uE,mCCL1R,IAAIzQ,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAWR,SAA4BoR,GAC1B,OAAO,EAAI8wI,EAAWliJ,SAASoR,GAAQ7P,QAAQ4gF,EAAW,SAV5D,IAAI+/D,EAAap/I,EAAuBxE,EAAQ,KAO5C6jF,EAAY,OAMhB9lF,EAAOD,QAAUA,EAAO,sCClBxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAGR,SAAmBoR,GACjB,OAAOA,EAAO7P,QAAQ4gJ,EAAQ,OAAO75F,eAHvC,IAAI65F,EAAS,WAMb9lJ,EAAOD,QAAUA,EAAO,sCCRxB,IAAI0G,EAAyBxE,EAAQ,GAErClC,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAOR,SAA2B4C,GACzB,IAAKA,EAAM,MAAM,IAAI0L,UAAU,6CAC/B,IAAIssD,EAAMh4D,EAAKC,cACf,MAAO,gBAAiB+3D,EAAMA,EAAIimC,YAAY8jC,OAAS/hI,EAAKC,cAAcg+F,YAAY9rC,iBAAiBnyD,EAAM,MAAQlB,OAAOqzD,iBAAiBnyD,EAAM,MAAQ,CAEzJuB,iBAAkB,SAA0BkT,GAC1C,IAAIlU,EAAQP,EAAKO,MAEL,UADZkU,GAAO,EAAIpT,EAAejE,SAASqX,MACdA,EAAO,cAC5B,IAAIkpD,EAAU39D,EAAKw/I,aAAa/qI,IAAS,KAGzC,GAFe,MAAXkpD,GAAmBp9D,GAASA,EAAMkU,KAAOkpD,EAAUp9D,EAAMkU,IAEzDotH,EAAUpiI,KAAKk+D,KAAa8hF,EAAUhgJ,KAAKgV,GAAO,CAEpD,IAAI+Y,EAAOjtB,EAAMitB,KACbkyH,EAAW1/I,EAAK2/I,aAChBC,EAASF,GAAYA,EAASlyH,KAE9BoyH,IAAQF,EAASlyH,KAAOxtB,EAAKw/I,aAAahyH,MAC9CjtB,EAAMitB,KAAgB,aAAT/Y,EAAsB,MAAQkpD,EAC3CA,EAAUp9D,EAAMs/I,UAAY,KAE5Bt/I,EAAMitB,KAAOA,EACToyH,IAAQF,EAASlyH,KAAOoyH,GAG9B,OAAOjiF,KA/Bb,IAAIt8D,EAAiBnB,EAAuBxE,EAAQ,KAEhD+jJ,EAAY,4BACZ5d,EAAY,wDAiChBpoI,EAAOD,QAAUA,EAAO,sCCzCxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAER,SAAqB4C,EAAM/E,GACzB,MAAO,mBAAoB+E,EAAKO,MAAQP,EAAKO,MAAMu/I,eAAe7kJ,GAAO+E,EAAKO,MAAMq5F,gBAAgB3+F,IAGtGxB,EAAOD,QAAUA,EAAO,sCCPxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAGR,SAAqB/B,GACnB,SAAUA,IAAY0kJ,EAAoBtgJ,KAAKpE,KAHjD,IAAI0kJ,EAAsB,8EAM1BtmJ,EAAOD,QAAUA,EAAO,sCCRxBA,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAkBR,SAAuBkT,GAErB,OADU,EAAI0vI,EAAU5iJ,SAASkT,KAXnBtQ,EAYOsQ,EAXdtQ,GAAuC,SAA/BA,EAAK86C,QAAQ4K,eAG9B,SAA2B1lD,GACzB,IAAIg4D,GAAM,EAAIupB,EAAenkF,SAAS4C,GAClCm0I,GAAM,EAAI6L,EAAU5iJ,SAAS46D,GACjC,OAAOA,EAAIn3D,KAAKG,YAAcmzI,EAAI8L,WAKAC,CAAkB5vI,GAAaA,EAAU8iB,aAAe9iB,EAAU+iB,aAZtG,IAAgBrzB,GANhB,IAAIggJ,EAAY9/I,EAAuBxE,EAAQ,KAE3C6lF,EAAiBrhF,EAAuBxE,EAAQ,KAEpD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAiBvF7D,EAAOD,QAAUA,EAAQ4D,sCCxBzB5D,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAER,SAAmB4C,GACjB,OAAOA,IAASA,EAAKlB,OAASkB,EAAyB,IAAlBA,EAAKkN,WAAiBlN,EAAKi+F,aAAej+F,EAAKk+F,eAGtFzkG,EAAOD,QAAUA,EAAO,sCCPxBA,EAAQsB,YAAa,EACrBtB,EAAQ6X,WAAaA,EACrB7X,EAAQsX,aA6BR,SAAsBR,EAAW6vI,GAC/B,IAAIj6F,EAAOi6F,EAAMj6F,KACb/0C,EAAWgvI,EAAMhvI,SACrB8hH,EAAS3iH,EAAW,CAAC41C,EAAM/0C,GAAW,SAAUnR,GAC9C,OAAOqR,GAAW,EAAMrR,MAhC5BxG,EAAQyX,aAoCR,SAAsBX,EAAW8vI,GAC/B,IAAIl6F,EAAOk6F,EAAMl6F,KACb/0C,EAAWivI,EAAMjvI,SACrB8hH,EAAS3iH,EAAW,CAAC41C,EAAM/0C,GAAW,SAAUnR,GAC9C,OAAOqR,GAAW,EAAOrR,MAvC7B,IAAIqgJ,EAAY,CAAC,WAAY,SAAU,SAQnCptB,EAAW,SAAkB3iH,EAAWgwI,EAASrwI,GACnDqwI,EAAU,GAAG5yI,OAAO4yI,GACpB,GAAG7+I,QAAQ5H,KAAKyW,EAAUlM,SAAU,SAAUpE,GARhC,IAAmB8N,EAC7BZ,EACA4tC,GAO6B,IAA3BwlG,EAAQ9jJ,QAAQwD,KARlBkN,GAD6BY,EASe9N,GAR5BkN,SAChB4tC,EAAUhtC,EAAKgtC,QACC,IAAb5tC,IAAgE,IAA9CmzI,EAAU7jJ,QAAQs+C,EAAQ4K,iBAO/Cz1C,EAAGjQ,MAKT,SAASqR,EAAWojB,EAAMz0B,GACnBA,IAEDy0B,EACFz0B,EAAK83B,aAAa,cAAe,QAEjC93B,EAAK45F,gBAAgB,+CC3BzBpgG,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAI6jF,EAAa/gF,EAAuBxE,EAAQ,IAE5CwlF,EAAsBhhF,EAAuBxE,EAAQ,KAErD4S,EAASpO,EAAuBxE,EAAQ,IAExColF,EAAY5gF,EAAuBxE,EAAQ,IAE3C6kJ,EAAoBrgJ,EAAuBxE,EAAQ,KAEvD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GASvF,IAAI2gJ,EAEJ,SAAUr8D,GATV,IAAwBpkF,EAAUC,EAYhC,SAASwgJ,IACP,OAAOr8D,EAAiB3lF,MAAMC,KAAMJ,YAAcI,KAgBpD,OA7BgCuB,EAUTmkF,GAVDpkF,EAUPygJ,GAVwC3iJ,UAAYlB,OAAOY,OAAOyC,EAAWnC,WAAYkC,EAASlC,UAAUoC,YAAcF,EAAUA,EAASG,UAAYF,EAgB3JwgJ,EAAO3iJ,UAEbyH,OAAS,WACd,IAAImP,EAAQhW,KAEZ,OAAOA,KAAKkF,MAAMgD,SAAWkK,EAAOlR,QAAQ4B,cAAcuhJ,EAAkBnjJ,QAAS,CACnFkT,UAAWpU,KAAKkF,MAAMkP,UACtBkwI,oBAAqBtkJ,KAAKkF,MAAMsB,YAC/B,SAAU4N,GACX,OAAOwwE,EAAU1jF,QAAQujH,aAAazuG,EAAM9Q,MAAMgD,SAAUkM,KACzD,MAGA2tI,EApBT,CAqBE3vI,EAAOlR,QAAQ0W,WAEjBmqI,EAAO7vI,YAAc,SACrB6vI,EAAOlwI,UAAY,CAKjBuC,UAAW2wE,EAAW7jF,QAAQ0nF,UAAU,CAAC5D,EAAoB9jF,QAAS6jF,EAAW7jF,QAAQye,OACzFnZ,WAAYu+E,EAAW7jF,QAAQye,MAEjC,IAAIhd,EAAWo/I,EACfzkJ,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAQ4D,sCC1DzB5D,EAAQsB,YAAa,EACrBtB,EAAQ4D,aAAU,EAElB,IAAI6jF,EAAa/gF,EAAuBxE,EAAQ,IAE5CwlF,EAAsBhhF,EAAuBxE,EAAQ,KAErD2E,EAASH,EAAuBxE,EAAQ,KAExC6lF,EAAiBrhF,EAAuBxE,EAAQ,KAEhD4S,EAASpO,EAAuBxE,EAAQ,IAExColF,EAAY5gF,EAAuBxE,EAAQ,IAE3C4lF,EAAgBphF,EAAuBxE,EAAQ,KAEnD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAEvF,SAASkkF,EAAuBlzD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAImzD,eAAe,6DAAgE,OAAOnzD,EAI/J,IAAIvgB,EAAY,CAKduC,UAAW2wE,EAAW7jF,QAAQ0nF,UAAU,CAAC5D,EAAoB9jF,QAAS6jF,EAAW7jF,QAAQye,OACzF2kI,oBAAqBv/D,EAAW7jF,QAAQye,MAGtC4kI,EAEJ,SAAU7+D,GAbV,IAAwBpkF,EAAUC,EAgBhC,SAASgjJ,IAGP,IAFA,IAAIvuI,EAEK1E,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAIzB,GADAyE,EAAQ0vE,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAUvC,MACzEmE,EAAOjD,QAAS,OAAOokF,EAAuBtvE,GACnD,IAAI5B,EAAY4B,EAAM9Q,MAAMkP,UAG5B,MAFyB,mBAAdA,IAA0BA,EAAYA,KAE7CA,IAAcwwE,EAAU1jF,QAAQyV,YAAYvC,GAGvCkxE,EAAuBtvE,IAGhCA,EAAMwuI,aAAapwI,GAEZ4B,GApCuBzU,EAcCmkF,GAdXpkF,EAcPijJ,GAdwCnlJ,UAAYlB,OAAOY,OAAOyC,EAAWnC,WAAYkC,EAASlC,UAAUoC,YAAcF,EAAUA,EAASG,UAAYF,EAuCxK,IAAIkS,EAAS8wI,EAAiBnlJ,UA6B9B,OA3BAqU,EAAOghG,iCAAmC,SAA0CltB,GAC9EA,EAAUnzE,YAAcpU,KAAKkF,MAAMkP,WACrCpU,KAAKwkJ,aAAaj9D,EAAUnzE,YAIhCX,EAAOgD,kBAAoB,WACpBzW,KAAKykJ,WAGCzkJ,KAAKkF,MAAMo/I,qBACpBtkJ,KAAKkF,MAAMo/I,uBAHXtkJ,KAAKwkJ,aAAaxkJ,KAAKkF,MAAMkP,WAC7BpU,KAAKouF,YAAYpuF,KAAKkF,MAAMo/I,uBAMhC7wI,EAAO4D,qBAAuB,WAC5BrX,KAAKykJ,WAAa,MAGpBhxI,EAAO+wI,aAAe,SAAsBpwI,GAC1CpU,KAAKykJ,YAAa,EAAIr/D,EAAclkF,SAASkT,GAAW,EAAIixE,EAAenkF,WAAWyD,OAGxF8O,EAAO5M,OAAS,WACd,OAAO7G,KAAKykJ,WAAazkJ,KAAKkF,MAAMgD,SAASlI,KAAKykJ,YAAc,MAG3DF,EAvDT,CAwDEnyI,EAAOlR,QAAQ0W,WAEjB2sI,EAAiB1yI,UAAYA,EAC7B,IAAIlP,EAAW4hJ,EACfjnJ,EAAQ4D,QAAUyB,EAClBpF,EAAOD,QAAUA,EAAQ4D,sCC/FzB5D,EAAQsB,YAAa,EACrBtB,EAAQ4D,QAQR,SAAkBwjJ,GAChB,OAAO,EAAIr/D,EAAenkF,SAAS0jF,EAAU1jF,QAAQyV,YAAY+tI,KAPnE,IAAI9/D,EAAY5gF,EAAuBxE,EAAQ,IAE3C6lF,EAAiBrhF,EAAuBxE,EAAQ,KAEpD,SAASwE,EAAuB5C,GAAO,OAAOA,GAAOA,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GAMvF7D,EAAOD,QAAUA,EAAQ4D,sCCbzBhD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ4D,QAQR,WACE,IAAK,IAAIoQ,EAAO1R,UAAUC,OAAQuiF,EAAathF,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACjF6wE,EAAW7wE,GAAQ3R,UAAU2R,GAwB/B,OAAO,EAAIf,EAA6BtP,SArBxC,WACE,IAAK,IAAIspF,EAAQ5qF,UAAUC,OAAQ0C,EAAOzB,MAAM0pF,GAAQ9R,EAAQ,EAAGA,EAAQ8R,EAAO9R,IAChFn2E,EAAKm2E,GAAS94E,UAAU84E,GAG1B,IAAI52E,EAAQ,KAaZ,OAXAsgF,EAAW78E,QAAQ,SAAUk5B,GAC3B,GAAa,MAAT38B,EAAJ,CAIA,IAAIue,EAASoe,EAAU1+B,WAAMoB,EAAWoB,GAC1B,MAAV8d,IACFve,EAAQue,MAILve,KA7BX,IAIgCV,EAJ5BujJ,EAA8BnlJ,EAAQ,IAEtCgR,GAE4BpP,EAF0BujJ,IAELvjJ,EAAIxC,WAAawC,EAAM,CAAEF,QAASE,GA8BvF7D,EAAOD,QAAUA,EAAO,uBCzCxBC,EAAOD,QAAUwD,MAAMC,SAAW,SAAU+S,GAC1C,MAA8C,kBAAvC5V,OAAOkB,UAAU2gB,SAASpiB,KAAKmW,kCCDzB,SAAS8wI,EAAWC,GACjC,GAAoB,OAAhBA,IAAwC,IAAhBA,IAAwC,IAAhBA,EAClD,OAAOC,IAGT,IAAItlF,EAASxO,OAAO6zF,GAEpB,OAAI5yH,MAAMutC,GACDA,EAGFA,EAAS,EAAIrpD,KAAK42B,KAAKyyB,GAAUrpD,KAAKC,MAAMopD,UCXrD,IAAIulF,EAAyB,IAad,SAASC,EAAiCC,GACvD,IAAIv7E,EAAO,IAAI5+D,KAAKm6I,EAAUz4I,WAC1B04I,EAAqBx7E,EAAKy7E,oBAC9Bz7E,EAAK07E,WAAW,EAAG,GACnB,IAAIC,EAAmC37E,EAAKl9D,UAAYu4I,EAExD,OAAOG,EAAqBH,EAAyBM,EChBvD,IAAIC,EAAuB,KACvBP,EAAyB,IACzBQ,EAA4B,EAE5BC,EAAW,CACbC,kBAAmB,OACnBC,UAAW,IACXC,kBAAmB,QAGnBC,GAAI,YACJC,IAAK,CACH,gBACA,gBACA,iBAEFC,KAAM,WACNC,MAAO,CACL,eACA,eACA,gBAIFC,GAAI,aACJC,IAAK,cACLC,KAAM,uBACNC,IAAK,eACLC,KAAM,wBAENC,GAAI,sBACJC,KAAM,+BACNC,OAAQ,wCAGRC,SAAU,aACVC,UAAW,QACXC,WAAY,kBACZC,aAAc,4BA2CD,SAASC,EAAQ92B,EAAU+2B,GACxC,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,GAAiB,OAAbiwH,EACF,OAAO,IAAIhlH,KAAKg6I,KAGlB,IAAIj9I,EAAUg/I,GAAgB,GAE1BC,EAA+C,MAA5Bj/I,EAAQi/I,iBAA2BvB,EAA4BX,EAAU/8I,EAAQi/I,kBACxG,GAAyB,IAArBA,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIC,WAAW,sCAIvB,GAAIj3B,aAAoBhlH,MACD,iBAAbglH,GAAsE,kBAA7C5xH,OAAOkB,UAAU2gB,SAASpiB,KAAKmyH,GAGhE,OAAO,IAAIhlH,KAAKglH,EAAStjH,WACpB,GAAwB,iBAAbsjH,GAAsE,oBAA7C5xH,OAAOkB,UAAU2gB,SAASpiB,KAAKmyH,GACxE,OAAO,IAAIhlH,KAAKglH,GACX,GAA0B,iBAAbA,GAAsE,oBAA7C5xH,OAAOkB,UAAU2gB,SAASpiB,KAAKmyH,GAC1E,OAAO,IAAIhlH,KAAKg6I,KAGlB,IAAIkC,EA0CN,SAA0BC,GACxB,IAEIC,EAFAF,EAAc,GACd3lE,EAAQ4lE,EAAWl3I,MAAMy1I,EAASC,mBAGlCD,EAASE,UAAUniJ,KAAK89E,EAAM,KAChC2lE,EAAYt9E,KAAO,KACnBw9E,EAAa7lE,EAAM,KAEnB2lE,EAAYt9E,KAAO2X,EAAM,GACzB6lE,EAAa7lE,EAAM,GACfmkE,EAASG,kBAAkBpiJ,KAAKyjJ,EAAYt9E,QAC9Cs9E,EAAYt9E,KAAOu9E,EAAWl3I,MAAMy1I,EAASG,mBAAmB,GAChEuB,EAAaD,EAAW5sE,OAAO2sE,EAAYt9E,KAAK7pE,OAAQonJ,EAAWpnJ,UAIvE,GAAIqnJ,EAAY,CACd,IAAIj7D,EAAQu5D,EAASgB,SAASr7D,KAAK+7D,GAC/Bj7D,GACF+6D,EAAY7lE,KAAO+lE,EAAWzkJ,QAAQwpF,EAAM,GAAI,IAChD+6D,EAAYR,SAAWv6D,EAAM,IAE7B+6D,EAAY7lE,KAAO+lE,EAIvB,OAAOF,EArEWG,CAAgBr3B,GAE9Bs3B,EAsEN,SAAoBH,EAAYH,GAC9B,IAGI76D,EAHAo7D,EAAa7B,EAASK,IAAIiB,GAC1BQ,EAAe9B,EAASO,MAAMe,GAMlC,GADA76D,EAAQu5D,EAASM,KAAK36D,KAAK87D,IAAeK,EAAan8D,KAAK87D,GACjD,CACT,IAAIM,EAAat7D,EAAM,GACvB,MAAO,CACLu7D,KAAMlzI,SAASizI,EAAY,IAC3BE,eAAgBR,EAAW5jJ,MAAMkkJ,EAAW1nJ,SAMhD,GADAosF,EAAQu5D,EAASI,GAAGz6D,KAAK87D,IAAeI,EAAWl8D,KAAK87D,GAC7C,CACT,IAAIS,EAAgBz7D,EAAM,GAC1B,MAAO,CACLu7D,KAAoC,IAA9BlzI,SAASozI,EAAe,IAC9BD,eAAgBR,EAAW5jJ,MAAMqkJ,EAAc7nJ,SAKnD,MAAO,CACL2nJ,KAAM,MAlGcG,CAAUX,EAAYt9E,KAAMo9E,GAC9CU,EAAOJ,EAAgBI,KAGvB99E,EAkGN,SAAoBu9E,EAAYO,GAE9B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIv7D,EACAviB,EACA6wB,EACAG,EAGJ,GAA0B,IAAtBusD,EAAWpnJ,OAGb,OAFA6pE,EAAO,IAAI5+D,KAAK,IACX88I,eAAeJ,GACb99E,EAKT,GADAuiB,EAAQu5D,EAASQ,GAAG76D,KAAK87D,GAKvB,OAHAv9E,EAAO,IAAI5+D,KAAK,GAChByvF,EAAQjmF,SAAS23E,EAAM,GAAI,IAAM,EAE5B47D,EAAaL,EAAMjtD,IAIxB7wB,EAAKk+E,eAAeJ,EAAMjtD,GACnB7wB,GAJE,IAAI5+D,KAAKg6I,KASpB,GADA74D,EAAQu5D,EAASS,IAAI96D,KAAK87D,GACf,CACTv9E,EAAO,IAAI5+D,KAAK,GAChB,IAAIg9I,EAAYxzI,SAAS23E,EAAM,GAAI,IAEnC,OA2LJ,SAAgCu7D,EAAMM,GACpC,GAAIA,EAAY,EACd,OAAO,EAGT,IAAIC,EAAaC,EAAgBR,GACjC,GAAIO,GAAcD,EAAY,IAC5B,OAAO,EAET,IAAKC,GAAcD,EAAY,IAC7B,OAAO,EAGT,OAAO,EAxMAG,CAAsBT,EAAMM,IAIjCp+E,EAAKk+E,eAAeJ,EAAM,EAAGM,GACtBp+E,GAJE,IAAI5+D,KAAKg6I,KASpB,GADA74D,EAAQu5D,EAASU,KAAK/6D,KAAK87D,GAChB,CACTv9E,EAAO,IAAI5+D,KAAK,GAChByvF,EAAQjmF,SAAS23E,EAAM,GAAI,IAAM,EACjC,IAAIi8D,EAAM5zI,SAAS23E,EAAM,GAAI,IAE7B,OAAK47D,EAAaL,EAAMjtD,EAAO2tD,IAI/Bx+E,EAAKk+E,eAAeJ,EAAMjtD,EAAO2tD,GAC1Bx+E,GAJE,IAAI5+D,KAAKg6I,KASpB,GADA74D,EAAQu5D,EAASW,IAAIh7D,KAAK87D,GAIxB,OAFAvsD,EAAOpmF,SAAS23E,EAAM,GAAI,IAAM,EAE3Bk8D,EAAiBX,EAAM9sD,GAIrB0tD,EAAiBZ,EAAM9sD,GAHrB,IAAI5vF,KAAKg6I,KAQpB,GADA74D,EAAQu5D,EAASY,KAAKj7D,KAAK87D,GAChB,CACTvsD,EAAOpmF,SAAS23E,EAAM,GAAI,IAAM,EAChC,IAAIo8D,EAAY/zI,SAAS23E,EAAM,GAAI,IAAM,EAEzC,OAAKk8D,EAAiBX,EAAM9sD,EAAM2tD,GAI3BD,EAAiBZ,EAAM9sD,EAAM2tD,GAH3B,IAAIv9I,KAAKg6I,KAOpB,OAAO,KAzLIwD,CAFUlB,EAAgBK,eAEAD,GAErC,GAAIv1H,MAAMy3C,GACR,OAAO,IAAI5+D,KAAKg6I,KAGlB,GAAIp7E,EAAM,CACR,IAEInkD,EAFAgjI,EAAY7+E,EAAKl9D,UACjB20E,EAAO,EAGX,GAAI6lE,EAAY7lE,OACdA,EAgLN,SAAoB+lE,GAClB,IAAIj7D,EACAu8D,EACAC,EAIJ,GADAx8D,EAAQu5D,EAASa,GAAGl7D,KAAK+7D,GAIvB,OAAKwB,EAFLF,EAAQj8I,WAAW0/E,EAAM,GAAGxpF,QAAQ,IAAK,OAMjC+lJ,EAAQ,GAAMlD,EAHbR,IAQX,GADA74D,EAAQu5D,EAASc,KAAKn7D,KAAK+7D,GAKzB,OAHAsB,EAAQl0I,SAAS23E,EAAM,GAAI,IAC3Bw8D,EAAUl8I,WAAW0/E,EAAM,GAAGxpF,QAAQ,IAAK,MAEtCimJ,EAAaF,EAAOC,GAIjBD,EAAQ,GAAMlD,EACpBmD,EAAU1D,EAJHD,IASX,GADA74D,EAAQu5D,EAASe,OAAOp7D,KAAK+7D,GAClB,CACTsB,EAAQl0I,SAAS23E,EAAM,GAAI,IAC3Bw8D,EAAUn0I,SAAS23E,EAAM,GAAI,IAC7B,IAAI08D,EAAUp8I,WAAW0/E,EAAM,GAAGxpF,QAAQ,IAAK,MAE/C,OAAKimJ,EAAaF,EAAOC,EAASE,GAI1BH,EAAQ,GAAMlD,EACpBmD,EAAU1D,EACA,IAAV4D,EALO7D,IASX,OAAO,KAhOI8D,CAAU5B,EAAY7lE,MAEzBlvD,MAAMkvD,IACR,OAAO,IAAIr2E,KAAKg6I,KAIpB,GAAIkC,EAAYR,UAEd,GADAjhI,EA2NN,SAAwBsjI,GACtB,IAAI58D,EACA68D,EAQAN,EAJJ,GADAv8D,EAAQu5D,EAASiB,UAAUt7D,KAAK09D,GAE9B,OAAO,EAOT,GADA58D,EAAQu5D,EAASkB,WAAWv7D,KAAK09D,GAI/B,OAAKE,EAFLP,EAAQl0I,SAAS23E,EAAM,GAAI,MAM3B68D,EAAiBN,EAAQlD,EACJ,MAAbr5D,EAAM,IAAe68D,EAAiBA,GAJrChE,IASX,GADA74D,EAAQu5D,EAASmB,aAAax7D,KAAK09D,GACxB,CACTL,EAAQl0I,SAAS23E,EAAM,GAAI,IAC3B,IAAIw8D,EAAUn0I,SAAS23E,EAAM,GAAI,IAEjC,OAAK88D,EAAiBP,EAAOC,IAI7BK,EAAiBN,EAAQlD,EAAuBmD,EAAU1D,EACrC,MAAb94D,EAAM,IAAe68D,EAAiBA,GAJrChE,IAOX,OAAO,EAlQMkE,CAAchC,EAAYR,UAC/Bv0H,MAAM1M,GACR,OAAO,IAAIza,KAAKg6I,UAIlBv/H,EAASy/H,EAAgC,IAAIl6I,KAAKy9I,EAAYpnE,IAC9D57D,EAASy/H,EAAgC,IAAIl6I,KAAKy9I,EAAYpnE,EAAO57D,IAGvE,OAAO,IAAIza,KAAKy9I,EAAYpnE,EAAO57D,GAEnC,OAAO,IAAIza,KAAKg6I,KAyPpB,SAASsD,EAAkBa,EAAavuD,EAAMwtD,GAC5CxtD,EAAOA,GAAQ,EACfwtD,EAAMA,GAAO,EACb,IAAIx+E,EAAO,IAAI5+D,KAAK,GACpB4+D,EAAKk+E,eAAeqB,EAAa,EAAG,GACpC,IACIl9G,EAAc,EAAP2uD,EAAWwtD,EAAM,GADHx+E,EAAKw/E,aAAe,GAG7C,OADAx/E,EAAKy/E,WAAWz/E,EAAK0/E,aAAer9G,GAC7B29B,EAKT,IAAI2/E,EAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,EAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE3E,SAAStB,EAAiBR,GACxB,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,EAG/D,SAASK,EAAcL,EAAMjtD,EAAO7wB,GAClC,GAAI6wB,EAAQ,GAAKA,EAAQ,GACvB,OAAO,EAGT,GAAY,MAAR7wB,EAAc,CAChB,GAAIA,EAAO,EACT,OAAO,EAGT,IAAIq+E,EAAaC,EAAgBR,GACjC,GAAIO,GAAcr+E,EAAO4/E,EAAwB/uD,GAC/C,OAAO,EAET,IAAKwtD,GAAcr+E,EAAO2/E,EAAc9uD,GACtC,OAAO,EAIX,OAAO,EAmBT,SAAS4tD,EAAkBX,EAAM9sD,EAAMwtD,GACrC,QAAIxtD,EAAO,GAAKA,EAAO,MAIZ,MAAPwtD,KAAgBA,EAAM,GAAKA,EAAM,IAOvC,SAASQ,EAAcF,EAAOC,EAASE,GACrC,OAAa,MAATH,KAAkBA,EAAQ,GAAKA,GAAS,QAI7B,MAAXC,KAAoBA,EAAU,GAAKA,GAAW,OAInC,MAAXE,KAAoBA,EAAU,GAAKA,GAAW,MAOpD,SAASI,EAAkBP,EAAOC,GAChC,OAAe,MAAXA,KAAoBA,EAAU,GAAKA,EAAU,IC9cpC,SAASc,EAAStE,EAAWuE,EAAa3C,GACvD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB4C,EAAS7E,EAAU4E,GAEvB,OADA9/E,EAAKmR,QAAQnR,EAAKoR,UAAY2uE,GACvB//E,ECRM,SAASggF,EAAiBzE,EAAWuE,EAAa3C,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI0oJ,EAAY3B,EAAO3B,EAAW4B,GAAcr6I,UAC5Ci9I,EAAS7E,EAAU4E,GACvB,OAAO,IAAI1+I,KAAKy9I,EAAYkB,GC5B9B,IAAInE,EAAuB,KAuBZ,SAASqE,EAAU1E,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO6pJ,EAAgBzE,EADVL,EAAU4E,GACoBlE,EAAsBuB,GCApD,SAAS+C,EAAa3E,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAWp9I,GACzBqgJ,EAAMx+E,EAAKsgF,SACXj+G,GAAQm8G,EAAM4B,EAAe,EAAI,GAAK5B,EAAM4B,EAIhD,OAFApgF,EAAKmR,QAAQnR,EAAKoR,UAAY/uC,GAC9B29B,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECtDM,SAASwgF,EAAaC,GACnCA,EAAcA,GAAe,GAC7B,IAAIjrJ,EAAS,GAEb,IAAK,IAAIC,KAAYgrJ,EACfA,EAAY9qJ,eAAeF,KAC7BD,EAAOC,GAAYgrJ,EAAYhrJ,IAInC,OAAOD,ECgBM,SAASkrJ,EAAgBnF,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIwqJ,EAAqBH,EAAYrD,GAErC,OADAwD,EAAmBP,aAAe,EAC3BF,EAAY3E,EAAWoF,GCPjB,SAASC,EAAgBrF,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cAEZC,EAA4B,IAAI1/I,KAAK,GACzC0/I,EAA0BC,YAAYjD,EAAO,EAAG,EAAG,GACnDgD,EAA0BP,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIS,EAAkBN,EAAeI,EAA2B3D,GAE5D8D,EAA4B,IAAI7/I,KAAK,GACzC6/I,EAA0BF,YAAYjD,EAAM,EAAG,GAC/CmD,EAA0BV,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIW,EAAkBR,EAAeO,EAA2B9D,GAEhE,OAAIn9E,EAAKl9D,WAAak+I,EAAgBl+I,UAC7Bg7I,EAAO,EACL99E,EAAKl9D,WAAao+I,EAAgBp+I,UACpCg7I,EAEAA,EAAO,ECtBH,SAASqD,EAAoB5F,EAAW4B,GACrD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI2nJ,EAAO8C,EAAerF,EAAW4B,GACjCiE,EAAkB,IAAIhgJ,KAAK,GAI/B,OAHAggJ,EAAgBL,YAAYjD,EAAM,EAAG,GACrCsD,EAAgBb,SAAS,EAAG,EAAG,EAAG,GACvBG,EAAeU,EAAiBjE,GCb9B,SAASkE,EAAY9F,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,EC3BT,IAAIshF,EAAsB,MAmCX,SAASC,EAA0BC,EAAeC,EAAgBtE,GAC/E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIurJ,EAAiBL,EAAWG,EAAerE,GAC3CwE,EAAkBN,EAAWI,EAAgBtE,GAE7CyE,EAAgBF,EAAe5+I,UACjCw4I,EAAgCoG,GAC9BG,EAAiBF,EAAgB7+I,UACnCw4I,EAAgCqG,GAKlC,OAAOl1I,KAAK+sD,OAAOooF,EAAgBC,GAAkBP,GCzBxC,SAASQ,EAAgBvG,EAAWwG,EAAkB5E,GACnE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBoC,EAAcrE,EAAU6G,GACxB1/G,EAAOk/G,EAAyBvhF,EAAMmhF,EAAmBnhF,EAAMm9E,GAAeA,GAC9EiE,EAAkB,IAAIhgJ,KAAK,GAK/B,OAJAggJ,EAAgBL,YAAYxB,EAAa,EAAG,GAC5C6B,EAAgBb,SAAS,EAAG,EAAG,EAAG,IAClCvgF,EAAOmhF,EAAmBC,EAAiBjE,IACtChsE,QAAQnR,EAAKoR,UAAY/uC,GACvB29B,ECfM,SAASgiF,EAAiBzG,EAAWuE,EAAa3C,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI4pJ,EAAS7E,EAAU4E,GACvB,OAAOgC,EAAevG,EAAWqF,EAAerF,EAAW4B,GAAgB4C,EAAQ5C,GC9BrF,IAAI9B,EAAyB,IAuBd,SAAS4G,EAAY1G,EAAWuE,EAAa3C,GAC1D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO6pJ,EAAgBzE,EADVL,EAAU4E,GACoBzE,EAAwB8B,GCVtD,SAAS+E,EAAgB3G,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cACZsB,EAAaniF,EAAKoiF,WAClBC,EAAiB,IAAIjhJ,KAAK,GAG9B,OAFAihJ,EAAetB,YAAYjD,EAAMqE,EAAa,EAAG,GACjDE,EAAe9B,SAAS,EAAG,EAAG,EAAG,GAC1B8B,EAAejxE,UCRT,SAASkxE,EAAW/G,EAAWuE,EAAa3C,GACzD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB4C,EAAS7E,EAAU4E,GACnByC,EAAeviF,EAAKoiF,WAAarC,EACjCyC,EAAuB,IAAIphJ,KAAK,GACpCohJ,EAAqBzB,YAAY/gF,EAAK6gF,cAAe0B,EAAc,GACnEC,EAAqBjC,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIkC,EAAcP,EAAeM,EAAsBrF,GAIvD,OADAn9E,EAAK0iF,SAASH,EAAc91I,KAAK2G,IAAIqvI,EAAaziF,EAAKoR,YAChDpR,EChBM,SAAS2iF,EAAapH,EAAWuE,EAAa3C,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAK7E,OAAOmsJ,EAAU/G,EADK,EADTL,EAAU4E,GAEa3C,GCPvB,SAASyF,EAAYrH,EAAWuE,EAAa3C,GAC1D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO6pJ,EAAgBzE,EAAoB,IAD9BL,EAAU4E,GAC0B3C,GCNpC,SAAS0F,EAAUtH,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAK7E,OAAO0pJ,EAAQtE,EADK,EADPL,EAAU4E,GAES3C,GCPnB,SAAS2F,EAAUvH,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAOmsJ,EAAU/G,EAAoB,GADxBL,EAAU4E,GACkB3C,GCK5B,SAAS4F,EAAyBC,EAAmBC,EAAoB9F,GACtF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+sJ,EAAeF,GAAqB,GACpCG,EAAgBF,GAAsB,GACtCG,EAAgBlG,EAAOgG,EAAa7tI,MAAO8nI,GAAcr6I,UACzDugJ,EAAcnG,EAAOgG,EAAanqI,IAAKokI,GAAcr6I,UACrDwgJ,EAAiBpG,EAAOiG,EAAc9tI,MAAO8nI,GAAcr6I,UAC3DygJ,EAAerG,EAAOiG,EAAcpqI,IAAKokI,GAAcr6I,UAG3D,KAAMsgJ,GAAiBC,GAAeC,GAAkBC,GACtD,MAAM,IAAIlG,WAAW,oBAGvB,OAAO+F,EAAgBG,GAAgBD,EAAiBD,ECvB3C,SAASG,EAAgBC,EAAoBC,EAAiBvG,GAC3E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIwtJ,EAAgBzG,EAAOuG,EAAoBtG,GAE/C,GAAI50H,MAAMo7H,GACR,OAAOvI,IAGT,IAgBIzkI,EACAitI,EAjBAC,EAAgBF,EAAc7gJ,UAkClC,OA9BuB,MAAnB4gJ,EACW,GAG+B,mBAA5BA,EAAgB7nJ,QACnB6nJ,EAIAtsJ,MAAM1B,UAAUiE,MAAM1F,KAAKyvJ,IAK/B7nJ,QAAQ,SAAU0/I,EAAWhyH,GACtC,IAAIu6H,EAAc5G,EAAO3B,EAAW4B,GAEpC,GAAI50H,MAAMu7H,GAGR,OAFAntI,EAASykI,SACTwI,EAAcxI,KAIhB,IAAI2I,EAAWt3I,KAAKgvB,IAAIooH,EAAgBC,EAAYhhJ,YACtC,MAAV6T,GAAkBotI,EAAWH,KAC/BjtI,EAAS4S,EACTq6H,EAAcG,KAIXptI,EC/CM,SAASqtI,EAAWP,EAAoBC,EAAiBvG,GACtE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIwtJ,EAAgBzG,EAAOuG,EAAoBtG,GAE/C,GAAI50H,MAAMo7H,GACR,OAAO,IAAIviJ,KAAKg6I,KAGlB,IAgBIzkI,EACAitI,EAjBAC,EAAgBF,EAAc7gJ,UAkClC,OA9BuB,MAAnB4gJ,EACW,GAG+B,mBAA5BA,EAAgB7nJ,QACnB6nJ,EAIAtsJ,MAAM1B,UAAUiE,MAAM1F,KAAKyvJ,IAK/B7nJ,QAAQ,SAAU0/I,GAC3B,IAAIuI,EAAc5G,EAAO3B,EAAW4B,GAEpC,GAAI50H,MAAMu7H,GAGR,OAFAntI,EAAS,IAAIvV,KAAKg6I,UAClBwI,EAAcxI,KAIhB,IAAI2I,EAAWt3I,KAAKgvB,IAAIooH,EAAgBC,EAAYhhJ,YACtC,MAAV6T,GAAkBotI,EAAWH,KAC/BjtI,EAASmtI,EACTF,EAAcG,KAIXptI,EChCM,SAASstI,EAAYzC,EAAeC,EAAgBtE,GACjE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC96G,EAAO6hH,EAASphJ,UAAYqhJ,EAAUrhJ,UAE1C,OAAIu/B,EAAO,GACD,EACCA,EAAO,EACT,EAGAA,EChBI,SAAS+hH,EAAa5C,EAAeC,EAAgBtE,GAClE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC96G,EAAO6hH,EAASphJ,UAAYqhJ,EAAUrhJ,UAE1C,OAAIu/B,EAAO,GACD,EACCA,EAAO,EACT,EAGAA,EC5BI,SAASgiH,EAAkC7C,EAAeC,EAAgBtE,GACvF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,OAAOyqJ,EAAeY,EAAerE,GAAgByD,EAAea,EAAgBtE,GC9BtF,IAAImH,EAAuB,OA4BZ,SAASC,EAA8B/C,EAAeC,EAAgBtE,GACnF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIquJ,EAAqB9D,EAAec,EAAerE,GACnDsH,EAAsB/D,EAAee,EAAgBtE,GAErDyE,EAAgB4C,EAAmB1hJ,UACrCw4I,EAAgCkJ,GAC9B3C,EAAiB4C,EAAoB3hJ,UACvCw4I,EAAgCmJ,GAKlC,OAAOh4I,KAAK+sD,OAAOooF,EAAgBC,GAAkByC,GCrBxC,SAASI,EAA4BlD,EAAeC,EAAgBtE,GACjF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAKvC,OAAkB,IAHH+G,EAASrD,cAAgBsD,EAAUtD,gBAClCqD,EAAS9B,WAAa+B,EAAU/B,YCbnC,SAASuC,EAAYpJ,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADc1wI,KAAKC,MAAMszD,EAAKoiF,WAAa,GAAK,ECDnC,SAASwC,EAA8BpD,EAAeC,EAAgBtE,GACnF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAKvC,OAAkB,GAHH+G,EAASrD,cAAgBsD,EAAUtD,gBAChC8D,EAAWT,EAAU/G,GAAgBwH,EAAWR,EAAWhH,ICjC/E,IAAImH,EAAuB,OAuCZ,SAASO,EAA2BrD,EAAeC,EAAgBtE,GAChF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI2uJ,EAAkB5E,EAAYsB,EAAerE,GAC7C4H,EAAmB7E,EAAYuB,EAAgBtE,GAE/CyE,EAAgBkD,EAAgBhiJ,UAClCw4I,EAAgCwJ,GAC9BjD,EAAiBkD,EAAiBjiJ,UACpCw4I,EAAgCyJ,GAKlC,OAAOt4I,KAAK+sD,OAAOooF,EAAgBC,GAAkByC,GChCxC,SAASU,GAA2BxD,EAAeC,EAAgBtE,GAChF,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEvC,OAAO+G,EAASrD,cAAgBsD,EAAUtD,cCE7B,SAASoE,GAAkBzD,EAAeC,EAAgBtE,GACvE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC+H,EAAOjB,EAAWC,EAAUC,EAAWhH,GACvCgI,EAAa14I,KAAKgvB,IAAI8lH,EAAyB2C,EAAUC,EAAWhH,IAExE+G,EAAS/yE,QAAQ+yE,EAAS9yE,UAAY8zE,EAAOC,GAI7C,IACIxuI,EAASuuI,GAAQC,GADElB,EAAWC,EAAUC,EAAWhH,MAAmB+H,IAG1E,OAAkB,IAAXvuI,EAAe,EAAIA,EC3Bb,SAASyuI,GAA0B5D,EAAeC,EAAgBtE,GAC/E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GACvC,OAAO+G,EAASphJ,UAAYqhJ,EAAUrhJ,UChCxC,IAAI84I,GAAuB,KA0BZ,SAASyJ,GAAmB7D,EAAeC,EAAgBtE,GACxE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIksC,EAAO+iH,GAAyB5D,EAAeC,EAAgBtE,GAAgBvB,GACnF,OAAOv5G,EAAO,EAAI51B,KAAKC,MAAM21B,GAAQ51B,KAAK42B,KAAKhB,GCRlC,SAASijH,GAAiB/J,EAAWuE,EAAa3C,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO6rJ,EAAgBzG,GADVL,EAAU4E,GACoB3C,GCD9B,SAASoI,GAA0B/D,EAAeC,EAAgBtE,GAC/E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC+H,EAAOjB,EAAWC,EAAUC,EAAWhH,GACvCgI,EAAa14I,KAAKgvB,IAAI4oH,EAAiCH,EAAUC,EAAWhH,IAO5ExmI,EAASuuI,GAAQC,GADUlB,EAL/BC,EAAWoB,GAAgBpB,EAAUgB,EAAOC,EAAYhI,GAKJgH,EAAWhH,MAAmB+H,IAGlF,OAAkB,IAAXvuI,EAAe,EAAIA,EC/C5B,IAAI0kI,GAAyB,IA0Bd,SAASmK,GAAqBhE,EAAeC,EAAgBtE,GAC1E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIksC,EAAO+iH,GAAyB5D,EAAeC,EAAgBtE,GAAgB9B,GACnF,OAAOh5G,EAAO,EAAI51B,KAAKC,MAAM21B,GAAQ51B,KAAK42B,KAAKhB,GCNlC,SAASojH,GAAoBjE,EAAeC,EAAgBtE,GACzE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC+H,EAAOjB,EAAWC,EAAUC,EAAWhH,GACvCgI,EAAa14I,KAAKgvB,IAAIipH,EAA2BR,EAAUC,EAAWhH,IAC1E+G,EAASxB,SAASwB,EAAS9B,WAAa8C,EAAOC,GAI/C,IACIxuI,EAASuuI,GAAQC,GADIlB,EAAWC,EAAUC,EAAWhH,MAAmB+H,IAG5E,OAAkB,IAAXvuI,EAAe,EAAIA,ECnBb,SAAS+uI,GAAsBlE,EAAeC,EAAgBtE,GAC3E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIksC,EAAOojH,GAAmBjE,EAAeC,EAAgBtE,GAAgB,EAC7E,OAAO96G,EAAO,EAAI51B,KAAKC,MAAM21B,GAAQ51B,KAAK42B,KAAKhB,GCLlC,SAASsjH,GAAqBnE,EAAeC,EAAgBtE,GAC1E,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIksC,EAAO+iH,GAAyB5D,EAAeC,EAAgBtE,GAAgB,IACnF,OAAO96G,EAAO,EAAI51B,KAAKC,MAAM21B,GAAQ51B,KAAK42B,KAAKhB,GCPlC,SAASujH,GAAmBpE,EAAeC,EAAgBtE,GACxE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIksC,EAAO4iH,GAAiBzD,EAAeC,EAAgBtE,GAAgB,EAC3E,OAAO96G,EAAO,EAAI51B,KAAKC,MAAM21B,GAAQ51B,KAAK42B,KAAKhB,GCJlC,SAASwjH,GAAmBrE,EAAeC,EAAgBtE,GACxE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GAEnC+H,EAAOjB,EAAWC,EAAUC,EAAWhH,GACvCgI,EAAa14I,KAAKgvB,IAAIupH,GAA0Bd,EAAUC,EAAWhH,IACzE+G,EAASnD,YAAYmD,EAASrD,cAAgBqE,EAAOC,GAIrD,IACIxuI,EAASuuI,GAAQC,GADGlB,EAAWC,EAAUC,EAAWhH,MAAmB+H,IAG3E,OAAkB,IAAXvuI,EAAe,EAAIA,ECZb,SAASmvI,GAAmBC,EAAe5I,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAImqI,EAAWylB,GAAiB,GAC5BC,EAAY9I,EAAO5c,EAASjrH,MAAO8nI,GAGnC94I,EAFU64I,EAAO5c,EAASvnH,IAAKokI,GAEbr6I,UAGtB,KAAMkjJ,EAAUljJ,WAAauB,GAC3B,MAAM,IAAIg5I,WAAW,oBAGvB,IAAI4I,EAAQ,GAERnC,EAAckC,EAGlB,IAFAlC,EAAYvD,SAAS,EAAG,EAAG,EAAG,GAEvBuD,EAAYhhJ,WAAauB,GAC9B4hJ,EAAM9uJ,KAAK+lJ,EAAO4G,EAAa3G,IAC/B2G,EAAY3yE,QAAQ2yE,EAAY1yE,UAAY,GAG9C,OAAO60E,ECpBM,SAASC,GAAoBH,EAAe5I,GACzD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAImqI,EAAWylB,GAAiB,GAC5BC,EAAY9I,EAAO5c,EAASjrH,MAAO8nI,GACnCgJ,EAAUjJ,EAAO5c,EAASvnH,IAAKokI,GAE/B94I,EAAU8hJ,EAAQrjJ,UAGtB,KAAMkjJ,EAAUljJ,WAAauB,GAC3B,MAAM,IAAIg5I,WAAW,oBAGvB,IAAI+I,EAAgBlG,EAAY8F,EAAW7I,GACvCkJ,EAAcnG,EAAYiG,EAAShJ,GAGvCiJ,EAAc7F,SAAS,IACvB8F,EAAY9F,SAAS,IAErBl8I,EAAUgiJ,EAAYvjJ,UAMtB,IAJA,IAAIwjJ,EAAQ,GAERC,EAAcH,EAEXG,EAAYzjJ,WAAauB,GAC9BkiJ,EAAYhG,SAAS,GACrB+F,EAAMnvJ,KAAK+lJ,EAAOqJ,EAAapJ,KAC/BoJ,EAAc1D,EAAS0D,EAAa,IACxBhG,SAAS,IAGvB,OAAO+F,ECrDM,SAASE,GAAUjL,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCL1B,SAASmG,GAAWlL,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IACIqoJ,EADOtB,EAAO3B,EAAW4B,GACdmD,SACf,OAAe,IAAR9B,GAAqB,IAARA,ECeP,SAASkI,GAAsBX,EAAe5I,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,iCAAmC5P,UAAUC,OAAS,YAI1D,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EACF7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aACzCC,EACoB,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACzCC,EACsB,MAAxBjiJ,EAAQiiJ,aACJC,EACAnF,EAAU/8I,EAAQiiJ,cAGxB,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAI/c,EAAWylB,GAAiB,GAC5BC,EAAY9I,EAAO5c,EAASjrH,MAAO8nI,GAEnC94I,EADU64I,EAAO5c,EAASvnH,IAAKokI,GACbr6I,UAGtB,KAAMkjJ,EAAUljJ,WAAauB,GAC3B,MAAM,IAAIg5I,WAAW,oBAMvB,IAHA,IAAIsJ,EAAeb,GAAkBxlB,GACjCsmB,EAAW,GACXr9H,EAAQ,EACLA,IAAUo9H,EAAaxwJ,QAAQ,CACpC,IAAI6pE,EAAO2mF,EAAap9H,GACpBk9H,GAAUzmF,KACZ4mF,EAASzvJ,KAAK,IAAIiK,KAAK4+D,IACnBwmF,GAASxmF,KACXz2C,GAAgB,IAItB,OAAOq9H,EClEM,SAASC,GAActL,EAAW4B,GAC/C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAG7B,OAFAn9E,EAAKmR,QAAQ,GACbnR,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECRM,SAAS8mF,GAAYvL,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBtsD,EAAQ7wB,EAAKoiF,WAGjB,OAFApiF,EAAK+gF,YAAY/gF,EAAK6gF,cAAehwD,EAAQ,EAAG,GAChD7wB,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,ECHM,SAAS+mF,GAAmBxL,EAAW4B,GACpD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,kCAAoC5P,UAAUC,OAAS,YAM3D,OAAOuwJ,GAAsB,CAAErxI,MAFfwxI,GAAatL,EAAW4B,GAESpkI,IADnC+tI,GAAWvL,EAAW4B,KCdvB,SAAS6J,GAAazL,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI8wJ,EAAY/J,EAAO3B,EAAW4B,GAC9Bn9E,EAAO,IAAI5+D,KAAK,GAGpB,OAFA4+D,EAAK+gF,YAAYkG,EAAUpG,cAAe,EAAG,GAC7C7gF,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECTM,SAASknF,GAAW3L,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cAGhB,OAFA7gF,EAAK+gF,YAAYjD,EAAO,EAAG,EAAG,GAC9B99E,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,ECHM,SAASmnF,GAAkB5L,EAAW4B,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,kCAAoC5P,UAAUC,OAAS,YAM3D,OAAOuwJ,GAAsB,CAAErxI,MAFf2xI,GAAYzL,EAAW4B,GAEUpkI,IADnCmuI,GAAU3L,EAAW4B,KCdtB,SAASiK,GAAU7L,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,ECRM,SAASqnF,GAAa9L,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cACZyG,EAAS,EAA4B,GAAxB76I,KAAKC,MAAMoxI,EAAO,IAGnC,OAFA99E,EAAK+gF,YAAYuG,EAAQ,GAAI,IAC7BtnF,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,ECTM,SAASunF,GAAWhM,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAKwnF,WAAW,GAAI,GAAI,KACjBxnF,ECEM,SAASynF,GAAWlM,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAE1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAWp9I,GACzBqgJ,EAAMx+E,EAAKsgF,SACXj+G,EAAuC,GAA/Bm8G,EAAM4B,GAAgB,EAAI,IAAU5B,EAAM4B,GAItD,OAFApgF,EAAKmR,QAAQnR,EAAKoR,UAAY/uC,GAC9B29B,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,EC7BM,SAAS0nF,GAAcnM,EAAW4B,GAC/C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIwxJ,EAAmBnH,EAAYrD,GAEnC,OADAwK,EAAiBvH,aAAe,EACzBqH,GAAUlM,EAAWoM,GCNf,SAASC,GAAkBrM,EAAW4B,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI2nJ,EAAO8C,EAAerF,EAAW4B,GACjC2D,EAA4B,IAAI1/I,KAAK,GACzC0/I,EAA0BC,YAAYjD,EAAO,EAAG,EAAG,GACnDgD,EAA0BP,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIvgF,EAAO0gF,EAAeI,EAA2B3D,GAErD,OADAn9E,EAAK6nF,gBAAgB7nF,EAAK8nF,kBAAoB,GACvC9nF,ECfM,SAAS+nF,GAAaxM,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAK07E,WAAW,GAAI,KACb17E,ECPM,SAASgoF,GAAczM,EAAW4B,GAC/C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB8K,EAAejoF,EAAKoiF,WACpBvxD,EAAQo3D,EAAeA,EAAe,EAAI,EAG9C,OAFAjoF,EAAK0iF,SAAS7xD,EAAO,GACrB7wB,EAAKugF,SAAS,GAAI,GAAI,GAAI,KACnBvgF,ECVM,SAASkoF,GAAa3M,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAK6nF,gBAAgB,KACd7nF,ECMM,SAASH,GAAS07E,EAAW4B,GAC1C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAC7B,OAAQ50H,MAAMy3C,GC1ChB,IAAImoF,GAAuB,CACzBC,iBAAkB,CAChBjxB,IAAK,qBACLkxB,MAAO,+BAGTC,SAAU,CACRnxB,IAAK,WACLkxB,MAAO,qBAGTE,YAAa,gBAEbC,iBAAkB,CAChBrxB,IAAK,qBACLkxB,MAAO,+BAGTI,SAAU,CACRtxB,IAAK,WACLkxB,MAAO,qBAGTK,YAAa,CACXvxB,IAAK,eACLkxB,MAAO,yBAGTM,OAAQ,CACNxxB,IAAK,SACLkxB,MAAO,mBAGTO,MAAO,CACLzxB,IAAK,QACLkxB,MAAO,kBAGTQ,aAAc,CACZ1xB,IAAK,gBACLkxB,MAAO,0BAGTS,QAAS,CACP3xB,IAAK,UACLkxB,MAAO,oBAGTU,YAAa,CACX5xB,IAAK,eACLkxB,MAAO,yBAGTW,OAAQ,CACN7xB,IAAK,SACLkxB,MAAO,mBAGTY,WAAY,CACV9xB,IAAK,cACLkxB,MAAO,wBAGTa,aAAc,CACZ/xB,IAAK,gBACLkxB,MAAO,2BCjEI,SAASc,GAAmBtwJ,GACzC,OAAO,SAAUskJ,GACf,IAAIh/I,EAAUg/I,GAAgB,GAC1BriJ,EAAQqD,EAAQrD,MAAQkL,OAAO7H,EAAQrD,OAASjC,EAAKuwJ,aAEzD,OADavwJ,EAAKwwJ,QAAQvuJ,IAAUjC,EAAKwwJ,QAAQxwJ,EAAKuwJ,eCF1D,IAqBIE,GAAa,CACftpF,KAAMmpF,GAAkB,CACtBE,QAvBc,CAChBE,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAoBLN,aAAc,SAGhB3xE,KAAM0xE,GAAkB,CACtBE,QArBc,CAChBE,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAkBLN,aAAc,SAGhBz4I,SAAUw4I,GAAkB,CAC1BE,QAnBkB,CACpBE,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAgBLN,aAAc,UCpCdO,GAAuB,CACzBC,SAAU,qBACVC,UAAW,mBACXC,MAAO,eACPC,SAAU,kBACVC,SAAU,cACV3B,MAAO,KCNM,SAAS4B,GAAiBpxJ,GACvC,OAAO,SAAUqxJ,EAAY/M,GAC3B,IAAIh/I,EAAUg/I,GAAgB,GAC1BriJ,EAAQqD,EAAQrD,MAAQkL,OAAO7H,EAAQrD,OAASjC,EAAKuwJ,aAUzD,OANgB,gBAHFjrJ,EAAQm7E,QAAUtzE,OAAO7H,EAAQm7E,SAAW,eAG1BzgF,EAAKsxJ,iBACrBtxJ,EAAKsxJ,iBAAiBrvJ,IAAUjC,EAAKsxJ,iBAAiBtxJ,EAAKuxJ,wBAE3DvxJ,EAAKmoB,OAAOlmB,IAAUjC,EAAKmoB,OAAOnoB,EAAKuwJ,eAE3CvwJ,EAAKwxJ,iBAAmBxxJ,EAAKwxJ,iBAAiBH,GAAcA,ICZ7D,SAASI,GAAczxJ,GACpC,OAAO,SAAU0xJ,EAAapN,GAC5B,IAAIv0I,EAAS5C,OAAOukJ,GAChBpsJ,EAAUg/I,GAAgB,GAC1BriJ,EAAQqD,EAAQrD,MAEhB0vJ,EAAgB1vJ,GAASjC,EAAK4xJ,cAAc3vJ,IAAWjC,EAAK4xJ,cAAc5xJ,EAAK6xJ,mBAC/EC,EAAc/hJ,EAAO4f,MAAMgiI,GAE/B,IAAKG,EACH,OAAO,KAET,IAII51J,EAJA61J,EAAgBD,EAAY,GAE5BE,EAAiB/vJ,GAASjC,EAAKgyJ,cAAc/vJ,IAAWjC,EAAKgyJ,cAAchyJ,EAAKiyJ,mBAgBpF,OAZE/1J,EADoD,mBAAlDP,OAAOkB,UAAU2gB,SAASpiB,KAAK42J,GACzBA,EAAc1kI,UAAU,SAAUxS,GACxC,OAAOA,EAAQ9Z,KAAK+O,KAkB5B,SAAkBpT,EAAQ4wB,GACxB,IAAK,IAAI/wB,KAAOG,EACd,GAAIA,EAAOG,eAAeN,IAAQ+wB,EAAU5wB,EAAOH,IACjD,OAAOA,EAlBC01J,CAAQF,EAAe,SAAUl3I,GACvC,OAAOA,EAAQ9Z,KAAK+O,KAIxB7T,EAAQ8D,EAAKmyJ,cAAgBnyJ,EAAKmyJ,cAAcj2J,GAASA,EAGlD,CACLA,MAHFA,EAAQoJ,EAAQ6sJ,cAAgB7sJ,EAAQ6sJ,cAAcj2J,GAASA,EAI7Dk2J,KAAMriJ,EAAOjP,MAAMixJ,EAAcz0J,UC7BvC,ICH6C0C,GC2B9By3C,GAZF,CACX46G,eRqDa,SAAyB3oE,EAAO/6B,EAAOrpD,GAGpD,IAAIwY,EASJ,OAXAxY,EAAUA,GAAW,GAInBwY,EADyC,iBAAhCwxI,GAAqB5lE,GACrB4lE,GAAqB5lE,GACX,IAAV/6B,EACA2gG,GAAqB5lE,GAAO40C,IAE5BgxB,GAAqB5lE,GAAO8lE,MAAMtvJ,QAAQ,YAAayuD,GAG9DrpD,EAAQgtJ,UACNhtJ,EAAQitJ,WAAa,EAChB,MAAQz0I,EAERA,EAAS,OAIbA,GQxEP2yI,WNuBaA,GMtBb+B,eLTa,SAAyB9oE,EAAOviB,EAAMsrF,EAAUntJ,GAC7D,OAAOwrJ,GAAqBpnE,IKS5BxvD,SCwGa,CACbw4H,cA5BF,SAAwBpQ,EAAagC,GACnC,IAAIrnF,EAASxO,OAAO6zF,GAYhBqQ,EAAS11F,EAAS,IACtB,GAAI01F,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAO11F,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,MAMhB21F,IAAKxB,GAAgB,CACnBjpI,OA7HY,CACd0qI,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBA2HtBxC,aAAc,SAGhByC,QAAS5B,GAAgB,CACvBjpI,OA5HgB,CAClB0qI,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBA0HlDxC,aAAc,OACdiB,iBAAkB,SAAUwB,GAC1B,OAAOvkG,OAAOukG,GAAW,KAI7Bh7D,MAAOo5D,GAAgB,CACrBjpI,OA1Hc,CAChB0qI,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAwHnHxC,aAAc,SAGhB5K,IAAKyL,GAAgB,CACnBjpI,OAzHY,CACd0qI,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvChC,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CiC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAsHvExC,aAAc,SAGhB0C,UAAW7B,GAAgB,CACzBjpI,OAvHkB,CACpB0qI,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UA2FPlD,aAAc,OACde,iBAzF4B,CAC9BuB,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aA6DPC,sBAAuB,UDrIzB/jI,MF0CU,CACV+iI,eC/D2C1yJ,GD+DR,CACjC2xJ,aA7D4B,wBA8D5BgC,aA7D4B,OA8D5BxB,cAAe,SAAUj2J,GACvB,OAAO6V,SAAS7V,EAAO,MClEpB,SAAUw1J,EAAapN,GAC5B,IAAIv0I,EAAS5C,OAAOukJ,GAChBpsJ,EAAUg/I,GAAgB,GAE1BwN,EAAc/hJ,EAAO4f,MAAM3vB,GAAK2xJ,cACpC,IAAKG,EACH,OAAO,KAET,IAAIC,EAAgBD,EAAY,GAE5B8B,EAAc7jJ,EAAO4f,MAAM3vB,GAAK2zJ,cACpC,IAAKC,EACH,OAAO,KAET,IAAI13J,EAAQ8D,GAAKmyJ,cAAgBnyJ,GAAKmyJ,cAAcyB,EAAY,IAAMA,EAAY,GAGlF,MAAO,CACL13J,MAHFA,EAAQoJ,EAAQ6sJ,cAAgB7sJ,EAAQ6sJ,cAAcj2J,GAASA,EAI7Dk2J,KAAMriJ,EAAOjP,MAAMixJ,EAAcz0J,WDmDrCs1J,IAAKnB,GAAa,CAChBG,cAlEmB,CACrBiB,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DAgEJlB,kBAAmB,OACnBG,cA/DmB,CACrBtsC,IAAK,CAAC,MAAO,YA+DXusC,kBAAmB,QAGrBe,QAASvB,GAAa,CACpBG,cAhEuB,CACzBiB,OAAQ,WACRC,YAAa,YACbC,KAAM,kCA8DJlB,kBAAmB,OACnBG,cA7DuB,CACzBtsC,IAAK,CAAC,KAAM,KAAM,KAAM,OA6DtBusC,kBAAmB,MACnBE,cAAe,SAAUzhI,GACvB,OAAOA,EAAQ,KAInBsnE,MAAOy5D,GAAa,CAClBG,cAjEqB,CACvBiB,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FA+DJlB,kBAAmB,OACnBG,cA9DqB,CACvBa,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtFntC,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QA6D5FusC,kBAAmB,QAGrBtM,IAAK8L,GAAa,CAChBG,cA9DmB,CACrBiB,OAAQ,YACRhC,MAAO,2BACPiC,YAAa,kCACbC,KAAM,gEA2DJlB,kBAAmB,OACnBG,cA1DmB,CACrBa,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnDntC,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAyDjDusC,kBAAmB,QAGrBgB,UAAWxB,GAAa,CACtBG,cA1DyB,CAC3BiB,OAAQ,6DACRntC,IAAK,kFAyDHmsC,kBAAmB,MACnBG,cAxDyB,CAC3BtsC,IAAK,CACHwtC,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WAgDPxB,kBAAmB,SErFrB3sJ,QAAS,CACPiiJ,aAAc,EACdsM,sBAAuB,IErBvBpL,GAAsB,MCEX,SAASqL,GAAmBpR,EAAW4B,GACpD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAEI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBqB,EAAMx+E,EAAKw/E,YACXn9G,GAAQm8G,EAJO,EAIc,EAAI,GAAKA,EAJvB,EAQnB,OAFAx+E,EAAKy/E,WAAWz/E,EAAK0/E,aAAer9G,GACpC29B,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,ECZM,SAAS6sF,GAAmBtR,EAAW4B,GACpD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK8sF,iBAEZhM,EAA4B,IAAI1/I,KAAK,GACzC0/I,EAA0B5C,eAAeJ,EAAO,EAAG,EAAG,GACtDgD,EAA0B8L,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAI5L,EAAkB2L,GAAkB7L,EAA2B3D,GAE/D8D,EAA4B,IAAI7/I,KAAK,GACzC6/I,EAA0B/C,eAAeJ,EAAM,EAAG,GAClDmD,EAA0B2L,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAI1L,EAAkByL,GAAkB1L,EAA2B9D,GAEnE,OAAIn9E,EAAKl9D,WAAak+I,EAAgBl+I,UAC7Bg7I,EAAO,EACL99E,EAAKl9D,WAAao+I,EAAgBp+I,UACpCg7I,EAEAA,EAAO,ECxBlB,IAAIwG,GAAuB,OAIZ,SAASyI,GAAexR,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB96G,EAAOsqH,GAAkB3sF,EAAMm9E,GAAcr6I,UCTpC,SAAgCy4I,EAAW4B,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI2nJ,EAAO+O,GAAkBtR,EAAW4B,GACpCiE,EAAkB,IAAIhgJ,KAAK,GAI/B,OAHAggJ,EAAgBlD,eAAeJ,EAAM,EAAG,GACxCsD,EAAgBwL,YAAY,EAAG,EAAG,EAAG,GAC1BD,GAAkBvL,EAAiBjE,GDAe6P,CAAsBhtF,EAAMm9E,GAAcr6I,UAKvG,OAAO2J,KAAK+sD,MAAMn3B,EAAOiiH,IAAwB,EEdpC,SAAS2I,GAAgB1R,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAWp9I,GACzBqgJ,EAAMx+E,EAAKw/E,YACXn9G,GAAQm8G,EAAM4B,EAAe,EAAI,GAAK5B,EAAM4B,EAIhD,OAFApgF,EAAKy/E,WAAWz/E,EAAK0/E,aAAer9G,GACpC29B,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,ECrBM,SAASktF,GAAgB3R,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK8sF,iBAEZ3uJ,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB68G,EAA8B78G,GAChCA,EAAOnyC,SACPmyC,EAAOnyC,QAAQuuJ,sBACbU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIrP,WAAW,6DAGvB,IAAIgQ,EAAsB,IAAIjsJ,KAAK,GACnCisJ,EAAoBnP,eAAeJ,EAAO,EAAG,EAAG4O,GAChDW,EAAoBT,YAAY,EAAG,EAAG,EAAG,GACzC,IAAI5L,EAAkBiM,GAAeI,EAAqBlQ,GAEtDmQ,EAAsB,IAAIlsJ,KAAK,GACnCksJ,EAAoBpP,eAAeJ,EAAM,EAAG4O,GAC5CY,EAAoBV,YAAY,EAAG,EAAG,EAAG,GACzC,IAAI1L,EAAkB+L,GAAeK,EAAqBnQ,GAE1D,OAAIn9E,EAAKl9D,WAAak+I,EAAgBl+I,UAC7Bg7I,EAAO,EACL99E,EAAKl9D,WAAao+I,EAAgBp+I,UACpCg7I,EAEAA,EAAO,EC5ClB,IAAIwG,GAAuB,OAIZ,SAASiJ,GAAYhS,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB96G,EAAO4qH,GAAejtF,EAAMm9E,GAAcr6I,UCRjC,SAA6By4I,EAAW4B,GACrD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB68G,EAA8B78G,GAChCA,EAAOnyC,SACPmyC,EAAOnyC,QAAQuuJ,sBACbU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAEpB5O,EAAOoP,GAAe3R,EAAW4B,GACjCqQ,EAAY,IAAIpsJ,KAAK,GAIzB,OAHAosJ,EAAUtP,eAAeJ,EAAM,EAAG4O,GAClCc,EAAUZ,YAAY,EAAG,EAAG,EAAG,GACpBK,GAAeO,EAAWrQ,GDfqBsQ,CAAmBztF,EAAMm9E,GAAcr6I,UAKjG,OAAO2J,KAAK+sD,MAAMn3B,EAAOiiH,IAAwB,EEbnD,IAAIoJ,GAGQ,WAHRA,GAII,OAJJA,GAKO,UALPA,GAMS,YANTA,GAOO,UAPPA,GAQK,QAqpBT,SAASC,GAAiB73F,EAAQ83F,GAGhC,IAFA,IAAI1I,EAAOpvF,EAAS,EAAI,IAAM,GAC1BpwC,EAASjZ,KAAKgvB,IAAIq6B,GAAQz/C,WACvBqP,EAAOvvB,OAASy3J,GACrBloI,EAAS,IAAMA,EAEjB,OAAOw/H,EAAOx/H,EAGhB,SAASmoI,GAAgBhyI,EAAQiyI,GAC/B,IAAIC,EAAYD,GAAkB,GAC9B5I,EAAOrpI,EAAS,EAAI,IAAM,IAC1BmyI,EAAYvhJ,KAAKgvB,IAAI5f,GAGzB,OAAOqpI,EAFKyI,GAAgBlhJ,KAAKC,MAAMshJ,EAAY,IAAK,GAElCD,EADRJ,GAAgBK,EAAY,GAAI,GAIhD,SAASC,GAAmCpyI,EAAQiyI,GAClD,OAAIjyI,EAAS,IAAO,GACPA,EAAS,EAAI,IAAM,KAChB8xI,GAAgBlhJ,KAAKgvB,IAAI5f,GAAU,GAAI,GAEhDgyI,GAAehyI,EAAQiyI,GAGhC,SAASI,GAAqBryI,EAAQiyI,GACpC,IAAI5I,EAAOrpI,EAAS,EAAI,IAAM,IAC1BmyI,EAAYvhJ,KAAKgvB,IAAI5f,GACrBijI,EAAQryI,KAAKC,MAAMshJ,EAAY,IAC/BjP,EAAUiP,EAAY,GAC1B,GAAgB,IAAZjP,EACF,OAAOmG,EAAOl/I,OAAO84I,GAEvB,IAAIiP,EAAYD,GAAkB,GAClC,OAAO5I,EAAOl/I,OAAO84I,GAASiP,EAAYJ,GAAgB5O,EAAS,GAGtDxhF,OA1oBE,CAEfinB,EAAG,SAAUxkB,EAAMuiB,EAAOxvD,GACxB,IAAI04H,EAAMzrF,EAAK8sF,iBAAmB,EAAI,EAAI,EAC1C,OAAQvqE,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOxvD,EAAS04H,IAAIA,EAAK,CAAC3wJ,MAAO,gBAEnC,IAAK,QACH,OAAOi4B,EAAS04H,IAAIA,EAAK,CAAC3wJ,MAAO,WAEnC,IAAK,OACL,QACE,OAAOi4B,EAAS04H,IAAIA,EAAK,CAAC3wJ,MAAO,WAKvCgnB,EAAG,SAAUk+C,EAAMuiB,EAAOxvD,EAAU50B,GAUlC,IAAIgwJ,EAAanuF,EAAK8sF,iBAGlBhP,EAAOqQ,EAAa,EAAIA,EAAa,EAAIA,EAG7C,MAAc,OAAV5rE,EAEKorE,GADY7P,EAAO,IACW,GAIzB,OAAVv7D,EACKxvD,EAASw4H,cAAczN,EAAM,CAAC9rF,KAAM,SAItC27F,GAAgB7P,EAAMv7D,EAAMpsF,SAIrCqyF,EAAG,SAAUxoB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIiwJ,EAAiBlB,GAAeltF,EAAM7hE,GACtCkwJ,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAGzD,MAAc,OAAV7rE,EAEKorE,GADYU,EAAW,IACO,GAIzB,OAAV9rE,EACKxvD,EAASw4H,cAAc8C,EAAU,CAACr8F,KAAM,SAI1C27F,GAAgBU,EAAU9rE,EAAMpsF,SAIzCsvF,EAAG,SAAUzlB,EAAMuiB,EAAOxvD,EAAU50B,GAIlC,OAAOwvJ,GAHWd,GAAkB7sF,EAAM7hE,GAGNokF,EAAMpsF,SAY5CitF,EAAG,SAAUpjB,EAAMuiB,EAAOxvD,EAAU50B,GAElC,OAAOwvJ,GADI3tF,EAAK8sF,iBACavqE,EAAMpsF,SAIrCovF,EAAG,SAAUvlB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI0tJ,EAAUp/I,KAAK42B,MAAM28B,EAAKsuF,cAAgB,GAAK,GACnD,OAAQ/rE,GAEN,IAAK,IACH,OAAOv8E,OAAO6lJ,GAEhB,IAAK,KACH,OAAO8B,GAAgB9B,EAAS,GAElC,IAAK,KACH,OAAO94H,EAASw4H,cAAcM,EAAS,CAAC75F,KAAM,YAEhD,IAAK,MACH,OAAOj/B,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,cAAew+E,QAAS,eAEnE,IAAK,QACH,OAAOvmD,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,SAAUw+E,QAAS,eAE9D,IAAK,OACL,QACE,OAAOvmD,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,OAAQw+E,QAAS,iBAKhE6J,EAAG,SAAUnjB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI0tJ,EAAUp/I,KAAK42B,MAAM28B,EAAKsuF,cAAgB,GAAK,GACnD,OAAQ/rE,GAEN,IAAK,IACH,OAAOv8E,OAAO6lJ,GAEhB,IAAK,KACH,OAAO8B,GAAgB9B,EAAS,GAElC,IAAK,KACH,OAAO94H,EAASw4H,cAAcM,EAAS,CAAC75F,KAAM,YAEhD,IAAK,MACH,OAAOj/B,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,cAAew+E,QAAS,eAEnE,IAAK,QACH,OAAOvmD,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,SAAUw+E,QAAS,eAE9D,IAAK,OACL,QACE,OAAOvmD,EAAS84H,QAAQA,EAAS,CAAC/wJ,MAAO,OAAQw+E,QAAS,iBAKhE4L,EAAG,SAAUllB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI0yF,EAAQ7wB,EAAKsuF,cACjB,OAAQ/rE,GAEN,IAAK,IACH,OAAOv8E,OAAO6qF,EAAQ,GAExB,IAAK,KACH,OAAO88D,GAAgB98D,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAO99D,EAASw4H,cAAc16D,EAAQ,EAAG,CAAC7+B,KAAM,UAElD,IAAK,MACH,OAAOj/B,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,cAAew+E,QAAS,eAE/D,IAAK,QACH,OAAOvmD,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,SAAUw+E,QAAS,eAE1D,IAAK,OACL,QACE,OAAOvmD,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,OAAQw+E,QAAS,iBAK5DpB,EAAG,SAAUlY,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI0yF,EAAQ7wB,EAAKsuF,cACjB,OAAQ/rE,GAEN,IAAK,IACH,OAAOv8E,OAAO6qF,EAAQ,GAExB,IAAK,KACH,OAAO88D,GAAgB98D,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAO99D,EAASw4H,cAAc16D,EAAQ,EAAG,CAAC7+B,KAAM,UAElD,IAAK,MACH,OAAOj/B,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,cAAew+E,QAAS,eAE/D,IAAK,QACH,OAAOvmD,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,SAAUw+E,QAAS,eAE1D,IAAK,OACL,QACE,OAAOvmD,EAAS89D,MAAMA,EAAO,CAAC/1F,MAAO,OAAQw+E,QAAS,iBAK5DgK,EAAG,SAAUtjB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI6yF,EAAOu8D,GAAWvtF,EAAM7hE,GAE5B,MAAc,OAAVokF,EACKxvD,EAASw4H,cAAcv6D,EAAM,CAACh/B,KAAM,SAGtC27F,GAAgB38D,EAAMzO,EAAMpsF,SAIrC0uF,EAAG,SAAU7kB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIowJ,EAAUxB,GAAc/sF,EAAM7hE,GAElC,MAAc,OAAVokF,EACKxvD,EAASw4H,cAAcgD,EAAS,CAACv8F,KAAM,SAGzC27F,GAAgBY,EAAShsE,EAAMpsF,SAIxC/B,EAAG,SAAU4rE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIqwJ,EAAaxuF,EAAK0/E,aAEtB,MAAc,OAAVn9D,EACKxvD,EAASw4H,cAAciD,EAAY,CAACx8F,KAAM,SAG5C27F,GAAgBa,EAAYjsE,EAAMpsF,SAI3CguF,EAAG,SAAUnkB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIigJ,ETjSO,SAA0B7C,EAAW4B,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB0B,EAAY7+E,EAAKl9D,UACrBk9D,EAAKyuF,YAAY,EAAG,GACpBzuF,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GAC1B,IACIzH,EAAatG,EADU7+E,EAAKl9D,UAEhC,OAAO2J,KAAKC,MAAMy4I,EAAa7D,IAAuB,ESsRpCoN,CAAgB1uF,EAAM7hE,GAEtC,MAAc,OAAVokF,EACKxvD,EAASw4H,cAAcnN,EAAW,CAACpsF,KAAM,cAG3C27F,GAAgBvP,EAAW77D,EAAMpsF,SAI1CiuF,EAAG,SAAUpkB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIwgJ,EAAY3+E,EAAKw/E,YACrB,OAAQj9D,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOxvD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,cAAew+E,QAAS,eAEjE,IAAK,QACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,SAAUw+E,QAAS,eAE5D,IAAK,SACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,QAASw+E,QAAS,eAE3D,IAAK,OACL,QACE,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,OAAQw+E,QAAS,iBAK9D5gF,EAAG,SAAUsnE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIwgJ,EAAY3+E,EAAKw/E,YACjBmP,GAAmBhQ,EAAYxgJ,EAAQiiJ,aAAe,GAAK,GAAM,EACrE,OAAQ79D,GAEN,IAAK,IACH,OAAOv8E,OAAO2oJ,GAEhB,IAAK,KACH,OAAOhB,GAAgBgB,EAAgB,GAEzC,IAAK,KACH,OAAO57H,EAASw4H,cAAcoD,EAAgB,CAAC38F,KAAM,QACvD,IAAK,MACH,OAAOj/B,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,cAAew+E,QAAS,eAEjE,IAAK,QACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,SAAUw+E,QAAS,eAE5D,IAAK,SACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,QAASw+E,QAAS,eAE3D,IAAK,OACL,QACE,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,OAAQw+E,QAAS,iBAK9DnlF,EAAG,SAAU6rE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIwgJ,EAAY3+E,EAAKw/E,YACjBmP,GAAmBhQ,EAAYxgJ,EAAQiiJ,aAAe,GAAK,GAAM,EACrE,OAAQ79D,GAEN,IAAK,IACH,OAAOv8E,OAAO2oJ,GAEhB,IAAK,KACH,OAAOhB,GAAgBgB,EAAgBpsE,EAAMpsF,QAE/C,IAAK,KACH,OAAO48B,EAASw4H,cAAcoD,EAAgB,CAAC38F,KAAM,QACvD,IAAK,MACH,OAAOj/B,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,cAAew+E,QAAS,eAEjE,IAAK,QACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,SAAUw+E,QAAS,eAE5D,IAAK,SACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,QAASw+E,QAAS,eAE3D,IAAK,OACL,QACE,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,OAAQw+E,QAAS,iBAK9DxlF,EAAG,SAAUksE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIwgJ,EAAY3+E,EAAKw/E,YACjBoP,EAA6B,IAAdjQ,EAAkB,EAAIA,EACzC,OAAQp8D,GAEN,IAAK,IACH,OAAOv8E,OAAO4oJ,GAEhB,IAAK,KACH,OAAOjB,GAAgBiB,EAAcrsE,EAAMpsF,QAE7C,IAAK,KACH,OAAO48B,EAASw4H,cAAcqD,EAAc,CAAC58F,KAAM,QAErD,IAAK,MACH,OAAOj/B,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,cAAew+E,QAAS,eAEjE,IAAK,QACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,SAAUw+E,QAAS,eAE5D,IAAK,SACH,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,QAASw+E,QAAS,eAE3D,IAAK,OACL,QACE,OAAOvmD,EAASyrH,IAAIG,EAAW,CAAC7jJ,MAAO,OAAQw+E,QAAS,iBAK9D9gF,EAAG,SAAUwnE,EAAMuiB,EAAOxvD,GACxB,IACI87H,EADQ7uF,EAAK8uF,cACiB,IAAO,EAAI,KAAO,KAEpD,OAAQvsE,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOxvD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,cAAew+E,QAAS,eAChF,IAAK,QACH,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,SAAUw+E,QAAS,eAC3E,IAAK,OACL,QACE,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,OAAQw+E,QAAS,iBAK7E7gF,EAAG,SAAUunE,EAAMuiB,EAAOxvD,GACxB,IACI87H,EADA/P,EAAQ9+E,EAAK8uF,cAUjB,OAPED,EADY,KAAV/P,EACmB4O,GACF,IAAV5O,EACY4O,GAEC5O,EAAQ,IAAO,EAAI,KAAO,KAG1Cv8D,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOxvD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,cAAew+E,QAAS,eAChF,IAAK,QACH,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,SAAUw+E,QAAS,eAC3E,IAAK,OACL,QACE,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,OAAQw+E,QAAS,iBAK7EoK,EAAG,SAAU1jB,EAAMuiB,EAAOxvD,GACxB,IACI87H,EADA/P,EAAQ9+E,EAAK8uF,cAYjB,OATED,EADE/P,GAAS,GACU4O,GACZ5O,GAAS,GACG4O,GACZ5O,GAAS,EACG4O,GAEAA,GAGfnrE,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOxvD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,cAAew+E,QAAS,eAChF,IAAK,QACH,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,SAAUw+E,QAAS,eAC3E,IAAK,OACL,QACE,OAAOvmD,EAAS+4H,UAAU+C,EAAoB,CAAC/zJ,MAAO,OAAQw+E,QAAS,iBAK7EsK,EAAG,SAAU5jB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI2gJ,EAAQ9+E,EAAK8uF,cAAgB,GAMjC,OAJc,IAAVhQ,IACFA,EAAQ,IAGI,OAAVv8D,EACKxvD,EAASw4H,cAAczM,EAAO,CAAC9sF,KAAM,SAGvC27F,GAAgB7O,EAAOv8D,EAAMpsF,SAItCwuF,EAAG,SAAU3kB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI2gJ,EAAQ9+E,EAAK8uF,cAEjB,MAAc,OAAVvsE,EACKxvD,EAASw4H,cAAczM,EAAO,CAAC9sF,KAAM,SAGvC27F,GAAgB7O,EAAOv8D,EAAMpsF,SAItC4uF,EAAG,SAAU/kB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI2gJ,EAAQ9+E,EAAK8uF,cAAgB,GAEjC,MAAc,OAAVvsE,EACKxvD,EAASw4H,cAAczM,EAAO,CAAC9sF,KAAM,SAGvC27F,GAAgB7O,EAAOv8D,EAAMpsF,SAItCskB,EAAG,SAAUulD,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI2gJ,EAAQ9+E,EAAK8uF,cAMjB,OAJc,IAAVhQ,IACFA,EAAQ,IAGI,OAAVv8D,EACKxvD,EAASw4H,cAAczM,EAAO,CAAC9sF,KAAM,SAGvC27F,GAAgB7O,EAAOv8D,EAAMpsF,SAItCjC,EAAG,SAAU8rE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI4gJ,EAAU/+E,EAAK+uF,gBAEnB,MAAc,OAAVxsE,EACKxvD,EAASw4H,cAAcxM,EAAS,CAAC/sF,KAAM,WAGzC27F,GAAgB5O,EAASx8D,EAAMpsF,SAIxCN,EAAG,SAAUmqE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI8gJ,EAAUj/E,EAAKgvF,gBAEnB,MAAc,OAAVzsE,EACKxvD,EAASw4H,cAActM,EAAS,CAACjtF,KAAM,WAGzC27F,GAAgB1O,EAAS18D,EAAMpsF,SAIxCwvF,EAAG,SAAU3lB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAI8wJ,EAAiB1sE,EAAMpsF,OACvB+4J,EAAelvF,EAAKmvF,qBAExB,OAAOxB,GADiBlhJ,KAAKC,MAAMwiJ,EAAeziJ,KAAK2iJ,IAAI,GAAIH,EAAiB,IACtCA,IAI5C7oE,EAAG,SAAUpmB,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IACIkxJ,GADelxJ,EAAQmxJ,eAAiBtvF,GACVy7E,oBAElC,GAAuB,IAAnB4T,EACF,MAAO,IAGT,OAAQ9sE,GAEN,IAAK,IACH,OAAO0rE,GAAkCoB,GAK3C,IAAK,OACL,IAAK,KACH,OAAOxB,GAAewB,GAKxB,IAAK,QACL,IAAK,MACL,QACE,OAAOxB,GAAewB,EAAgB,OAK5C9tI,EAAG,SAAUy+C,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IACIkxJ,GADelxJ,EAAQmxJ,eAAiBtvF,GACVy7E,oBAElC,OAAQl5D,GAEN,IAAK,IACH,OAAO0rE,GAAkCoB,GAK3C,IAAK,OACL,IAAK,KACH,OAAOxB,GAAewB,GAKxB,IAAK,QACL,IAAK,MACL,QACE,OAAOxB,GAAewB,EAAgB,OAK5C70E,EAAG,SAAUxa,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IACIkxJ,GADelxJ,EAAQmxJ,eAAiBtvF,GACVy7E,oBAElC,OAAQl5D,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ2rE,GAAoBmB,EAAgB,KAErD,IAAK,OACL,QACE,MAAO,MAAQxB,GAAewB,EAAgB,OAKpDntI,EAAG,SAAU89C,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IACIkxJ,GADelxJ,EAAQmxJ,eAAiBtvF,GACVy7E,oBAElC,OAAQl5D,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ2rE,GAAoBmB,EAAgB,KAErD,IAAK,OACL,QACE,MAAO,MAAQxB,GAAewB,EAAgB,OAKpDr6J,EAAG,SAAUgrE,EAAMuiB,EAAOxvD,EAAU50B,GAClC,IAAIoxJ,EAAepxJ,EAAQmxJ,eAAiBtvF,EAE5C,OAAO2tF,GADSlhJ,KAAKC,MAAM6iJ,EAAazsJ,UAAY,KAClBy/E,EAAMpsF,SAI1CyvF,EAAG,SAAU5lB,EAAMuiB,EAAOxvD,EAAU50B,GAGlC,OAAOwvJ,IAFYxvJ,EAAQmxJ,eAAiBtvF,GACfl9D,UACKy/E,EAAMpsF,UC/pB5C,SAASq5J,GAAmB77I,EAAS21I,EAAYnrJ,GAC/C,OAAQwV,GACN,IAAK,IACH,OAAO21I,EAAWtpF,KAAK,CAACllE,MAAO,UACjC,IAAK,KACH,OAAOwuJ,EAAWtpF,KAAK,CAACllE,MAAO,WACjC,IAAK,MACH,OAAOwuJ,EAAWtpF,KAAK,CAACllE,MAAO,SACjC,IAAK,OACL,QACE,OAAOwuJ,EAAWtpF,KAAK,CAACllE,MAAO,UAIrC,SAAS20J,GAAmB97I,EAAS21I,EAAYnrJ,GAC/C,OAAQwV,GACN,IAAK,IACH,OAAO21I,EAAW7xE,KAAK,CAAC38E,MAAO,UACjC,IAAK,KACH,OAAOwuJ,EAAW7xE,KAAK,CAAC38E,MAAO,WACjC,IAAK,MACH,OAAOwuJ,EAAW7xE,KAAK,CAAC38E,MAAO,SACjC,IAAK,OACL,QACE,OAAOwuJ,EAAW7xE,KAAK,CAAC38E,MAAO,UAoCrC,IAKe40J,GALM,CACnB95J,EAAG65J,GACHnqE,EAlCF,SAAgC3xE,EAAS21I,EAAYnrJ,GACnD,IAQIwxJ,EARAhF,EAAch3I,EAAQ6U,MAAM,aAC5BonI,EAAcjF,EAAY,GAC1BkF,EAAclF,EAAY,GAE9B,IAAKkF,EACH,OAAOL,GAAkB77I,EAAS21I,GAKpC,OAAQsG,GACN,IAAK,IACHD,EAAiBrG,EAAW34I,SAAS,CAAC7V,MAAO,UAC7C,MACF,IAAK,KACH60J,EAAiBrG,EAAW34I,SAAS,CAAC7V,MAAO,WAC7C,MACF,IAAK,MACH60J,EAAiBrG,EAAW34I,SAAS,CAAC7V,MAAO,SAC7C,MACF,IAAK,OACL,QACE60J,EAAiBrG,EAAW34I,SAAS,CAAC7V,MAAO,SAIjD,OAAO60J,EACJ52J,QAAQ,WAAYy2J,GAAkBI,EAAatG,IACnDvwJ,QAAQ,WAAY02J,GAAkBI,EAAavG,MCjCzC,SAASwG,GAAiBvU,EAAWuE,EAAa3C,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO6pJ,EAAgBzE,GADVL,EAAU4E,GACoB3C,GC9BtC,IAAI4S,GAAkB,CAAC,IAAK,KAAM,KAAM,QAExC,SAASC,GAAiBztE,GAC/B,OAA2C,IAApCwtE,GAAgBn5J,QAAQ2rF,GAG1B,SAAS0tE,GAAoB1tE,GAClC,MAAM,IAAI86D,WACR,gEACE96D,EACA,sCCcN,IAAI2tE,GAAyB,wDAIzBC,GAA6B,oCAE7BC,GAAsB,aACtBC,GAAoB,MAoST,SAAS93J,GAAOgjJ,EAAW+U,EAAgBnT,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,kCAAoC5P,UAAUC,OAAS,YAI3D,IAAIo6J,EAAYvqJ,OAAOsqJ,GACnBnyJ,EAAUg/I,GAAgB,GAE1B7sG,EAASnyC,EAAQmyC,QAAUkgH,GAE3BrD,EACF78G,EAAOnyC,SAAWmyC,EAAOnyC,QAAQuuJ,sBAC/BU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIrP,WACR,6DAIJ,IAAI8C,EAAqB7vG,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aACtDC,EACoB,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACzCC,EACsB,MAAxBjiJ,EAAQiiJ,aACJC,EACAnF,EAAU/8I,EAAQiiJ,cAGxB,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAK/sG,EAAOvd,SACV,MAAM,IAAIsqH,WAAW,yCAGvB,IAAK/sG,EAAOg5G,WACV,MAAM,IAAIjM,WAAW,2CAGvB,IAAIkS,EAAerS,EAAO3B,EAAWp9I,GAErC,IAAK0hE,GAAQ0vF,EAAcpxJ,GACzB,MAAO,eAMT,IACIsyJ,EAAUX,GAAgBP,EADTjU,EAAgCiU,GACOpxJ,GAExDuyJ,EAAmB,CACrBhE,sBAAuBA,EACvBtM,aAAcA,EACd9vG,OAAQA,EACRg/G,cAAeC,GAsCjB,OAnCagB,EACV/nI,MAAM2nI,IACN/vJ,IAAI,SAASokG,GACZ,IAAImsD,EAAiBnsD,EAAU,GAC/B,MAAuB,MAAnBmsD,GAA6C,MAAnBA,GAErBC,EADalB,GAAeiB,IACdnsD,EAAWl0D,EAAOg5G,WAAYoH,GAE9ClsD,IAERjtG,KAAK,IACLixB,MAAM0nI,IACN9vJ,IAAI,SAASokG,GAEZ,GAAkB,OAAdA,EACF,MAAO,IAGT,IAAImsD,EAAiBnsD,EAAU,GAC/B,GAAuB,MAAnBmsD,EACF,OAA0BnsD,EAmBnBh8E,MAAM4nI,IAAqB,GAAGr3J,QAAQs3J,GAAmB,KAhBlE,IAAIv6H,EAAYynC,GAAWozF,GAC3B,OAAI76H,IACG33B,EAAQ00I,sBAAwBmd,GAAiBxrD,IACpDyrD,GAAoBzrD,GAEf1uE,EAAU26H,EAASjsD,EAAWl0D,EAAOvd,SAAU29H,IAGjDlsD,IAERjtG,KAAK,IClaV,IAAIs5J,GAAiB,KACjBC,GAA6B,KAC7BC,GAAmB,MACnBC,GAAwB,MAyFb,SAAS9F,GAAgB3P,EAAW0V,EAAe9T,GAChE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,QAAUkgH,GAE/B,IAAKlgH,EAAO46G,eACV,MAAM,IAAI7N,WAAW,+CAGvB,IAAI+N,EAAanH,EAAW1I,EAAW0V,EAAe9yJ,GAEtD,GAAIoqB,MAAM6iI,GACR,MAAO,eAGT,IAIIlH,EACAC,EALA+M,EAAkB1Q,EAAYriJ,GAClC+yJ,EAAgB/F,UAAYr8I,QAAQ3Q,EAAQgtJ,WAC5C+F,EAAgB9F,WAAaA,EAIzBA,EAAa,GACflH,EAAWhH,EAAO+T,EAAe9yJ,GACjCgmJ,EAAYjH,EAAO3B,EAAWp9I,KAE9B+lJ,EAAWhH,EAAO3B,EAAWp9I,GAC7BgmJ,EAAYjH,EAAO+T,EAAe9yJ,IAGpC,IAGIgzJ,EAHAlS,EAAU0G,GAAoBxB,EAAWD,EAAU/lJ,GACnDizJ,GAAmB9V,EAAgC6I,GAAa7I,EAAgC4I,IAAa,IAC7GnF,EAAUtyI,KAAK+sD,OAAOylF,EAAUmS,GAAmB,IAIvD,GAAIrS,EAAU,EACZ,OAAI5gJ,EAAQkzJ,eACNpS,EAAU,EACL3uG,EAAO46G,eAAe,mBAAoB,EAAGgG,GAC3CjS,EAAU,GACZ3uG,EAAO46G,eAAe,mBAAoB,GAAIgG,GAC5CjS,EAAU,GACZ3uG,EAAO46G,eAAe,mBAAoB,GAAIgG,GAC5CjS,EAAU,GACZ3uG,EAAO46G,eAAe,cAAe,KAAMgG,GACzCjS,EAAU,GACZ3uG,EAAO46G,eAAe,mBAAoB,EAAGgG,GAE7C5gH,EAAO46G,eAAe,WAAY,EAAGgG,GAG9B,IAAZnS,EACKzuG,EAAO46G,eAAe,mBAAoB,EAAGgG,GAE7C5gH,EAAO46G,eAAe,WAAYnM,EAASmS,GAKjD,GAAInS,EAAU,GACnB,OAAOzuG,EAAO46G,eAAe,WAAYnM,EAASmS,GAG7C,GAAInS,EAAU,GACnB,OAAOzuG,EAAO46G,eAAe,cAAe,EAAGgG,GAG1C,GAAInS,EAAU8R,GAAgB,CACnC,IAAI/R,EAAQryI,KAAK+sD,MAAMulF,EAAU,IACjC,OAAOzuG,EAAO46G,eAAe,cAAepM,EAAOoS,GAG9C,GAAInS,EAAU+R,GACnB,OAAOxgH,EAAO46G,eAAe,QAAS,EAAGgG,GAGpC,GAAInS,EAAUgS,GAAkB,CACrC,IAAIO,EAAO7kJ,KAAK+sD,MAAMulF,EAAU8R,IAChC,OAAOvgH,EAAO46G,eAAe,QAASoG,EAAMJ,GAGvC,GAAInS,EAAUiS,GAEnB,OADAG,EAAS1kJ,KAAK+sD,MAAMulF,EAAUgS,IACvBzgH,EAAO46G,eAAe,eAAgBiG,EAAQD,GAMvD,IAHAC,EAAS1L,GAAmBtB,EAAWD,EAAU/lJ,IAGpC,GAAI,CACf,IAAIozJ,EAAe9kJ,KAAK+sD,MAAMulF,EAAUgS,IACxC,OAAOzgH,EAAO46G,eAAe,UAAWqG,EAAcL,GAItD,IAAIM,EAAyBL,EAAS,GAClCM,EAAQhlJ,KAAKC,MAAMykJ,EAAS,IAGhC,OAAIK,EAAyB,EACpBlhH,EAAO46G,eAAe,cAAeuG,EAAOP,GAG1CM,EAAyB,EAC3BlhH,EAAO46G,eAAe,aAAcuG,EAAOP,GAI3C5gH,EAAO46G,eAAe,eAAgBuG,EAAQ,EAAGP,GC5M9D,IAAIL,GAAiB,KACjBE,GAAmB,MACnBW,GAAkB,OA6FP,SAASC,GAAsBpW,EAAW0V,EAAe9T,GACtE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,QAAUkgH,GAE/B,IAAKlgH,EAAO46G,eACV,MAAM,IAAI7N,WAAW,wDAGvB,IAAI+N,EAAanH,EAAW1I,EAAW0V,EAAe9yJ,GAEtD,GAAIoqB,MAAM6iI,GACR,MAAO,eAGT,IAIIlH,EACAC,EALA+M,EAAkB1Q,EAAYriJ,GAClC+yJ,EAAgB/F,UAAYr8I,QAAQ3Q,EAAQgtJ,WAC5C+F,EAAgB9F,WAAaA,EAIzBA,EAAa,GACflH,EAAWhH,EAAO+T,EAAe9yJ,GACjCgmJ,EAAYjH,EAAO3B,EAAWp9I,KAE9B+lJ,EAAWhH,EAAO3B,EAAWp9I,GAC7BgmJ,EAAYjH,EAAO+T,EAAe9yJ,IAGpC,IACIyzJ,EADAC,EAA2C,MAA1B1zJ,EAAQ0zJ,eAAyB,QAAU7rJ,OAAO7H,EAAQ0zJ,gBAG/E,GAAuB,UAAnBA,EACFD,EAAmBnlJ,KAAKC,WACnB,GAAuB,SAAnBmlJ,EACTD,EAAmBnlJ,KAAK42B,SACnB,IAAuB,UAAnBwuH,EAGT,MAAM,IAAIxU,WAAW,qDAFrBuU,EAAmBnlJ,KAAK+sD,MAK1B,IAIIxH,EAJAitF,EAAU0G,GAAoBxB,EAAWD,EAAU/G,GAEnD4B,EAAU6S,GAAkB3S,GADT3D,EAAgC6I,GAAa7I,EAAgC4I,IAAa,KACpD,IAsB7D,GAAa,YAjBTlyF,EAFgB,MAAhB7zD,EAAQ6zD,KACN+sF,EAAU,EACL,SACEA,EAAU,GACZ,SACEA,EAAU8R,GACZ,OACE9R,EAAUgS,GACZ,MACEhS,EAAU2S,GACZ,QAEA,OAGF1rJ,OAAO7H,EAAQ6zD,OAKtB,OAAO1hB,EAAO46G,eAAe,WAAYjM,EAASiS,GAG7C,GAAa,WAATl/F,EACT,OAAO1hB,EAAO46G,eAAe,WAAYnM,EAASmS,GAG7C,GAAa,SAATl/F,EAAiB,CAC1B,IAAI8sF,EAAQ8S,EAAiB7S,EAAU,IACvC,OAAOzuG,EAAO46G,eAAe,SAAUpM,EAAOoS,GAGzC,GAAa,QAATl/F,EAAgB,CACzB,IAAIs/F,EAAOM,EAAiB7S,EAAU8R,IACtC,OAAOvgH,EAAO46G,eAAe,QAASoG,EAAMJ,GAGvC,GAAa,UAATl/F,EAAkB,CAC3B,IAAIm/F,EAASS,EAAiB7S,EAAUgS,IACxC,OAAOzgH,EAAO46G,eAAe,UAAWiG,EAAQD,GAG3C,GAAa,SAATl/F,EAAiB,CAC1B,IAAIy/F,EAAQG,EAAiB7S,EAAU2S,IACvC,OAAOphH,EAAO46G,eAAe,SAAUuG,EAAOP,GAGhD,MAAM,IAAI7T,WAAW,qECpKR,SAASgO,GAAgB9P,EAAW0V,EAAe9T,GAChE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBmO,EAAWpO,EAAO+T,EAAe9T,GAEjCh/I,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,QAAUkgH,GAE/B,IAAKlgH,EAAOvd,SACV,MAAM,IAAIsqH,WAAW,yCAGvB,IAAK/sG,EAAOg5G,WACV,MAAM,IAAIjM,WAAW,2CAGvB,IAAK/sG,EAAO+6G,eACV,MAAM,IAAIhO,WAAW,+CAGvB,IAMI96D,EANAlgD,EAAOk/G,EAAyBvhF,EAAMsrF,EAAUntJ,GAEpD,GAAIoqB,MAAM8Z,GACR,MAAO,eAKPkgD,EADElgD,GAAQ,EACF,QACCA,GAAQ,EACT,WACCA,EAAO,EACR,YACCA,EAAO,EACR,QACCA,EAAO,EACR,WACCA,EAAO,EACR,WAEA,QAGV,IAAIouH,EAAUX,GAAgB9vF,EAAMs7E,EAAgCt7E,GAAO7hE,GACvE2zJ,EAAchC,GAAgBxE,EAAUhQ,EAAgCgQ,GAAWntJ,GAEvF,OAAO5F,GAAOynE,EADE1vB,EAAO+6G,eAAe9oE,EAAOkuE,EAASqB,EAAa3zJ,GACpCA,GC7DlB,SAAS4zJ,GAAaC,EAAe7U,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,iCAAmC5P,UAAUC,OAAS,YAM1D,OAAO+mJ,EAAkB,IAFVhC,EAAU8W,GAEM7U,GCVlB,SAAS/rE,GAASmqE,EAAW4B,GAC1C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACP/rE,UCNT,SAASkvE,GAAQ/E,EAAW4B,GACzC,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACdmD,SCJF,SAAS2R,GAAc1W,EAAW4B,GAC/C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAG7B,OAFWoE,EAAyBvhF,EAAMgnF,GAAYhnF,EAAMm9E,GAAeA,GACpD,ECTV,SAASkB,GAAY9C,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IACI2nJ,EADOZ,EAAO3B,EAAW4B,GACb0D,cAChB,OAAO/C,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,ECNhD,SAASoU,GAAe3W,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OAAI50H,MAAMy3C,GACDo7E,IAGFiD,GAAWr+E,EAAMm9E,GAAgB,IAAM,ICZjC,SAASgV,GAAW5W,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IACI2nJ,EADOZ,EAAO3B,EAAW4B,GACb0D,cAEhB,OADqC,GAAxBp0I,KAAKC,MAAMoxI,EAAO,ICPlB,SAASsU,GAAU7W,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACZiV,WCHJ,SAASC,GAAW9W,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IACIqoJ,EADOtB,EAAO3B,EAAW4B,GACdmD,SAMf,OAJY,IAAR9B,IACFA,EAAM,GAGDA,ECjCT,IAAI8F,GAAuB,OAwBZ,SAASgO,GAAY/W,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB96G,EAAOq+G,EAAe1gF,EAAMm9E,GAAcr6I,UAAYq+I,EAAmBnhF,EAAMm9E,GAAcr6I,UAKjG,OAAO2J,KAAK+sD,MAAMn3B,EAAOiiH,IAAwB,ECpCnD,IAAIA,GAAuB,OAwBZ,SAASiO,GAAmBhX,EAAW4B,GACpD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIq8J,EAAWrR,EAAmB5F,EAAW4B,GAEzC96G,EADW8+G,EAAmB0B,EAAS2P,EAAU,GAAIrV,GAAeA,GACpDsV,UAAYD,EAASC,UAIzC,OAAOhmJ,KAAK+sD,MAAMn3B,EAAOiiH,IChBZ,SAASwD,GAAiBvM,EAAW4B,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACL2K,kBCNX,SAAS4K,GAAYnX,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACVuV,aCNN,SAAStQ,GAAU7G,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACZiF,WC1BnB,IAAId,GAAsB,MAoCX,SAASqR,GAA+B3P,EAAmBC,EAAoB9F,GAC5F,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+sJ,EAAeF,GAAqB,GACpCG,EAAgBF,GAAsB,GACtCG,EAAgBlG,EAAOgG,EAAa7tI,MAAO8nI,GAAcr6I,UACzDugJ,EAAcnG,EAAOgG,EAAanqI,IAAKokI,GAAcr6I,UACrDwgJ,EAAiBpG,EAAOiG,EAAc9tI,MAAO8nI,GAAcr6I,UAC3DygJ,EAAerG,EAAOiG,EAAcpqI,IAAKokI,GAAcr6I,UAG3D,KAAMsgJ,GAAiBC,GAAeC,GAAkBC,GACtD,MAAM,IAAIlG,WAAW,oBAKvB,KAFoB+F,EAAgBG,GAAgBD,EAAiBD,GAGnE,OAAO,EAGT,IAQIuP,GAJiBrP,EAAeF,EAChCA,EACAE,IANmBD,EAAiBF,EACpCA,EACAE,GAQJ,OAAO72I,KAAK42B,KAAKuvH,EAAiBtR,ICjDrB,SAASuR,GAAYtX,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACV0V,aCNN,SAAS/vJ,GAASy4I,EAAW4B,GAC1C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACRr6I,UCNR,SAASgwJ,GAAYvX,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,iCAAmC5P,UAAUC,OAAS,YAI1D,OAAOsW,KAAKC,MAAM5J,GAAQy4I,EAAW4B,GAAgB,KCexC,SAAS4V,GAAaxX,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cAEZ1iJ,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB68G,EAA8B78G,GAChCA,EAAOnyC,SACPmyC,EAAOnyC,QAAQuuJ,sBACbU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIrP,WAAW,6DAGvB,IAAIgQ,EAAsB,IAAIjsJ,KAAK,GACnCisJ,EAAoBtM,YAAYjD,EAAO,EAAG,EAAG4O,GAC7CW,EAAoB9M,SAAS,EAAG,EAAG,EAAG,GACtC,IAAIS,EAAkBd,EAAYmN,EAAqBlQ,GAEnDmQ,EAAsB,IAAIlsJ,KAAK,GACnCksJ,EAAoBvM,YAAYjD,EAAM,EAAG4O,GACzCY,EAAoB/M,SAAS,EAAG,EAAG,EAAG,GACtC,IAAIW,EAAkBhB,EAAYoN,EAAqBnQ,GAEvD,OAAIn9E,EAAKl9D,WAAak+I,EAAgBl+I,UAC7Bg7I,EAAO,EACL99E,EAAKl9D,WAAao+I,EAAgBp+I,UACpCg7I,EAEAA,EAAO,EC7CH,SAASkV,GAAiBzX,EAAW4B,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB68G,EAA8B78G,GAChCA,EAAOnyC,SACPmyC,EAAOnyC,QAAQuuJ,sBACbU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAEpB5O,EAAOiV,GAAYxX,EAAW4B,GAC9BqQ,EAAY,IAAIpsJ,KAAK,GAIzB,OAHAosJ,EAAUzM,YAAYjD,EAAM,EAAG4O,GAC/Bc,EAAUjN,SAAS,EAAG,EAAG,EAAG,GACjBL,EAAYsN,EAAWrQ,GC5DpC,IAAImH,GAAuB,OAuCZ,SAAS2O,GAAS1X,EAAW4B,GAC1C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB96G,EAAO69G,EAAYlgF,EAAMm9E,GAAcr6I,UAAYkwJ,GAAgBhzF,EAAMm9E,GAAcr6I,UAK3F,OAAO2J,KAAK+sD,MAAMn3B,EAAOiiH,IAAwB,EC5BpC,SAAS4O,GAAgB3X,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAI8V,EAAe7S,GAAOuG,GAAatL,EAAW4B,GAAeA,GAI7D96G,GAD0B8wH,EAAe/S,EAAe,EAAIA,EAAe+S,GAF1D7S,GAAO/E,EAAW4B,GAGe,EAAIiD,EAAe,EAEzE,OAAO3zI,KAAK42B,MAAM+tC,GAAQmqE,EAAW4B,GAAgB96G,GAAQ,GCzBhD,SAASggH,GAAgB9G,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBtsD,EAAQ7wB,EAAKoiF,WAGjB,OAFApiF,EAAK+gF,YAAY/gF,EAAK6gF,cAAehwD,EAAQ,EAAG,GAChD7wB,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECMM,SAASozF,GAAiB7X,EAAW4B,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAO0uJ,EACLxC,GAAe9G,EAAW4B,GAC1B0J,GAAatL,EAAW4B,GACxBA,GACE,ECzBS,SAASkW,GAAS9X,EAAW4B,GAC1C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAK5E,OAFW+mJ,EAAO3B,EAAW4B,GACb0D,cCLH,SAASyS,GAAS/X,EAAWkI,EAAoBtG,GAC9D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBwG,EAAgBzG,EAAOuG,EAAoBtG,GAC/C,OAAOn9E,EAAKl9D,UAAY6gJ,EAAc7gJ,UCPzB,SAASywJ,GAAUhY,EAAWkI,EAAoBtG,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBwG,EAAgBzG,EAAOuG,EAAoBtG,GAC/C,OAAOn9E,EAAKl9D,UAAY6gJ,EAAc7gJ,UCGzB,SAAS0wJ,GAAQz+J,GAC9B,GAAImB,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,iCAAmC5P,UAAUC,OAAS,YAI1D,OACEpB,aAAiBqM,MACC,iBAAVrM,GACoC,kBAA1CP,OAAOkB,UAAU2gB,SAASpiB,KAAKc,GCjBtB,SAAS0+J,GAASC,EAAeC,EAAgBxW,GAC9D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOwW,EAAevW,GACjCgH,EAAYjH,EAAOyW,EAAgBxW,GACvC,OAAO+G,EAASphJ,YAAcqhJ,EAAUrhJ,UCX3B,SAAS8wJ,GAAmBrY,EAAW4B,GACpD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAqD,IAA9C+mJ,EAAO3B,EAAW4B,GAAc/rE,UCL1B,SAASyiF,GAAUtY,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCH1B,SAASwT,GAAkBvY,EAAW4B,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAC7B,OAAOiK,GAASpnF,EAAMm9E,GAAcr6I,YAAcgkJ,GAAW9mF,EAAMm9E,GAAcr6I,UCRpE,SAASixJ,GAAUxY,EAAW4B,GAC3C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCD1B,SAAS0T,GAAWxS,EAAeC,EAAgBtE,GAChE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI89J,EAAqB5S,EAAWG,EAAerE,GAC/C+W,EAAsB7S,EAAWI,EAAgBtE,GAErD,OAAO8W,EAAmBnxJ,YAAcoxJ,EAAoBpxJ,UCX/C,SAASqxJ,GAAa5Y,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAKwnF,WAAW,EAAG,EAAG,GACfxnF,ECJM,SAASo0F,GAAY5S,EAAeC,EAAgBtE,GACjE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIk+J,EAAsBF,GAAY3S,EAAerE,GACjDmX,EAAuBH,GAAY1S,EAAgBtE,GAEvD,OAAOkX,EAAoBvxJ,YAAcwxJ,EAAqBxxJ,UCKjD,SAASyxJ,GAAY/S,EAAeC,EAAgBtE,GACjE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIq+J,EAAsBtU,EAAYsB,EAAerE,GACjDsX,EAAuBvU,EAAYuB,EAAgBtE,GAEvD,OAAOqX,EAAoB1xJ,YAAc2xJ,EAAqB3xJ,UClBjD,SAAS4xJ,GAAelT,EAAeC,EAAgBtE,GACpE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIw+J,EAAoBnU,EAAYrD,GAEpC,OADAwX,EAAkBvU,aAAe,EAC1BmU,GAAW/S,EAAeC,EAAgBkT,GCRpC,SAASC,GAAmBpT,EAAeC,EAAgBtE,GACxE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI0+J,EAAsB1T,EAAmBK,EAAerE,GACxD2X,EAAuB3T,EAAmBM,EAAgBtE,GAE9D,OAAO0X,EAAoB/xJ,YAAcgyJ,EAAqBhyJ,UCbjD,SAASiyJ,GAAexZ,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAK07E,WAAW,EAAG,GACZ17E,ECHM,SAASg1F,GAAcxT,EAAeC,EAAgBtE,GACnE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI8+J,EAAwBF,GAAcvT,EAAerE,GACrD+X,EAAyBH,GAActT,EAAgBtE,GAE3D,OAAO8X,EAAsBnyJ,YAAcoyJ,EAAuBpyJ,UCTrD,SAASqyJ,GAAa3T,EAAeC,EAAgBtE,GAClE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GACvC,OAAO+G,EAASrD,gBAAkBsD,EAAUtD,eAC1CqD,EAAS9B,aAAe+B,EAAU/B,WCXvB,SAASgT,GAAgB7Z,EAAW4B,GACjD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB8K,EAAejoF,EAAKoiF,WACpBvxD,EAAQo3D,EAAeA,EAAe,EAG1C,OAFAjoF,EAAK0iF,SAAS7xD,EAAO,GACrB7wB,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECPM,SAASq1F,GAAe7T,EAAeC,EAAgBtE,GACpE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIm/J,EAAyBF,GAAe5T,EAAerE,GACvDoY,EAA0BH,GAAe3T,EAAgBtE,GAE7D,OAAOmY,EAAuBxyJ,YAAcyyJ,EAAwBzyJ,UCXvD,SAAS0yJ,GAAeja,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAE7B,OADAn9E,EAAK6nF,gBAAgB,GACd7nF,ECHM,SAASy1F,GAAcjU,EAAeC,EAAgBtE,GACnE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIu/J,EAAwBF,GAAchU,EAAerE,GACrDwY,EAAyBH,GAAc/T,EAAgBtE,GAE3D,OAAOuY,EAAsB5yJ,YAAc6yJ,EAAuB7yJ,UCTrD,SAAS8yJ,GAAYpU,EAAeC,EAAgBtE,GACjE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI+tJ,EAAWhH,EAAOsE,EAAerE,GACjCgH,EAAYjH,EAAOuE,EAAgBtE,GACvC,OAAO+G,EAASrD,gBAAkBsD,EAAUtD,cCX/B,SAASgV,GAAYta,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCL1B,SAASwV,GAAYva,EAAW4B,GAC7C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCL1B,SAASyV,GAAWxa,EAAW4B,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCL1B,SAAS0V,GAAaza,EAAW4B,GAC9C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,OAAoD,IAA7C+mJ,EAAO3B,EAAW4B,GAAcmD,SCS1B,SAAS2V,GAAkB1a,EAAWwK,EAAe5I,GAClE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAImqI,EAAWylB,GAAiB,GAC5BtuE,EAAOylE,EAAO3B,EAAW4B,GAAcr6I,UACvC3B,EAAY+7I,EAAO5c,EAASjrH,MAAO8nI,GAAcr6I,UACjDuB,EAAU64I,EAAO5c,EAASvnH,IAAKokI,GAAcr6I,UAGjD,KAAM3B,GAAakD,GACjB,MAAM,IAAIg5I,WAAW,oBAGvB,OAAO5lE,GAAQt2E,GAAas2E,GAAQpzE,EC7BvB,SAAS6xJ,GAAiB3a,EAAW4B,GAClD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cACZyG,EAAS,EAA4B,GAAxB76I,KAAKC,MAAMoxI,EAAO,IAGnC,OAFA99E,EAAK+gF,YAAYuG,EAAS,EAAG,EAAG,GAChCtnF,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECAM,SAASm2F,GAAe5a,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,wCAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAW4B,GACzBqB,EAAMx+E,EAAKsgF,SACXj+G,EAAuC,GAA/Bm8G,EAAM4B,GAAgB,EAAI,IAAU5B,EAAM4B,GAItD,OAFApgF,EAAKugF,SAAS,EAAG,EAAG,EAAG,GACvBvgF,EAAKmR,QAAQnR,EAAKoR,UAAY/uC,GACvB29B,EC5BM,SAASo2F,GAAkB7a,EAAW4B,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAIkgK,EAAuB7V,EAAYrD,GAEvC,OADAkZ,EAAqBjW,aAAe,EAC7B+V,GAAc5a,EAAW8a,GCNnB,SAASC,GAAsB/a,EAAW4B,GACvD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI2nJ,EAAO8C,EAAerF,EAAW4B,GACjCiE,EAAkB,IAAIhgJ,KAAK,GAC/BggJ,EAAgBL,YAAYjD,EAAO,EAAG,EAAG,GACzCsD,EAAgBb,SAAS,EAAG,EAAG,EAAG,GAClC,IAAIvgF,EAAO0gF,EAAeU,EAAiBjE,GAE3C,OADAn9E,EAAKmR,QAAQnR,EAAKoR,UAAY,GACvBpR,ECfM,SAASu2F,GAAkBhb,EAAW4B,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB8K,EAAejoF,EAAKoiF,WACpBvxD,EAAQo3D,EAAeA,EAAe,EAAI,EAG9C,OAFAjoF,EAAK0iF,SAAS7xD,EAAO,GACrB7wB,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECVM,SAASw2F,GAAejb,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cAGhB,OAFA7gF,EAAK+gF,YAAYjD,EAAO,EAAG,EAAG,GAC9B99E,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECHM,SAAShtD,GAAK0wI,EAAiBvG,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAcIwgB,EASJ,OArBuB,MAAnB+sI,EACW,GAG+B,mBAA5BA,EAAgB7nJ,QACnB6nJ,EAIAtsJ,MAAM1B,UAAUiE,MAAM1F,KAAKyvJ,IAI/B7nJ,QAAQ,SAAU0/I,GAC3B,IAAIuI,EAAc5G,EAAO3B,EAAW4B,SAErB1lJ,IAAXkf,GAAwBA,EAASmtI,GAAev7H,MAAMu7H,MACxDntI,EAASmtI,KAINntI,EC5BM,SAASvD,GAAKswI,EAAiBvG,GAC5C,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAcIwgB,EASJ,OArBuB,MAAnB+sI,EACW,GAG+B,mBAA5BA,EAAgB7nJ,QACnB6nJ,EAIAtsJ,MAAM1B,UAAUiE,MAAM1F,KAAKyvJ,IAI/B7nJ,QAAQ,SAAU0/I,GAC3B,IAAIuI,EAAc5G,EAAO3B,EAAW4B,SAErB1lJ,IAAXkf,GAAwBA,EAASmtI,GAAev7H,MAAMu7H,MACxDntI,EAASmtI,KAINntI,ECpDM,SAAS8/I,GAAWlb,EAAWmb,EAAUvZ,GACtD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAW4B,GACzBqB,EAAMtD,EAAUwb,GAOhBr0H,IAHYm8G,EAAM,EACM,GAAK,EAEV4B,EAAe,EAAI,GAAK5B,EAL9Bx+E,EAAKw/E,YAQtB,OADAx/E,EAAKy/E,WAAWz/E,EAAK0/E,aAAer9G,GAC7B29B,ECxBT,IAAI47E,GAAuB,KACvBP,GAAyB,IACzBsb,GAAyB,IAEzBC,GAAkB,CACpB/lE,MAAO,iBACP7wB,KAAM,qBACNo+E,UAAW,kCACXptD,KAAM,qBACN6lE,QAAS,qBACTC,QAAS,qBACTC,QAAS,iBACTC,QAAS,iBACTC,OAAQ,YACR71C,OAAQ,YAER81C,YAAa,MACbC,UAAW,WACXC,YAAa,WACbC,WAAY,WAEZC,gBAAiB,SACjBC,kBAAmB,QACnBC,gBAAiB,aACjBC,kBAAmB,aACnBC,iBAAkB,cAGhBC,GACoB,2BADpBA,GAEK,0BAFLA,GAGoB,oCAHpBA,GAIQ,2BAJRA,GAKuB,sCAG3B,SAASC,GAAqBjkJ,EAAS/K,EAAQoiJ,GAC7C,IAAIL,EAAc/hJ,EAAO4f,MAAM7U,GAE/B,IAAKg3I,EACH,OAAO,KAGT,IAAI51J,EAAQ6V,SAAS+/I,EAAY,GAAI,IAErC,MAAO,CACL51J,MAAOi2J,EAAgBA,EAAcj2J,GAASA,EAC9Ck2J,KAAMriJ,EAAOjP,MAAMgxJ,EAAY,GAAGx0J,SAItC,SAAS0hK,GAAsBlkJ,EAAS/K,GACtC,IAAI+hJ,EAAc/hJ,EAAO4f,MAAM7U,GAE/B,IAAKg3I,EACH,OAAO,KAIT,GAAuB,MAAnBA,EAAY,GACd,MAAO,CACL51J,MAAO,EACPk2J,KAAMriJ,EAAOjP,MAAM,IAIvB,IAAIurJ,EAA0B,MAAnByF,EAAY,GAAa,GAAK,EACrC7L,EAAQ6L,EAAY,GAAK//I,SAAS+/I,EAAY,GAAI,IAAM,EACxD5L,EAAU4L,EAAY,GAAK//I,SAAS+/I,EAAY,GAAI,IAAM,EAC1D1L,EAAU0L,EAAY,GAAK//I,SAAS+/I,EAAY,GAAI,IAAM,EAE9D,MAAO,CACL51J,MAAOmwJ,GACLpG,EAAQlD,GACNmD,EAAU1D,GACV4D,EAAU0X,IAEd1L,KAAMriJ,EAAOjP,MAAMgxJ,EAAY,GAAGx0J,SAItC,SAAS2hK,GAAsBlvJ,EAAQoiJ,GACrC,OAAO4M,GAAoBhB,GAAgBU,gBAAiB1uJ,EAAQoiJ,GAGtE,SAAS+M,GAAcxiK,EAAGqT,EAAQoiJ,GAChC,OAAQz1J,GACN,KAAK,EACH,OAAOqiK,GAAoBhB,GAAgBM,YAAatuJ,EAAQoiJ,GAClE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBO,UAAWvuJ,EAAQoiJ,GAChE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBQ,YAAaxuJ,EAAQoiJ,GAClE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBS,WAAYzuJ,EAAQoiJ,GACjE,QACE,OAAO4M,GAAoB,IAAIz6F,OAAO,UAAY5nE,EAAI,KAAMqT,EAAQoiJ,IAI1E,SAASgN,GAAoBziK,EAAGqT,EAAQoiJ,GACtC,OAAQz1J,GACN,KAAK,EACH,OAAOqiK,GAAoBhB,GAAgBW,kBAAmB3uJ,EAAQoiJ,GACxE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBY,gBAAiB5uJ,EAAQoiJ,GACtE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBa,kBAAmB7uJ,EAAQoiJ,GACxE,KAAK,EACH,OAAO4M,GAAoBhB,GAAgBc,iBAAkB9uJ,EAAQoiJ,GACvE,QACE,OAAO4M,GAAoB,IAAIz6F,OAAO,YAAc5nE,EAAI,KAAMqT,EAAQoiJ,IAI5E,SAASiN,GAAsBC,GAC7B,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GACT,IAAK,KACL,IAAK,WACL,IAAK,QACL,QACE,OAAO,GAIb,SAASC,GAAuBC,EAAcC,GAC5C,IAOI1hJ,EAPA2hJ,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAGrD,GAAIE,GAAkB,GACpB5hJ,EAASyhJ,GAAgB,QACpB,CACL,IAAII,EAAWD,EAAiB,GAGhC5hJ,EAASyhJ,EAF0C,IAA7B3rJ,KAAKC,MAAM8rJ,EAAW,MACpBJ,GAAgBI,EAAW,IACY,IAAM,GAGvE,OAAOF,EAAc3hJ,EAAS,EAAIA,EAGpC,IAAIgpI,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAG3E,SAAStB,GAAiBR,GACxB,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,EA8C/D,IAy4Be2a,GAz4BD,CAEZj0E,EAAG,CACDk0E,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/5D,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,iBAC/B0tB,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,WAE9B,IAAK,QACH,OAAO0tB,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,WAEnC,IAAK,OACL,QACE,OAAO0tB,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,UAC/B0tB,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,iBAC1B0tB,EAAMijI,IAAI7iJ,EAAQ,CAAC9N,MAAO,aAGlC43E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAI1B,OAFA6hE,EAAKk+E,eAAyB,IAAVnpJ,EAAc,IAAM,EAAG,EAAG,GAC9CirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXl+C,EAAG,CAUD42I,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUlN,GAC5B,MAAO,CACLA,KAAMA,EACN6a,eAA0B,OAAVp2E,IAIpB,OAAQA,GACN,IAAK,IACH,OAAOw1E,GAAa,EAAGnvJ,EAAQoiJ,GACjC,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,OAAQg5F,cAAeA,IACnE,QACE,OAAO+M,GAAax1E,EAAMpsF,OAAQyS,EAAQoiJ,KAGhDzjJ,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,EAAM4jK,gBAAkB5jK,EAAM+oJ,KAAO,GAE9CprE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,IAAIk6J,EAAcnL,GAAeltF,EAAM7hE,GAEvC,GAAIpJ,EAAM4jK,eAAgB,CACxB,IAAIC,EAAyBT,GAAsBpjK,EAAM+oJ,KAAMua,GAG/D,OAFAr4F,EAAKk+E,eAAe0a,EAAwB,EAAG,GAC/C54F,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,EAGT,IAAI89E,EAAOua,EAAc,EAAItjK,EAAM+oJ,KAAO,EAAI/oJ,EAAM+oJ,KAGpD,OAFA99E,EAAKk+E,eAAeJ,EAAM,EAAG,GAC7B99E,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXwoB,EAAG,CACDkwE,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUlN,GAC5B,MAAO,CACLA,KAAMA,EACN6a,eAA0B,OAAVp2E,IAIpB,OAAQA,GACN,IAAK,IACH,OAAOw1E,GAAa,EAAGnvJ,EAAQoiJ,GACjC,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,OAAQg5F,cAAeA,IACnE,QACE,OAAO+M,GAAax1E,EAAMpsF,OAAQyS,EAAQoiJ,KAGhDzjJ,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,EAAM4jK,gBAAkB5jK,EAAM+oJ,KAAO,GAE9CprE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,IAAIk6J,EAAcr4F,EAAK8sF,iBAEvB,GAAI/3J,EAAM4jK,eAAgB,CACxB,IAAIC,EAAyBT,GAAsBpjK,EAAM+oJ,KAAMua,GAG/D,OAFAr4F,EAAKk+E,eAAe0a,EAAwB,EAAGz6J,EAAQuuJ,uBACvD1sF,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnBK,GAAejtF,EAAM7hE,GAG9B,IAAI2/I,EAAOua,EAAc,EAAItjK,EAAM+oJ,KAAO,EAAI/oJ,EAAM+oJ,KAGpD,OAFA99E,EAAKk+E,eAAeJ,EAAM,EAAG3/I,EAAQuuJ,uBACrC1sF,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnBK,GAAejtF,EAAM7hE,KAKhCsnF,EAAG,CACDizE,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OACS65J,GADK,MAAVz1E,EACwB,EAGFA,EAAMpsF,OAHDyS,IAKjC8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,IAAI06J,EAAkB,IAAIz3J,KAAK,GAG/B,OAFAy3J,EAAgB3a,eAAenpJ,EAAO,EAAG,GACzC8jK,EAAgBjM,YAAY,EAAG,EAAG,EAAG,GAC9BD,GAAkBkM,KAK7Bz1E,EAAG,CACDs1E,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OACS65J,GADK,MAAVz1E,EACwB,EAGFA,EAAMpsF,OAHDyS,IAKjC8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKk+E,eAAenpJ,EAAO,EAAG,GAC9BirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXulB,EAAG,CACDmzE,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GAEN,IAAK,IACL,IAAK,KACH,OAAOw1E,GAAax1E,EAAMpsF,OAAQyS,GAEpC,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,YAE5C,IAAK,MACH,OAAOxpC,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAC3D9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAErD,IAAK,QACH,OAAO9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAE1D,IAAK,OACL,QACE,OAAO9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBACpD9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACtD9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGzD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKyuF,YAA0B,GAAb15J,EAAQ,GAAQ,GAClCirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXmjB,EAAG,CACDu1E,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GAEN,IAAK,IACL,IAAK,KACH,OAAOw1E,GAAax1E,EAAMpsF,OAAQyS,GAEpC,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,YAE5C,IAAK,MACH,OAAOxpC,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAC3D9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAErD,IAAK,QACH,OAAO9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAE1D,IAAK,OACL,QACE,OAAO9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBACpD9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACtD9wD,EAAMqjI,QAAQjjJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGzD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKyuF,YAA0B,GAAb15J,EAAQ,GAAQ,GAClCirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXklB,EAAG,CACDwzE,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUj2J,GAC5B,OAAOA,EAAQ,GAGjB,OAAQwtF,GAEN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgB/lE,MAAOjoF,EAAQoiJ,GAE5D,IAAK,KACH,OAAO+M,GAAa,EAAGnvJ,EAAQoiJ,GAEjC,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,QAASg5F,cAAeA,IAEpE,IAAK,MACH,OAAOxiI,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACzD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEnD,IAAK,QACH,OAAO9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAExD,IAAK,OACL,QACE,OAAO9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBAClD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACpD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGvD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKyuF,YAAY15J,EAAO,GACxBirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXkY,EAAG,CACDwgF,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUj2J,GAC5B,OAAOA,EAAQ,GAGjB,OAAQwtF,GAEN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgB/lE,MAAOjoF,EAAQoiJ,GAE5D,IAAK,KACH,OAAO+M,GAAa,EAAGnvJ,EAAQoiJ,GAEjC,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,QAASg5F,cAAeA,IAEpE,IAAK,MACH,OAAOxiI,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACzD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEnD,IAAK,QACH,OAAO9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAExD,IAAK,OACL,QACE,OAAO9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBAClD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACpD9wD,EAAMqoE,MAAMjoF,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGvD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKyuF,YAAY15J,EAAO,GACxBirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXsjB,EAAG,CACDo1E,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgB5lE,KAAMpoF,GACnD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAO8uJ,GC3hBE,SAAqB1R,EAAWud,EAAW3b,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBnsD,EAAOkqD,EAAU4d,GACjBz2H,EAAOkrH,GAAWvtF,EAAMm9E,GAAgBnsD,EAE5C,OADAhxB,EAAKy/E,WAAWz/E,EAAK0/E,aAAsB,EAAPr9G,GAC7B29B,EDkhBmB+4F,CAAW/4F,EAAMjrE,EAAOoJ,GAAUA,KAK5D0mF,EAAG,CACD6zE,SAAU,IACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgB5lE,KAAMpoF,GACnD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAOwuJ,GEhjBE,SAAwBpR,EAAWyd,EAAc7b,GAC9D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBoR,EAAUrT,EAAU8d,GACpB32H,EAAO0qH,GAAc/sF,EAAMm9E,GAAgBoR,EAE/C,OADAvuF,EAAKy/E,WAAWz/E,EAAK0/E,aAAsB,EAAPr9G,GAC7B29B,EFuiBsBi5F,CAAcj5F,EAAMjrE,EAAOoJ,GAAUA,KAKlE/J,EAAG,CACDskK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgB52F,KAAMp3D,GACnD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,IACIkgJ,EAAaC,GADNt+E,EAAK8sF,kBAEZj8D,EAAQ7wB,EAAKsuF,cACjB,OAAIjQ,EACKtpJ,GAAS,GAAKA,GAAS6qJ,GAAwB/uD,GAE/C97F,GAAS,GAAKA,GAAS4qJ,GAAc9uD,IAGhDne,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKy/E,WAAW1qJ,GAChBirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXmkB,EAAG,CACDu0E,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACL,IAAK,KACH,OAAOq1E,GAAoBhB,GAAgBxY,UAAWx1I,GACxD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAG/B,OADiBmgJ,GADNt+E,EAAK8sF,kBAGP/3J,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,KAGlC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAKyuF,YAAY,EAAG15J,GACpBirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXokB,EAAG,CACDs0E,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/5D,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACvD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEjD,IAAK,QACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEtD,IAAK,SACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBACnD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAE/C,IAAK,OACL,QACE,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBAChD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAClD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGrD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAOy2F,GAAUz2F,EAAMjrE,EAAOoJ,IACzByuJ,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXtnE,EAAG,CACDggK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUj2J,GAC5B,IAAImkK,EAA8C,EAA9BzsJ,KAAKC,OAAO3X,EAAQ,GAAK,GAC7C,OAAQA,EAAQoJ,EAAQiiJ,aAAe,GAAK,EAAI8Y,GAGlD,OAAQ32E,GAEN,IAAK,IACL,IAAK,KACH,OAAOw1E,GAAax1E,EAAMpsF,OAAQyS,EAAQoiJ,GAE5C,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,MAAOg5F,cAAeA,IAElE,IAAK,MACH,OAAOxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACvD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEjD,IAAK,QACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEtD,IAAK,SACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBACnD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAE/C,IAAK,OACL,QACE,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBAChD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAClD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGrD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAOy2F,GAAUz2F,EAAMjrE,EAAOoJ,IACzByuJ,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKX7rE,EAAG,CACDukK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUj2J,GAC5B,IAAImkK,EAA8C,EAA9BzsJ,KAAKC,OAAO3X,EAAQ,GAAK,GAC7C,OAAQA,EAAQoJ,EAAQiiJ,aAAe,GAAK,EAAI8Y,GAGlD,OAAQ32E,GAEN,IAAK,IACL,IAAK,KACH,OAAOw1E,GAAax1E,EAAMpsF,OAAQyS,EAAQoiJ,GAE5C,IAAK,KACH,OAAOxiI,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,MAAOg5F,cAAeA,IAElE,IAAK,MACH,OAAOxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACvD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEjD,IAAK,QACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAEtD,IAAK,SACH,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBACnD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAE/C,IAAK,OACL,QACE,OAAO9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBAChD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAClD9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,gBAC5C9wD,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAGrD/xE,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EAAOy2F,GAAUz2F,EAAMjrE,EAAOoJ,IACzByuJ,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXlsE,EAAG,CACD4kK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,IAAI6sJ,EAAgB,SAAUj2J,GAC5B,OAAc,IAAVA,EACK,EAEFA,GAGT,OAAQwtF,GAEN,IAAK,IACL,IAAK,KACH,OAAOw1E,GAAax1E,EAAMpsF,OAAQyS,GAEpC,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,QAE5C,IAAK,MACH,OAAOxpC,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,aAAc0xE,cAAeA,KACpFxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,aAAc0xE,cAAeA,KACzExiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,aAAc0xE,cAAeA,IAE9E,IAAK,QACH,OAAOxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,aAAc0xE,cAAeA,IAEnF,IAAK,SACH,OAAOxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,aAAc0xE,cAAeA,KAChFxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,aAAc0xE,cAAeA,IAE5E,IAAK,OACL,QACE,OAAOxiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,aAAc0xE,cAAeA,KAC7ExiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,aAAc0xE,cAAeA,KAC/ExiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,QAASw+E,QAAS,aAAc0xE,cAAeA,KACzExiI,EAAMg2H,IAAI51I,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,aAAc0xE,cAAeA,MAGlFzjJ,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,GAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAG1B,OAFA6hE,EGnyBS,SAAuBu7E,EAAWmb,EAAUvZ,GACzD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIqoJ,EAAMtD,EAAUwb,GAEhBlY,EAAM,GAAM,IACdA,GAAY,GAGd,IACIx+E,EAAOk9E,EAAO3B,EAAW4B,GAMzB96G,IAHYm8G,EAAM,EACM,GAAK,EALd,EAOmB,EAAI,GAAKA,EAL9Bx+E,EAAKw/E,YAQtB,OADAx/E,EAAKy/E,WAAWz/E,EAAK0/E,aAAer9G,GAC7B29B,EH8wBIm5F,CAAan5F,EAAMjrE,EAAOoJ,IAC5ByuJ,YAAY,EAAG,EAAG,EAAG,GACnB5sF,IAKXxnE,EAAG,CACDkgK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/5D,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAC7D9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eACvD,IAAK,QACH,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAC5D,IAAK,OACL,QACE,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBACtD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACxD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAG3D5G,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAK4sF,YAAYqL,GAAqBljK,GAAQ,EAAG,EAAG,GAC7CirE,IAKXvnE,EAAG,CACDigK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/5D,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAC7D9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eACvD,IAAK,QACH,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAC5D,IAAK,OACL,QACE,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBACtD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACxD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAG3D5G,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAK4sF,YAAYqL,GAAqBljK,GAAQ,EAAG,EAAG,GAC7CirE,IAKX0jB,EAAG,CACDg1E,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/5D,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBAC7D9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eACvD,IAAK,QACH,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,eAC5D,IAAK,OACL,QACE,OAAO9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,OAAQw+E,QAAS,gBACtD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,cAAew+E,QAAS,gBACxD9wD,EAAMsjI,UAAUljJ,EAAQ,CAAC9N,MAAO,SAAUw+E,QAAS,iBAG3D5G,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAK4sF,YAAYqL,GAAqBljK,GAAQ,EAAG,EAAG,GAC7CirE,IAKX4jB,EAAG,CACD80E,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBI,QAASpuJ,GACtD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,IAAIi7J,EAAOp5F,EAAK8uF,eAAiB,GAQjC,OAPIsK,GAAQrkK,EAAQ,GAClBirE,EAAK4sF,YAAY73J,EAAQ,GAAI,EAAG,EAAG,GACzBqkK,GAAkB,KAAVrkK,EAGlBirE,EAAK4sF,YAAY73J,EAAO,EAAG,EAAG,GAF9BirE,EAAK4sF,YAAY,EAAG,EAAG,EAAG,GAIrB5sF,IAKX2kB,EAAG,CACD+zE,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBC,QAASjuJ,GACtD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAK4sF,YAAY73J,EAAO,EAAG,EAAG,GACvBirE,IAKX+kB,EAAG,CACD2zE,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBG,QAASnuJ,GACtD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAO1B,OANW6hE,EAAK8uF,eAAiB,IACrB/5J,EAAQ,GAClBirE,EAAK4sF,YAAY73J,EAAQ,GAAI,EAAG,EAAG,GAEnCirE,EAAK4sF,YAAY73J,EAAO,EAAG,EAAG,GAEzBirE,IAKXvlD,EAAG,CACDi+I,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBE,QAASluJ,GACtD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,SAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,IAAI2gJ,EAAQ/pJ,GAAS,GAAKA,EAAQ,GAAKA,EAEvC,OADAirE,EAAK4sF,YAAY9N,EAAO,EAAG,EAAG,GACvB9+E,IAKX9rE,EAAG,CACDwkK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBK,OAAQruJ,GACrD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,WAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAKq5F,cAActkK,EAAO,EAAG,GACtBirE,IAKXnqE,EAAG,CACD6iK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOq1E,GAAoBhB,GAAgBx1C,OAAQx4G,GACrD,IAAK,KACH,OAAO4f,EAAM+iI,cAAc3iJ,EAAQ,CAACopD,KAAM,WAC5C,QACE,OAAO+lG,GAAax1E,EAAMpsF,OAAQyS,KAGxCrB,SAAU,SAAUy4D,EAAMjrE,EAAOoJ,GAC/B,OAAOpJ,GAAS,GAAKA,GAAS,IAEhC29E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAKs5F,cAAcvkK,EAAO,GACnBirE,IAKX2lB,EAAG,CACD+yE,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GAIrC,OAAO45J,GAAax1E,EAAMpsF,OAAQyS,EAHd,SAAU7T,GAC5B,OAAO0X,KAAKC,MAAM3X,EAAQ0X,KAAK2iJ,IAAI,GAAoB,EAAf7sE,EAAMpsF,YAIlDu8E,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAE1B,OADA6hE,EAAKu5F,mBAAmBxkK,GACjBirE,IAKXomB,EAAG,CACDsyE,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOs1E,GAAqBF,GAAuC/uJ,GACrE,IAAK,KACH,OAAOivJ,GAAqBF,GAAwB/uJ,GACtD,IAAK,OACH,OAAOivJ,GAAqBF,GAAuC/uJ,GACrE,IAAK,QACH,OAAOivJ,GAAqBF,GAA0C/uJ,GACxE,IAAK,MACL,QACE,OAAOivJ,GAAqBF,GAA2B/uJ,KAG7D8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAO,IAAIiD,KAAK4+D,EAAKl9D,UAAY/N,KAKrCwsB,EAAG,CACDm3I,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAQokF,GACN,IAAK,IACH,OAAOs1E,GAAqBF,GAAuC/uJ,GACrE,IAAK,KACH,OAAOivJ,GAAqBF,GAAwB/uJ,GACtD,IAAK,OACH,OAAOivJ,GAAqBF,GAAuC/uJ,GACrE,IAAK,QACH,OAAOivJ,GAAqBF,GAA0C/uJ,GACxE,IAAK,MACL,QACE,OAAOivJ,GAAqBF,GAA2B/uJ,KAG7D8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAO,IAAIiD,KAAK4+D,EAAKl9D,UAAY/N,KAKrCC,EAAG,CACD0jK,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAO25J,GAAqBlvJ,IAE9B8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAO,IAAIiD,KAAa,IAARrM,KAKpB6wF,EAAG,CACD8yE,SAAU,GACVn8J,MAAO,SAAUqM,EAAQ25E,EAAO/5D,EAAOrqB,GACrC,OAAO25J,GAAqBlvJ,IAE9B8pE,IAAK,SAAU1S,EAAMjrE,EAAOoJ,GAC1B,OAAO,IAAIiD,KAAKrM,MI9kClBykK,GAAyB,GAazBtJ,GAAyB,wDAEzBE,GAAsB,aACtBC,GAAoB,MAEpBoJ,GAAsB,KAkRX,SAASl9J,GACtBm9J,EACAC,EACA1I,EACA9T,GAEA,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UACR,kCAAoC5P,UAAUC,OAAS,YAI3D,IAAIonJ,EAAav3I,OAAO0zJ,GACpBE,EAAe5zJ,OAAO2zJ,GACtBx7J,EAAUg/I,GAAgB,GAE1B7sG,EAASnyC,EAAQmyC,QAAUkgH,GAE/B,IAAKlgH,EAAO9nB,MACV,MAAM,IAAI60H,WAAW,sCAGvB,IAAI8P,EACF78G,EAAOnyC,SAAWmyC,EAAOnyC,QAAQuuJ,sBAC/BU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIrP,WACR,6DAIJ,IAAI8C,EAAqB7vG,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aACtDC,EACoB,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACzCC,EACsB,MAAxBjiJ,EAAQiiJ,aACJC,EACAnF,EAAU/8I,EAAQiiJ,cAGxB,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,GAAqB,KAAjBuc,EACF,MAAmB,KAAfrc,EACKL,EAAO+T,EAAe9yJ,GAEtB,IAAIiD,KAAKg6I,KAIpB,IAeItnJ,EAfA+lK,EAAe,CACjBnN,sBAAuBA,EACvBtM,aAAcA,EACd9vG,OAAQA,GAINwpH,EAAU,CACZ,CACEpB,SAAUc,GACV9mF,IAAKqnF,GACLxwI,MAAO,IAMPg4D,EAASq4E,EAAapxI,MAAM0nI,IAEhC,IAAKp8J,EAAI,EAAGA,EAAIytF,EAAOprF,OAAQrC,IAAK,CAClC,IAAIyuF,EAAQhB,EAAOztF,IAEdqK,EAAQ00I,sBAAwBmd,GAAiBztE,IACpD0tE,GAAoB1tE,GAGtB,IAAIouE,EAAiBpuE,EAAM,GACvBx5B,EAAS0vG,GAAQ9H,GACrB,GAAI5nG,EAAQ,CACV,IAAI0jG,EAAc1jG,EAAOxsD,MACvBghJ,EACAh7D,EACAjyC,EAAO9nB,MACPqxI,GAGF,IAAKpN,EACH,OAAO,IAAIrrJ,KAAKg6I,KAGlB0e,EAAQ3iK,KAAK,CACXuhK,SAAU3vG,EAAO2vG,SACjBhmF,IAAK3pB,EAAO2pB,IACZnrE,SAAUwhD,EAAOxhD,SACjBxS,MAAO03J,EAAY13J,MACnBw0B,MAAOuwI,EAAQ3jK,SAGjBonJ,EAAakP,EAAYxB,SACpB,CASL,GAPc,OAAV1oE,EACFA,EAAQ,IACoB,MAAnBouE,IACTpuE,EAA2BA,EAkFpB/5D,MAAM4nI,IAAqB,GAAGr3J,QAAQs3J,GAAmB,MA9EhC,IAA9B9S,EAAW3mJ,QAAQ2rF,GAGrB,OAAO,IAAInhF,KAAKg6I,KAFhBmC,EAAaA,EAAW5jJ,MAAM4oF,EAAMpsF,SAQ1C,GAAIonJ,EAAWpnJ,OAAS,GAAKsjK,GAAoB5/J,KAAK0jJ,GACpD,OAAO,IAAIn8I,KAAKg6I,KAGlB,IAAI4e,EAAwBF,EACzB15J,IAAI,SAASwzH,GACZ,OAAOA,EAAO8kC,WAEf9jI,KAAK,SAASp8B,EAAGC,GAChB,OAAOA,EAAID,IAEZ8M,OAAO,SAASozJ,EAAUnvI,EAAOouD,GAChC,OAAOA,EAAM/gF,QAAQ8hK,KAAcnvI,IAEpCnpB,IAAI,SAASs4J,GACZ,OAAOoB,EACJx0J,OAAO,SAASsuH,GACf,OAAOA,EAAO8kC,WAAaA,IAE5B/6H,YAEJv9B,IAAI,SAAS65J,GACZ,OAAOA,EAAY,KAGnBj6F,EAAOk9E,EAAO+T,EAAe9yJ,GAEjC,GAAIoqB,MAAMy3C,GACR,OAAO,IAAI5+D,KAAKg6I,KAMlB,IAAIqV,EAAUX,GAAgB9vF,EAAMs7E,EAAgCt7E,IAEpE,IAAKlsE,EAAI,EAAGA,EAAIkmK,EAAsB7jK,OAAQrC,IAAK,CACjD,IAAI8/H,EAASomC,EAAsBlmK,GAEnC,GACE8/H,EAAOrsH,WACNqsH,EAAOrsH,SAASkpJ,EAAS78B,EAAO7+H,MAAO8kK,GAExC,OAAO,IAAIz4J,KAAKg6I,KAGlBqV,EAAU78B,EAAOlhD,IAAI+9E,EAAS78B,EAAO7+H,MAAO8kK,GAG9C,OAAOpJ,EAGT,SAASsJ,GAAqB/5F,GAC5B,IAAIk6F,EAAgB,IAAI94J,KAAK,GAY7B,OAXA84J,EAAcnZ,YACZ/gF,EAAK8sF,iBACL9sF,EAAKsuF,cACLtuF,EAAK0/E,cAEPwa,EAAc3Z,SACZvgF,EAAK8uF,cACL9uF,EAAK+uF,gBACL/uF,EAAKgvF,gBACLhvF,EAAKmvF,sBAEA+K,ECxdM,SAASC,GAAuB5e,EAAW6e,EAAgBjd,GACxE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,uDAGtB,IAAIu0J,EAAiC,IAArBnkK,UAAUC,OAAe,EAAI+kJ,EAAUkf,GAOvD,GALyB,IAArBlkK,UAAUC,QAA0C,iBAAnBikK,GAAyD,iBAAnBA,IACzEjd,EAAeid,EACfC,EAAY,IAGTA,GAAaA,EAAY,IAAMA,EAAY,EAC9C,MAAM,IAAIhd,WAAW,sCAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAW4B,GACzB8B,EAAUj/E,EAAK6yF,aACf9T,EAAU/+E,EAAK0yF,aAAezT,EAAU,GACxCqb,EAAiB7tJ,KAAKC,MAAMqyI,EAAUsb,GAAaA,EACnDE,EAAmBxb,EAAUsb,EAC7BG,EAAe/tJ,KAAK+sD,MAAM+gG,EAAmBF,GAAaA,EAE9D,OAAO,IAAIj5J,KAAK4+D,EAAK6gF,cAAe7gF,EAAKoiF,WAAYpiF,EAAKoR,UAAWpR,EAAKoyF,WAAYkI,EAAiBE,GCvB1F,SAASrpF,GAASoqE,EAAWkf,EAAiBtd,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBqR,EAAatT,EAAUuf,GAE3B,OADAz6F,EAAKmR,QAAQq9E,GACNxuF,ECCM,SAAS06F,GAAQnf,EAAWmb,EAAUvZ,GACnD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB6vG,EAAqB7vG,GAAUA,EAAOnyC,SAAWmyC,EAAOnyC,QAAQiiJ,aAChEC,EAA4C,MAAtBF,EAA6B,EAAIjF,EAAUiF,GACjEC,EAAuC,MAAxBjiJ,EAAQiiJ,aAAuBC,EAAsBnF,EAAU/8I,EAAQiiJ,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI/C,WAAW,oDAGvB,IAAIr9E,EAAOk9E,EAAO3B,EAAWp9I,GACzBqgJ,EAAMtD,EAAUwb,GAChBiE,EAAa36F,EAAKsgF,SAMtB,OAAOT,EAAQ7/E,IAJCw+E,EAAM,EACM,GAAK,EAEV4B,EAAe,EAAI,GAAK5B,EAAMmc,EAC1Bx8J,GCjCd,SAASy8J,GAAcrf,EAAWsf,EAAgB1d,GAC/D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBiB,EAAYlD,EAAU2f,GAG1B,OAFA76F,EAAK0iF,SAAS,GACd1iF,EAAKmR,QAAQitE,GACNp+E,ECTM,SAASugF,GAAUhF,EAAWuf,EAAY3d,GACvD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB2B,EAAQ5D,EAAU4f,GAEtB,OADA96F,EAAKugF,SAASzB,GACP9+E,ECJM,SAAS+6F,GAAWxf,EAAWmb,EAAUvZ,GACtD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAI7B,OAAO0C,EAAQ7/E,EAHLk7E,EAAUwb,GACHrE,GAAUryF,EAAMm9E,GAENA,GCVd,SAAS6d,GAAYzf,EAAWyd,EAAc7b,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBoR,EAAUrT,EAAU8d,GACpB32H,EAAOiwH,GAAWtyF,EAAMm9E,GAAgBoR,EAE5C,OADAvuF,EAAKmR,QAAQnR,EAAKoR,UAAmB,EAAP/uC,GACvB29B,ECZM,SAAS6nF,GAAiBtM,EAAW0f,EAAmB9d,GACrE,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB+R,EAAehU,EAAU+f,GAE7B,OADAj7F,EAAK6nF,gBAAgBqH,GACdlvF,ECRM,SAASwnF,GAAYjM,EAAW2f,EAAc/d,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB4B,EAAU7D,EAAUggB,GAExB,OADAl7F,EAAKwnF,WAAWzI,GACT/+E,ECPM,SAAS0iF,GAAUnH,EAAW4f,EAAYhe,GACvD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBtsD,EAAQqqD,EAAUigB,GAClBrd,EAAO99E,EAAK6gF,cACZrC,EAAMx+E,EAAKoR,UAEXoxE,EAAuB,IAAIphJ,KAAK,GACpCohJ,EAAqBzB,YAAYjD,EAAMjtD,EAAO,IAC9C2xD,EAAqBjC,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIkC,EAAcP,EAAeM,EAAsBrF,GAIvD,OADAn9E,EAAK0iF,SAAS7xD,EAAOpkF,KAAK2G,IAAIorI,EAAKiE,IAC5BziF,ECjBM,SAASo7F,GAAY7f,EAAW8f,EAAcle,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GAGzB96G,EAFU64G,EAAUmgB,IACP5uJ,KAAKC,MAAMszD,EAAKoiF,WAAa,GAAK,GAEnD,OAAOM,GAAS1iF,EAAMA,EAAKoiF,WAAoB,EAAP//G,EAAU86G,GCVrC,SAASzB,GAAYH,EAAW+f,EAAcne,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzB8B,EAAU/D,EAAUogB,GAExB,OADAt7F,EAAK07E,WAAWuD,GACTj/E,ECUM,SAASu7F,GAAShgB,EAAWud,EAAW3b,GACrD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBnsD,EAAOkqD,EAAU4d,GACjBz2H,EAAO4wH,GAAQjzF,EAAMm9E,GAAgBnsD,EAEzC,OADAhxB,EAAKmR,QAAQnR,EAAKoR,UAAmB,EAAP/uC,GACvB29B,ECPM,SAASw7F,GAAajgB,EAAWkgB,EAAete,GAC7D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAIgI,EAAUg/I,GAAgB,GAC1B7sG,EAASnyC,EAAQmyC,OACjB68G,EAA8B78G,GAChCA,EAAOnyC,SACPmyC,EAAOnyC,QAAQuuJ,sBACbU,EAC6B,MAA/BD,EACI,EACAjS,EAAUiS,GACZT,EAC+B,MAAjCvuJ,EAAQuuJ,sBACJU,EACAlS,EAAU/8I,EAAQuuJ,uBAEpB1sF,EAAOk9E,EAAO3B,EAAW4B,GACzBkR,EAAWnT,EAAUugB,GACrBp5H,EAAOk/G,EAAyBvhF,EAAMgzF,GAAgBhzF,EAAMm9E,GAAeA,GAC3EqQ,EAAY,IAAIpsJ,KAAK,GAKzB,OAJAosJ,EAAUzM,YAAYsN,EAAU,EAAG3B,GACnCc,EAAUjN,SAAS,EAAG,EAAG,EAAG,IAC5BvgF,EAAOgzF,GAAgBxF,EAAWrQ,IAC7BhsE,QAAQnR,EAAKoR,UAAY/uC,GACvB29B,EC/CM,SAAS07F,GAASngB,EAAWogB,EAAWxe,GACrD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAG7E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO5C,EAAUygB,GAGrB,OAAIpzI,MAAMy3C,GACD,IAAI5+D,KAAKg6I,MAGlBp7E,EAAK+gF,YAAYjD,GACV99E,GCjBM,SAAS47F,GAAergB,EAAW4B,GAChD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,iCAAmC5P,UAAUC,OAAS,YAG5E,IAAI6pE,EAAOk9E,EAAO3B,EAAW4B,GACzBW,EAAO99E,EAAK6gF,cACZyG,EAAiC,GAAxB76I,KAAKC,MAAMoxI,EAAO,IAG/B,OAFA99E,EAAK+gF,YAAYuG,EAAQ,EAAG,GAC5BtnF,EAAKugF,SAAS,EAAG,EAAG,EAAG,GAChBvgF,ECPM,SAAS67F,GAAStgB,EAAWuE,EAAa3C,GACvD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO0pJ,EAAQtE,GADFL,EAAU4E,GACY3C,GCNtB,SAAS2e,GAAUvgB,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO8pJ,EAAS1E,GADHL,EAAU4E,GACa3C,GCNvB,SAAS4e,GAAYxgB,EAAWuE,EAAa3C,GAC1D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO8rJ,EAAW1G,GADLL,EAAU4E,GACe3C,GCNzB,SAAS6e,GAAWzgB,EAAWuE,EAAa3C,GACzD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAOmsJ,EAAU/G,GADJL,EAAU4E,GACc3C,GCNxB,SAAS8e,GAAa1gB,EAAWuE,EAAa3C,GAC3D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAOwsJ,EAAYpH,GADNL,EAAU4E,GACgB3C,GCN1B,SAAS+e,GAAY3gB,EAAWuE,EAAa3C,GAC1D,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAOysJ,EAAWrH,GADLL,EAAU4E,GACe3C,GCNzB,SAASgf,GAAU5gB,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO0sJ,EAAStH,GADHL,EAAU4E,GACa3C,GCNvB,SAASif,GAAU7gB,EAAWuE,EAAa3C,GACxD,GAAIjnJ,UAAUC,OAAS,EACrB,MAAM,IAAI2P,UAAU,kCAAoC5P,UAAUC,OAAS,YAI7E,OAAO2sJ,EAASvH,GADHL,EAAU4E,GACa3C,GC9BtCzpJ,EAAAU,EAAAmC,EAAA,4BAAAspJ,IAAAnsJ,EAAAU,EAAAmC,EAAA,6BAAA0pJ,IAAAvsJ,EAAAU,EAAAmC,EAAA,oCAAAyrJ,IAAAtuJ,EAAAU,EAAAmC,EAAA,oCAAAypJ,IAAAtsJ,EAAAU,EAAAmC,EAAA,+BAAA0rJ,IAAAvuJ,EAAAU,EAAAmC,EAAA,8BAAA+rJ,IAAA5uJ,EAAAU,EAAAmC,EAAA,gCAAAosJ,IAAAjvJ,EAAAU,EAAAmC,EAAA,+BAAAqsJ,IAAAlvJ,EAAAU,EAAAmC,EAAA,6BAAAssJ,IAAAnvJ,EAAAU,EAAAmC,EAAA,6BAAAusJ,IAAApvJ,EAAAU,EAAAmC,EAAA,4CAAAwsJ,IAAArvJ,EAAAU,EAAAmC,EAAA,mCAAAitJ,IAAA9vJ,EAAAU,EAAAmC,EAAA,8BAAAytJ,IAAAtwJ,EAAAU,EAAAmC,EAAA,+BAAA0tJ,IAAAvwJ,EAAAU,EAAAmC,EAAA,gCAAA6tJ,IAAA1wJ,EAAAU,EAAAmC,EAAA,6CAAAgrJ,IAAA7tJ,EAAAU,EAAAmC,EAAA,qDAAA8tJ,IAAA3wJ,EAAAU,EAAAmC,EAAA,iDAAAguJ,IAAA7wJ,EAAAU,EAAAmC,EAAA,+CAAAmuJ,IAAAhxJ,EAAAU,EAAAmC,EAAA,iDAAAquJ,IAAAlxJ,EAAAU,EAAAmC,EAAA,8CAAAsuJ,IAAAnxJ,EAAAU,EAAAmC,EAAA,8CAAAyuJ,KAAAtxJ,EAAAU,EAAAmC,EAAA,qCAAA0uJ,KAAAvxJ,EAAAU,EAAAmC,EAAA,sCAAA8uJ,KAAA3xJ,EAAAU,EAAAmC,EAAA,6CAAAgvJ,KAAA7xJ,EAAAU,EAAAmC,EAAA,6CAAA6uJ,KAAA1xJ,EAAAU,EAAAmC,EAAA,wCAAAivJ,KAAA9xJ,EAAAU,EAAAmC,EAAA,uCAAAkvJ,KAAA/xJ,EAAAU,EAAAmC,EAAA,yCAAAmvJ,KAAAhyJ,EAAAU,EAAAmC,EAAA,wCAAAovJ,KAAAjyJ,EAAAU,EAAAmC,EAAA,sCAAAqvJ,KAAAlyJ,EAAAU,EAAAmC,EAAA,sCAAAsvJ,KAAAnyJ,EAAAU,EAAAmC,EAAA,sCAAAuvJ,KAAApyJ,EAAAU,EAAAmC,EAAA,uCAAA2vJ,KAAAxyJ,EAAAU,EAAAmC,EAAA,0CAAAmwJ,KAAAhzJ,EAAAU,EAAAmC,EAAA,uCAAAwwJ,KAAArzJ,EAAAU,EAAAmC,EAAA,sCAAA4wJ,KAAAzzJ,EAAAU,EAAAmC,EAAA,6BAAA6wJ,KAAA1zJ,EAAAU,EAAAmC,EAAA,gCAAA8wJ,KAAA3zJ,EAAAU,EAAAmC,EAAA,8BAAAgxJ,KAAA7zJ,EAAAU,EAAAmC,EAAA,iCAAAmxJ,KAAAh0J,EAAAU,EAAAmC,EAAA,qCAAAqxJ,KAAAl0J,EAAAU,EAAAmC,EAAA,gCAAAwxJ,KAAAr0J,EAAAU,EAAAmC,EAAA,+BAAAuwJ,KAAApzJ,EAAAU,EAAAmC,EAAA,iCAAAyxJ,KAAAt0J,EAAAU,EAAAmC,EAAA,gCAAA2xJ,KAAAx0J,EAAAU,EAAAmC,EAAA,8BAAAkxJ,KAAA/zJ,EAAAU,EAAAmC,EAAA,8BAAA2wJ,KAAAxzJ,EAAAU,EAAAmC,EAAA,2BAAAgC,KAAA7E,EAAAU,EAAAmC,EAAA,mCAAA8lK,KAAA3oK,EAAAU,EAAAmC,EAAA,yCAAAo7J,KAAAj+J,EAAAU,EAAAmC,EAAA,mCAAA+lK,KAAA5oK,EAAAU,EAAAmC,EAAA,iCAAAw7J,KAAAr+J,EAAAU,EAAAmC,EAAA,4BAAA66E,KAAA19E,EAAAU,EAAAmC,EAAA,2BAAA+pJ,KAAA5sJ,EAAAU,EAAAmC,EAAA,iCAAA07J,KAAAv+J,EAAAU,EAAAmC,EAAA,mCAAA2rJ,IAAAxuJ,EAAAU,EAAAmC,EAAA,kCAAA27J,KAAAx+J,EAAAU,EAAAmC,EAAA,8BAAA47J,KAAAz+J,EAAAU,EAAAmC,EAAA,6BAAA67J,KAAA1+J,EAAAU,EAAAmC,EAAA,8BAAA87J,KAAA3+J,EAAAU,EAAAmC,EAAA,+BAAA+7J,KAAA5+J,EAAAU,EAAAmC,EAAA,mCAAAqqJ,IAAAltJ,EAAAU,EAAAmC,EAAA,sCAAAg8J,KAAA7+J,EAAAU,EAAAmC,EAAA,oCAAAuxJ,KAAAp0J,EAAAU,EAAAmC,EAAA,+BAAAm8J,KAAAh/J,EAAAU,EAAAmC,EAAA,6BAAA6rJ,KAAA1uJ,EAAAU,EAAAmC,EAAA,kDAAAo8J,KAAAj/J,EAAAU,EAAAmC,EAAA,+BAAAouJ,IAAAjxJ,EAAAU,EAAAmC,EAAA,+BAAAs8J,KAAAn/J,EAAAU,EAAAmC,EAAA,4BAAAuM,KAAApP,EAAAU,EAAAmC,EAAA,gCAAAu8J,KAAAp/J,EAAAU,EAAAmC,EAAA,4BAAA08J,KAAAv/J,EAAAU,EAAAmC,EAAA,mCAAA28J,KAAAx/J,EAAAU,EAAAmC,EAAA,gCAAAw8J,KAAAr/J,EAAAU,EAAAmC,EAAA,oCAAA68J,KAAA1/J,EAAAU,EAAAmC,EAAA,4BAAA88J,KAAA3/J,EAAAU,EAAAmC,EAAA,4BAAA+8J,KAAA5/J,EAAAU,EAAAmC,EAAA,6BAAAg9J,KAAA7/J,EAAAU,EAAAmC,EAAA,2BAAAi9J,KAAA9/J,EAAAU,EAAAmC,EAAA,4BAAAk9J,KAAA//J,EAAAU,EAAAmC,EAAA,sCAAAq9J,KAAAlgK,EAAAU,EAAAmC,EAAA,6BAAAs9J,KAAAngK,EAAAU,EAAAmC,EAAA,qCAAAu9J,KAAApgK,EAAAU,EAAAmC,EAAA,+BAAA8nJ,KAAA3qJ,EAAAU,EAAAmC,EAAA,6BAAAw9J,KAAArgK,EAAAU,EAAAmC,EAAA,8BAAAy9J,KAAAtgK,EAAAU,EAAAmC,EAAA,+BAAA69J,KAAA1gK,EAAAU,EAAAmC,EAAA,kCAAAm+J,KAAAhhK,EAAAU,EAAAmC,EAAA,sCAAAq+J,KAAAlhK,EAAAU,EAAAmC,EAAA,iCAAAy+J,KAAAthK,EAAAU,EAAAmC,EAAA,gCAAA4+J,KAAAzhK,EAAAU,EAAAmC,EAAA,kCAAA8+J,KAAA3hK,EAAAU,EAAAmC,EAAA,iCAAAk/J,KAAA/hK,EAAAU,EAAAmC,EAAA,+BAAAg+J,KAAA7gK,EAAAU,EAAAmC,EAAA,+BAAAq/J,KAAAliK,EAAAU,EAAAmC,EAAA,+BAAAs/J,KAAAniK,EAAAU,EAAAmC,EAAA,6BAAAiwJ,KAAA9yJ,EAAAU,EAAAmC,EAAA,+BAAAu/J,KAAApiK,EAAAU,EAAAmC,EAAA,8BAAAw/J,KAAAriK,EAAAU,EAAAmC,EAAA,4BAAAspE,KAAAnsE,EAAAU,EAAAmC,EAAA,gCAAAy/J,KAAAtiK,EAAAU,EAAAmC,EAAA,8BAAAkwJ,KAAA/yJ,EAAAU,EAAAmC,EAAA,qCAAA0/J,KAAAviK,EAAAU,EAAAmC,EAAA,oCAAA2/J,KAAAxiK,EAAAU,EAAAmC,EAAA,qCAAA6/J,KAAA1iK,EAAAU,EAAAmC,EAAA,yCAAA+/J,KAAA5iK,EAAAU,EAAAmC,EAAA,mCAAAgmK,KAAA7oK,EAAAU,EAAAmC,EAAA,qCAAAggK,KAAA7iK,EAAAU,EAAAmC,EAAA,kCAAA4/J,KAAAziK,EAAAU,EAAAmC,EAAA,kCAAAigK,KAAA9iK,EAAAU,EAAAmC,EAAA,wBAAAyc,KAAAtf,EAAAU,EAAAmC,EAAA,wBAAA6c,KAAA1f,EAAAU,EAAAmC,EAAA,0BAAAgG,KAAA7I,EAAAU,EAAAmC,EAAA,0CAAA4jK,KAAAzmK,EAAAU,EAAAmC,EAAA,4BAAA46E,KAAAz9E,EAAAU,EAAAmC,EAAA,2BAAAmkK,KAAAhnK,EAAAU,EAAAmC,EAAA,iCAAAqkK,KAAAlnK,EAAAU,EAAAmC,EAAA,6BAAAgqJ,KAAA7sJ,EAAAU,EAAAmC,EAAA,8BAAAwkK,KAAArnK,EAAAU,EAAAmC,EAAA,+BAAAykK,KAAAtnK,EAAAU,EAAAmC,EAAA,mCAAAurJ,IAAApuJ,EAAAU,EAAAmC,EAAA,oCAAAsxJ,KAAAn0J,EAAAU,EAAAmC,EAAA,+BAAAixJ,KAAA9zJ,EAAAU,EAAAmC,EAAA,6BAAAmsJ,KAAAhvJ,EAAAU,EAAAmC,EAAA,+BAAA6kK,KAAA1nK,EAAAU,EAAAmC,EAAA,+BAAAmlJ,KAAAhoJ,EAAAU,EAAAmC,EAAA,4BAAAglK,KAAA7nK,EAAAU,EAAAmC,EAAA,gCAAAilK,KAAA9nK,EAAAU,EAAAmC,EAAA,4BAAAmlK,KAAAhoK,EAAAU,EAAAmC,EAAA,+BAAA8qJ,IAAA3tJ,EAAAU,EAAAmC,EAAA,kCAAAqlK,KAAAloK,EAAAU,EAAAmC,EAAA,gCAAA49J,KAAAzgK,EAAAU,EAAAmC,EAAA,mCAAAmqJ,IAAAhtJ,EAAAU,EAAAmC,EAAA,uCAAA4qJ,IAAAztJ,EAAAU,EAAAmC,EAAA,kCAAAw+J,KAAArhK,EAAAU,EAAAmC,EAAA,iCAAAswJ,KAAAnzJ,EAAAU,EAAAmC,EAAA,mCAAA6+J,KAAA1hK,EAAAU,EAAAmC,EAAA,kCAAAi/J,KAAA9hK,EAAAU,EAAAmC,EAAA,gCAAA2pJ,IAAAxsJ,EAAAU,EAAAmC,EAAA,oCAAAy8J,KAAAt/J,EAAAU,EAAAmC,EAAA,gCAAAywJ,KAAAtzJ,EAAAU,EAAAmC,EAAA,4BAAAslK,KAAAnoK,EAAAU,EAAAmC,EAAA,6BAAAulK,KAAApoK,EAAAU,EAAAmC,EAAA,oCAAA+uJ,KAAA5xJ,EAAAU,EAAAmC,EAAA,oCAAAu5J,KAAAp8J,EAAAU,EAAAmC,EAAA,+BAAAwlK,KAAAroK,EAAAU,EAAAmC,EAAA,8BAAAylK,KAAAtoK,EAAAU,EAAAmC,EAAA,gCAAA0lK,KAAAvoK,EAAAU,EAAAmC,EAAA,+BAAA2lK,KAAAxoK,EAAAU,EAAAmC,EAAA,6BAAA4lK,KAAAzoK,EAAAU,EAAAmC,EAAA,6BAAA6lK,KAAA1oK,EAAAU,EAAAmC,EAAA,2BAAA2mJ,oHCAA,SAASsf,EAAWC,GAClB,MAA8B,MAAvBA,EAAS36G,OAAO,GAIzB,SAAS46G,EAAU7pJ,EAAM0W,GACvB,IAAK,IAAIz1B,EAAIy1B,EAAO9O,EAAI3mB,EAAI,EAAGyB,EAAIsd,EAAK1c,OAAQskB,EAAIllB,EAAGzB,GAAK,EAAG2mB,GAAK,EAClE5H,EAAK/e,GAAK+e,EAAK4H,GAGjB5H,EAAKu/D,MA2DQuqF,MAvDf,SAAyBj2J,GACvB,IAAIF,EAAOtQ,UAAUC,OAAS,QAAsBsB,IAAjBvB,UAAU,GAAmBA,UAAU,GAAK,GAE3E0mK,EAAUl2J,GAAMA,EAAGL,MAAM,MAAQ,GACjCw2J,EAAYr2J,GAAQA,EAAKH,MAAM,MAAQ,GAEvCy2J,EAAUp2J,GAAM81J,EAAW91J,GAC3Bq2J,EAAYv2J,GAAQg2J,EAAWh2J,GAC/Bw2J,EAAaF,GAAWC,EAW5B,GATIr2J,GAAM81J,EAAW91J,GAEnBm2J,EAAYD,EACHA,EAAQzmK,SAEjB0mK,EAAUzqF,MACVyqF,EAAYA,EAAU/0J,OAAO80J,KAG1BC,EAAU1mK,OAAQ,MAAO,IAE9B,IAAI8mK,OAAmB,EACvB,GAAIJ,EAAU1mK,OAAQ,CACpB,IAAI6qD,EAAO67G,EAAUA,EAAU1mK,OAAS,GACxC8mK,EAA4B,MAATj8G,GAAyB,OAATA,GAA0B,KAATA,OAEpDi8G,GAAmB,EAIrB,IADA,IAAIrwH,EAAK,EACA94C,EAAI+oK,EAAU1mK,OAAQrC,GAAK,EAAGA,IAAK,CAC1C,IAAIopK,EAAOL,EAAU/oK,GAER,MAATopK,EACFR,EAAUG,EAAW/oK,GACH,OAATopK,GACTR,EAAUG,EAAW/oK,GACrB84C,KACSA,IACT8vH,EAAUG,EAAW/oK,GACrB84C,KAIJ,IAAKowH,EAAY,KAAOpwH,IAAMA,EAC5BiwH,EAAU/yI,QAAQ,OACfkzI,GAA+B,KAAjBH,EAAU,IAAeA,EAAU,IAAOL,EAAWK,EAAU,KAAMA,EAAU/yI,QAAQ,IAE1G,IAAInT,EAASkmJ,EAAUtlK,KAAK,KAI5B,OAFI0lK,GAA0C,MAAtBtmJ,EAAOg6D,QAAQ,KAAYh6D,GAAU,KAEtDA,GClEuB,mBAAX9hB,QAAgCA,OAAO+R,SAqC7Cu2J,ICrCXC,GAAetsC,EACf/wE,EAAS,mBAaEs9G,MAZf,SAAmB/kK,EAAWsG,GAC5B,IAAItG,EAIJ,MAAI8kK,EACI,IAAIxkK,MAAMmnD,GAEV,IAAInnD,MAAMmnD,EAAS,MAAQnhD,GAAW,MCJhD,SAAS0+J,EAAgB7/I,GACvB,MAA0B,MAAnBA,EAAKqkC,OAAO,GAAarkC,EAAO,IAAMA,EAQ/C,SAAS8/I,EAAc9/I,EAAMsiC,GAC3B,OAJF,SAAqBtiC,EAAMsiC,GACzB,OAAO,IAAIod,OAAO,IAAMpd,EAAS,gBAAiB,KAAKlmD,KAAK4jB,GAGrD+/I,CAAY//I,EAAMsiC,GAAUtiC,EAAKkzD,OAAO5wB,EAAO5pD,QAAUsnB,EAElE,SAASggJ,EAAmBhgJ,GAC1B,MAAwC,MAAjCA,EAAKqkC,OAAOrkC,EAAKtnB,OAAS,GAAasnB,EAAK9jB,MAAM,GAAI,GAAK8jB,EA0BpE,SAASigJ,EAAWz2J,GAClB,IAAIw1J,EAAWx1J,EAASw1J,SACpB9kH,EAAS1wC,EAAS0wC,OAClBgyE,EAAO1iH,EAAS0iH,KAChBlsG,EAAOg/I,GAAY,IAGvB,OAFI9kH,GAAqB,MAAXA,IAAgBl6B,GAA6B,MAArBk6B,EAAOmK,OAAO,GAAanK,EAAS,IAAMA,GAC5EgyE,GAAiB,MAATA,IAAclsG,GAA2B,MAAnBksG,EAAK7nE,OAAO,GAAa6nE,EAAO,IAAMA,GACjElsG,EAGT,SAASkgJ,EAAelgJ,EAAMvc,EAAO7L,EAAKuoK,GACxC,IAAI32J,EAEgB,iBAATwW,GAETxW,EAvCJ,SAAmBwW,GACjB,IAAIg/I,EAAWh/I,GAAQ,IACnBk6B,EAAS,GACTgyE,EAAO,GACPk0C,EAAYpB,EAAS7lK,QAAQ,MAEd,IAAfinK,IACFl0C,EAAO8yC,EAAS9rF,OAAOktF,GACvBpB,EAAWA,EAAS9rF,OAAO,EAAGktF,IAGhC,IAAIC,EAAcrB,EAAS7lK,QAAQ,KAOnC,OALqB,IAAjBknK,IACFnmH,EAAS8kH,EAAS9rF,OAAOmtF,GACzBrB,EAAWA,EAAS9rF,OAAO,EAAGmtF,IAGzB,CACLrB,SAAUA,EACV9kH,OAAmB,MAAXA,EAAiB,GAAKA,EAC9BgyE,KAAe,MAATA,EAAe,GAAKA,GAkBfo0C,CAAUtgJ,IACZvc,MAAQA,QAISzJ,KAD1BwP,EAAWlR,YAAS,GAAI0nB,IACXg/I,WAAwBx1J,EAASw1J,SAAW,IAErDx1J,EAAS0wC,OACuB,MAA9B1wC,EAAS0wC,OAAOmK,OAAO,KAAY76C,EAAS0wC,OAAS,IAAM1wC,EAAS0wC,QAExE1wC,EAAS0wC,OAAS,GAGhB1wC,EAAS0iH,KACqB,MAA5B1iH,EAAS0iH,KAAK7nE,OAAO,KAAY76C,EAAS0iH,KAAO,IAAM1iH,EAAS0iH,MAEpE1iH,EAAS0iH,KAAO,QAGJlyH,IAAVyJ,QAA0CzJ,IAAnBwP,EAAS/F,QAAqB+F,EAAS/F,MAAQA,IAG5E,IACE+F,EAASw1J,SAAWuB,UAAU/2J,EAASw1J,UACvC,MAAO/jK,GACP,MAAIA,aAAaulK,SACT,IAAIA,SAAS,aAAeh3J,EAASw1J,SAAW,iFAEhD/jK,EAoBV,OAhBIrD,IAAK4R,EAAS5R,IAAMA,GAEpBuoK,EAEG32J,EAASw1J,SAE6B,MAAhCx1J,EAASw1J,SAAS36G,OAAO,KAClC76C,EAASw1J,SAAWE,EAAgB11J,EAASw1J,SAAUmB,EAAgBnB,WAFvEx1J,EAASw1J,SAAWmB,EAAgBnB,SAMjCx1J,EAASw1J,WACZx1J,EAASw1J,SAAW,KAIjBx1J,EAMT,SAASi3J,IACP,IAAIC,EAAS,KAiCb,IAAIC,EAAY,GA4BhB,MAAO,CACLC,UA5DF,SAAmBC,GAGjB,OADAH,EAASG,EACF,WACDH,IAAWG,IAAYH,EAAS,QAyDtCI,oBArDF,SAA6Bt3J,EAAUkI,EAAQqvJ,EAAqBp/J,GAIlE,GAAc,MAAV++J,EAAgB,CAClB,IAAIxnJ,EAA2B,mBAAXwnJ,EAAwBA,EAAOl3J,EAAUkI,GAAUgvJ,EAEjD,iBAAXxnJ,EAC0B,mBAAxB6nJ,EACTA,EAAoB7nJ,EAAQvX,GAG5BA,GAAS,GAIXA,GAAoB,IAAXuX,QAGXvX,GAAS,IAmCXq/J,eA7BF,SAAwB7gD,GACtB,IAAI8gD,GAAW,EAEf,SAASjhK,IACHihK,GAAU9gD,EAAGvnH,WAAM,EAAQH,WAIjC,OADAkoK,EAAUjnK,KAAKsG,GACR,WACLihK,GAAW,EACXN,EAAYA,EAAU94J,OAAO,SAAUs4B,GACrC,OAAOA,IAASngC,MAmBpBkhK,gBAdF,WACE,IAAK,IAAI/2J,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzBu2J,EAAUviK,QAAQ,SAAU4B,GAC1B,OAAOA,EAASpH,WAAM,EAAQwC,OAYpC,IAAI+lK,IAAiC,oBAAX1lK,SAA0BA,OAAOC,WAAYD,OAAOC,SAASC,eACvF,SAASylK,EAAgBjgK,EAASQ,GAChCA,EAASlG,OAAO4lK,QAAQlgK,IAwC1B,IAAImgK,EAAgB,WAChBC,EAAkB,aAEtB,SAASC,IACP,IACE,OAAO/lK,OAAOijC,QAAQj7B,OAAS,GAC/B,MAAOxI,GAGP,MAAO,IASX,SAASwmK,EAAqB1jK,QACd,IAAVA,IACFA,EAAQ,IAGTojK,GAAsGvB,GAAU,GACjH,IArDIhnH,EAqDA8oH,EAAgBjmK,OAAOijC,QACvBijI,IArD+B,KAD/B/oH,EAAKn9C,OAAOo9C,UAAUC,WAClB3/C,QAAQ,gBAAuD,IAA/By/C,EAAGz/C,QAAQ,iBAA2D,IAAjCy/C,EAAGz/C,QAAQ,mBAAqD,IAA1By/C,EAAGz/C,QAAQ,YAAqD,IAAjCy/C,EAAGz/C,QAAQ,mBACtJsC,OAAOijC,SAAW,cAAejjC,OAAOijC,QAqD3CkjI,KA7CsD,IAAnDnmK,OAAOo9C,UAAUC,UAAU3/C,QAAQ,YA8CtC0oK,EAAS9jK,EACT+jK,EAAsBD,EAAOE,aAC7BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAwBH,EAAOd,oBAC/BA,OAAgD,IAA1BiB,EAAmCZ,EAAkBY,EAC3EC,EAAmBJ,EAAOK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CE,EAAWpkK,EAAMokK,SAAWnC,EAAmBH,EAAgB9hK,EAAMokK,WAAa,GAEtF,SAASC,EAAeC,GACtB,IAAI53J,EAAO43J,GAAgB,GACvBzqK,EAAM6S,EAAK7S,IACX6L,EAAQgH,EAAKhH,MAEb6+J,EAAmB7mK,OAAO+N,SAI1BwW,EAHWsiJ,EAAiBtD,SACnBsD,EAAiBpoH,OACnBooH,EAAiBp2C,KAI5B,OADIi2C,IAAUniJ,EAAO8/I,EAAc9/I,EAAMmiJ,IAClCjC,EAAelgJ,EAAMvc,EAAO7L,GAGrC,SAAS2qK,IACP,OAAOvzJ,KAAKE,SAAS0J,SAAS,IAAIs6D,OAAO,EAAGgvF,GAG9C,IAAIM,EAAoB/B,IAExB,SAASxwJ,EAASwyJ,GAChBnqK,YAASomC,EAAS+jI,GAElB/jI,EAAQhmC,OAASgpK,EAAchpK,OAC/B8pK,EAAkBtB,gBAAgBxiI,EAAQl1B,SAAUk1B,EAAQhtB,QAG9D,SAASgxJ,EAAe38J,IApE1B,SAAmCA,QACjB/L,IAAhB+L,EAAMtC,OAAuBo1C,UAAUC,UAAU3/C,QAAQ,UAqEnDwpK,CAA0B58J,IAC9B68J,EAAUR,EAAer8J,EAAMtC,QAGjC,SAASo/J,IACPD,EAAUR,EAAeZ,MAG3B,IAAIsB,GAAe,EAEnB,SAASF,EAAUp5J,GACjB,GAAIs5J,EACFA,GAAe,EACf7yJ,QACK,CAELuyJ,EAAkB1B,oBAAoBt3J,EADzB,MAC2Cu3J,EAAqB,SAAUl6G,GACjFA,EACF52C,EAAS,CACPyB,OAJO,MAKPlI,SAAUA,IASpB,SAAmBu5J,GACjB,IAAIC,EAAatkI,EAAQl1B,SAIrBqlB,EAAUo0I,EAAQ9pK,QAAQ6pK,EAAWprK,MACxB,IAAbi3B,IAAgBA,EAAU,GAC9B,IAAIC,EAAYm0I,EAAQ9pK,QAAQ4pK,EAAanrK,MAC1B,IAAfk3B,IAAkBA,EAAY,GAClC,IAAIsyG,EAAQvyG,EAAUC,EAElBsyG,IACF0hC,GAAe,EACfI,EAAG9hC,IAnBC+hC,CAAU35J,MAuBlB,IAAI45J,EAAkBhB,EAAeZ,KACjCyB,EAAU,CAACG,EAAgBxrK,KAE/B,SAASyrK,EAAW75J,GAClB,OAAO24J,EAAWlC,EAAWz2J,GAuE/B,SAAS05J,EAAGprK,GACV4pK,EAAcwB,GAAGprK,GAWnB,IAAIwrK,EAAgB,EAEpB,SAASC,EAAkBniC,GAGH,KAFtBkiC,GAAiBliC,IAEoB,IAAVA,GACzB3lI,OAAO46B,iBAAiBirI,EAAeoB,GACnCd,GAAyBnmK,OAAO46B,iBAAiBkrI,EAAiBsB,IAC3C,IAAlBS,IACT7nK,OAAO88D,oBAAoB+oG,EAAeoB,GACtCd,GAAyBnmK,OAAO88D,oBAAoBgpG,EAAiBsB,IAI7E,IAAIW,GAAY,EAiChB,IAAI9kI,EAAU,CACZhmC,OAAQgpK,EAAchpK,OACtBgZ,OAAQ,MACRlI,SAAU45J,EACVC,WAAYA,EACZ3pK,KApIF,SAAcsmB,EAAMvc,GAElB,IACI+F,EAAW02J,EAAelgJ,EAAMvc,EAAO8+J,IAAa7jI,EAAQl1B,UAChEg5J,EAAkB1B,oBAAoBt3J,EAFzB,OAE2Cu3J,EAAqB,SAAUl6G,GACrF,GAAKA,EAAL,CACA,IAAIxyC,EAAOgvJ,EAAW75J,GAClB5R,EAAM4R,EAAS5R,IACf6L,EAAQ+F,EAAS/F,MAErB,GAAIk+J,EAMF,GALAD,EAAc+B,UAAU,CACtB7rK,IAAKA,EACL6L,MAAOA,GACN,KAAM4Q,GAEL0tJ,EACFtmK,OAAO+N,SAAS6K,KAAOA,MAClB,CACL,IAAIqvJ,EAAYT,EAAQ9pK,QAAQulC,EAAQl1B,SAAS5R,KAC7C+rK,EAAWV,EAAQ/mK,MAAM,GAAkB,IAAfwnK,EAAmB,EAAIA,EAAY,GACnEC,EAASjqK,KAAK8P,EAAS5R,KACvBqrK,EAAUU,EACV1zJ,EAAS,CACPyB,OAtBK,OAuBLlI,SAAUA,SAKd/N,OAAO+N,SAAS6K,KAAOA,MAuG3B/Y,QAlGF,SAAiB0kB,EAAMvc,GAErB,IACI+F,EAAW02J,EAAelgJ,EAAMvc,EAAO8+J,IAAa7jI,EAAQl1B,UAChEg5J,EAAkB1B,oBAAoBt3J,EAFzB,UAE2Cu3J,EAAqB,SAAUl6G,GACrF,GAAKA,EAAL,CACA,IAAIxyC,EAAOgvJ,EAAW75J,GAClB5R,EAAM4R,EAAS5R,IACf6L,EAAQ+F,EAAS/F,MAErB,GAAIk+J,EAMF,GALAD,EAAckC,aAAa,CACzBhsK,IAAKA,EACL6L,MAAOA,GACN,KAAM4Q,GAEL0tJ,EACFtmK,OAAO+N,SAASlO,QAAQ+Y,OACnB,CACL,IAAIqvJ,EAAYT,EAAQ9pK,QAAQulC,EAAQl1B,SAAS5R,MAC9B,IAAf8rK,IAAkBT,EAAQS,GAAal6J,EAAS5R,KACpDqY,EAAS,CACPyB,OApBK,UAqBLlI,SAAUA,SAKd/N,OAAO+N,SAASlO,QAAQ+Y,OAuE5B6uJ,GAAIA,EACJW,OA/DF,WACEX,GAAI,IA+DJY,UA5DF,WACEZ,EAAG,IA4DHh4H,MAzCF,SAAew1H,QACE,IAAXA,IACFA,GAAS,GAGX,IAAIv1H,EAAUq3H,EAAkB5B,UAAUF,GAO1C,OALK8C,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdp4H,MAwBTpjC,OApBF,SAAgB/H,GACd,IAAI+jK,EAAWvB,EAAkBxB,eAAehhK,GAEhD,OADAujK,EAAkB,GACX,WACLA,GAAmB,GACnBQ,OAiBJ,OAAOrlI,uBCreLpmC,EAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,GAIvP,SAASwrK,EAA2B/4I,EAAMz0B,GAAQ,IAAKy0B,EAAQ,MAAM,IAAImzD,eAAe,6DAAgE,OAAO5nF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8By0B,EAAPz0B,EAalO,IAAIytK,EAAS,SAAU1lF,GAGrB,SAAS0lF,IACP,IAAIz5J,EAAOqE,GAnBf,SAAyBq1J,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI97J,UAAU,qCAqB5G+7J,CAAgBvrK,KAAMorK,GAEtB,IAAK,IAAI95J,EAAO1R,UAAUC,OAAQ0C,EAAOzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzB,OAAeI,EAASqE,EAAQm1J,EAA2BnrK,KAAM0lF,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAiByT,EAAMpL,MAAQ,CAC1JsnB,MAAOlc,EAAMw1J,aAAax1J,EAAM9Q,MAAM2gC,QAAQl1B,SAASw1J,WAC9CgF,EAA2Bn1J,EAAnCrE,GA0DL,OAnFF,SAAmBrQ,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIiO,UAAU,kEAAoEjO,GAAeD,EAASlC,UAAYlB,OAAOY,OAAOyC,GAAcA,EAAWnC,UAAW,CAAEoC,YAAa,CAAE/C,MAAO6C,EAAUlD,YAAY,EAAO69E,UAAU,EAAMJ,cAAc,KAAet6E,IAAYrD,OAAOqX,eAAiBrX,OAAOqX,eAAejU,EAAUC,GAAcD,EAASG,UAAYF,GAY/dkqK,CAAUL,EAAQ1lF,GAgBlB0lF,EAAOhsK,UAAU0xG,gBAAkB,WACjC,MAAO,CACL46D,OAAQjsK,EAAS,GAAIO,KAAKgjF,QAAQ0oF,OAAQ,CACxC7lI,QAAS7lC,KAAKkF,MAAM2gC,QACpB2mD,MAAO,CACL77E,SAAU3Q,KAAKkF,MAAM2gC,QAAQl1B,SAC7BuhB,MAAOlyB,KAAK4K,MAAMsnB,WAM1Bk5I,EAAOhsK,UAAUosK,aAAe,SAAsBrF,GACpD,MAAO,CACLh/I,KAAM,IACN0kC,IAAK,IACLnsB,OAAQ,GACRisI,QAAsB,MAAbxF,IAIbiF,EAAOhsK,UAAUy1G,mBAAqB,WACpC,IAAIh5E,EAAS77B,KAETgpK,EAAShpK,KAAKkF,MACdgD,EAAW8gK,EAAO9gK,SAClB29B,EAAUmjI,EAAOnjI,QAGrBkhI,IAAsB,MAAZ7+J,GAAuD,IAAnCrC,IAAMkqF,SAAS7+B,MAAMhpD,GAAiB,8CAKpElI,KAAKkrK,SAAWrlI,EAAQ32B,OAAO,WAC7B2sB,EAAOzkB,SAAS,CACd8a,MAAO2J,EAAO2vI,aAAa3lI,EAAQl1B,SAASw1J,eAKlDiF,EAAOhsK,UAAUo1G,0BAA4B,SAAmCjtB,GAC9ExlF,IAAQ/B,KAAKkF,MAAM2gC,UAAY0hD,EAAU1hD,QAAS,uCAGpDulI,EAAOhsK,UAAUiY,qBAAuB,WACtCrX,KAAKkrK,YAGPE,EAAOhsK,UAAUyH,OAAS,WACxB,IAAIqB,EAAWlI,KAAKkF,MAAMgD,SAE1B,OAAOA,EAAWrC,IAAMkqF,SAASC,KAAK9nF,GAAY,MAG7CkjK,EAxEI,CAyEXvlK,IAAM+R,WAERwzJ,EAAOv5J,UAAY,CACjBg0B,QAAS0iF,IAAUrpH,OAAOiS,WAC1BjJ,SAAUqgH,IAAUzkH,MAEtBsnK,EAAO96D,aAAe,CACpBo7D,OAAQnjD,IAAUrpH,QAEpBksK,EAAO36D,kBAAoB,CACzBi7D,OAAQnjD,IAAUrpH,OAAOiS,YAIZi6J,ICrGAA,EDqGAA,EEtGf,SAASD,EAA2B/4I,EAAMz0B,GAAQ,IAAKy0B,EAAQ,MAAM,IAAImzD,eAAe,6DAAgE,OAAO5nF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8By0B,EAAPz0B,EAclO,IAAIiuK,EAAgB,SAAUlmF,GAG5B,SAASkmF,IACP,IAAIj6J,EAAOqE,GApBf,SAAyBq1J,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI97J,UAAU,qCAsB5G+7J,CAAgBvrK,KAAM4rK,GAEtB,IAAK,IAAIt6J,EAAO1R,UAAUC,OAAQ0C,EAAOzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzB,OAAeI,EAASqE,EAAQm1J,EAA2BnrK,KAAM0lF,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAiByT,EAAM6vB,QAAUgmI,EAAc71J,EAAM9Q,OAAgBimK,EAA2Bn1J,EAAnCrE,GAW5L,OAnCF,SAAmBrQ,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIiO,UAAU,kEAAoEjO,GAAeD,EAASlC,UAAYlB,OAAOY,OAAOyC,GAAcA,EAAWnC,UAAW,CAAEoC,YAAa,CAAE/C,MAAO6C,EAAUlD,YAAY,EAAO69E,UAAU,EAAMJ,cAAc,KAAet6E,IAAYrD,OAAOqX,eAAiBrX,OAAOqX,eAAejU,EAAUC,GAAcD,EAASG,UAAYF,GAa/dkqK,CAAUG,EAAelmF,GAczBkmF,EAAcxsK,UAAUy1G,mBAAqB,WAC3C9yG,KAAS/B,KAAKkF,MAAM2gC,QAAS,gJAG/B+lI,EAAcxsK,UAAUyH,OAAS,WAC/B,OAAOhB,IAAM/C,cAAcsoK,EAAQ,CAAEvlI,QAAS7lC,KAAK6lC,QAAS39B,SAAUlI,KAAKkF,MAAMgD,YAG5E0jK,EAvBW,CAwBlB/lK,IAAM+R,WAERg0J,EAAc/5J,UAAY,CACxBy3J,SAAU/gD,IAAUj2G,OACpB42J,aAAc3gD,IAAU5/B,KACxBu/E,oBAAqB3/C,IAAU5oG,KAC/B0pJ,UAAW9gD,IAAU/oD,OACrBt3D,SAAUqgH,IAAUzkH,MAIP8nK,yBCjDXE,EAAe,GAEfC,EAAa,EAEbC,EAAc,SAAqB3uJ,EAASxV,GAC9C,IAAIokK,EAAW,GAAKpkK,EAAQ4a,IAAM5a,EAAQ0kF,OAAS1kF,EAAQykF,UACvD2iC,EAAQ68C,EAAaG,KAAcH,EAAaG,GAAY,IAEhE,GAAIh9C,EAAM5xG,GAAU,OAAO4xG,EAAM5xG,GAEjC,IAAIhd,EAAO,GAEP6rK,EAAkB,CAAE9/E,GADfzB,IAAattE,EAAShd,EAAMwH,GACLxH,KAAMA,GAOtC,OALI0rK,EAbW,MAcb98C,EAAM5xG,GAAW6uJ,EACjBH,KAGKG,GAkDMC,EA5CC,SAAmBhG,GACjC,IAAIt+J,EAAUjI,UAAUC,OAAS,QAAsBsB,IAAjBvB,UAAU,GAAmBA,UAAU,GAAK,GAC9Ei5B,EAASj5B,UAAU,GAEA,iBAAZiI,IAAsBA,EAAU,CAAEsf,KAAMtf,IAEnD,IAAIukK,EAAWvkK,EACXsf,EAAOilJ,EAASjlJ,KAChBklJ,EAAiBD,EAAS/jD,MAC1BA,OAA2BlnH,IAAnBkrK,GAAuCA,EAC/CC,EAAkBF,EAAS7/E,OAC3BA,OAA6BprF,IAApBmrK,GAAwCA,EACjDC,EAAqBH,EAAS9/E,UAC9BA,OAAmCnrF,IAAvBorK,GAA2CA,EAG3D,GAAY,MAARplJ,EAAc,OAAO0R,EAEzB,IAAI2zI,EAAeR,EAAY7kJ,EAAM,CAAE1E,IAAK4lG,EAAO97B,OAAQA,EAAQD,UAAWA,IAC1EF,EAAKogF,EAAapgF,GAClB/rF,EAAOmsK,EAAansK,KAEpB6xB,EAAQk6D,EAAGjB,KAAKg7E,GAEpB,IAAKj0I,EAAO,OAAO,KAEnB,IAAI25B,EAAM35B,EAAM,GACZxH,EAASwH,EAAM7uB,MAAM,GAErBsoK,EAAUxF,IAAat6G,EAE3B,OAAIw8D,IAAUsjD,EAAgB,KAEvB,CACLxkJ,KAAMA,EACN0kC,IAAc,MAAT1kC,GAAwB,KAAR0kC,EAAa,IAAMA,EACxC8/G,QAASA,EACTjsI,OAAQr/B,EAAKgY,OAAO,SAAUy4E,EAAM/xF,EAAKk0B,GAEvC,OADA69D,EAAK/xF,EAAIhB,MAAQ2sB,EAAOuI,GACjB69D,GACN,MCnDP,IAAI27E,EAAS,SAAU/mF,GAGrB,SAAS+mF,IAGP,OAtBJ,SAAyBpB,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI97J,UAAU,qCAoB5G+7J,CAAgBvrK,KAAMysK,GAlB1B,SAAoCr6I,EAAMz0B,GAAQ,IAAKy0B,EAAQ,MAAM,IAAImzD,eAAe,6DAAgE,OAAO5nF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8By0B,EAAPz0B,EAoBvNwtK,CAA2BnrK,KAAM0lF,EAAiB3lF,MAAMC,KAAMJ,YAwCvE,OA1DF,SAAmB0B,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIiO,UAAU,kEAAoEjO,GAAeD,EAASlC,UAAYlB,OAAOY,OAAOyC,GAAcA,EAAWnC,UAAW,CAAEoC,YAAa,CAAE/C,MAAO6C,EAAUlD,YAAY,EAAO69E,UAAU,EAAMJ,cAAc,KAAet6E,IAAYrD,OAAOqX,eAAiBrX,OAAOqX,eAAejU,EAAUC,GAAcD,EAASG,UAAYF,GAa/dkqK,CAAUgB,EAAQ/mF,GAQlB+mF,EAAOrtK,UAAUy1G,mBAAqB,WACpCkyD,IAAU/mK,KAAKgjF,QAAQ0oF,OAAQ,mDAGjCe,EAAOrtK,UAAUo1G,0BAA4B,SAAmCjtB,GAC9ExlF,MAAUwlF,EAAU52E,WAAa3Q,KAAKkF,MAAMyL,UAAW,4KAEvD5O,OAAWwlF,EAAU52E,UAAY3Q,KAAKkF,MAAMyL,UAAW,yKAGzD87J,EAAOrtK,UAAUyH,OAAS,WACxB,IAAI2lF,EAAQxsF,KAAKgjF,QAAQ0oF,OAAOl/E,MAC5BtkF,EAAWlI,KAAKkF,MAAMgD,SAEtByI,EAAW3Q,KAAKkF,MAAMyL,UAAY67E,EAAM77E,SAExCuhB,OAAQ,EACRumC,OAAQ,EAiBZ,OAhBA5yD,IAAMkqF,SAASxqF,QAAQ2C,EAAU,SAAUnF,GACzC,GAAa,MAATmvB,GAAiBrsB,IAAMkL,eAAehO,GAAU,CAClD,IAAI2pK,EAAiB3pK,EAAQmC,MACzBynK,EAAWD,EAAevlJ,KAC1BkhG,EAAQqkD,EAAerkD,MACvB97B,EAASmgF,EAAengF,OACxBD,EAAYogF,EAAepgF,UAC3Bp8E,EAAOw8J,EAAex8J,KAEtBiX,EAAOwlJ,GAAYz8J,EAEvBuoD,EAAQ11D,EACRmvB,EAAQi6I,EAAUx7J,EAASw1J,SAAU,CAAEh/I,KAAMA,EAAMkhG,MAAOA,EAAO97B,OAAQA,EAAQD,UAAWA,GAAaE,EAAMt6D,UAI5GA,EAAQrsB,IAAMe,aAAa6xD,EAAO,CAAE9nD,SAAUA,EAAUi8J,cAAe16I,IAAW,MAGpFu6I,EA9CI,CA+CX5mK,IAAM+R,WAER60J,EAAOn8D,aAAe,CACpBo7D,OAAQnjD,IAAUhqG,MAAM,CACtBiuE,MAAO+7B,IAAUrpH,OAAOiS,aACvBA,YAELs7J,EAAO56J,UAAY,CACjB3J,SAAUqgH,IAAUzkH,KACpB6M,SAAU43G,IAAUrpH,QAIPutK,ICzEAA,EDyEAA,EE5EXhtK,EAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,GAIvP,SAASwrK,EAA2B/4I,EAAMz0B,GAAQ,IAAKy0B,EAAQ,MAAM,IAAImzD,eAAe,6DAAgE,OAAO5nF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8By0B,EAAPz0B,EAUlO,IAAIkvK,EAAkB,SAAyB3kK,GAC7C,OAA0C,IAAnCrC,IAAMkqF,SAAS7+B,MAAMhpD,IAO1B4kK,EAAQ,SAAUpnF,GAGpB,SAASonF,IACP,IAAIn7J,EAAOqE,GAxBf,SAAyBq1J,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI97J,UAAU,qCA0B5G+7J,CAAgBvrK,KAAM8sK,GAEtB,IAAK,IAAIx7J,EAAO1R,UAAUC,OAAQ0C,EAAOzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzB,OAAeI,EAASqE,EAAQm1J,EAA2BnrK,KAAM0lF,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAiByT,EAAMpL,MAAQ,CAC1JsnB,MAAOlc,EAAMw1J,aAAax1J,EAAM9Q,MAAO8Q,EAAMgtE,QAAQ0oF,SAC5CP,EAA2Bn1J,EAAnCrE,GA4EL,OA1GF,SAAmBrQ,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIiO,UAAU,kEAAoEjO,GAAeD,EAASlC,UAAYlB,OAAOY,OAAOyC,GAAcA,EAAWnC,UAAW,CAAEoC,YAAa,CAAE/C,MAAO6C,EAAUlD,YAAY,EAAO69E,UAAU,EAAMJ,cAAc,KAAet6E,IAAYrD,OAAOqX,eAAiBrX,OAAOqX,eAAejU,EAAUC,GAAcD,EAASG,UAAYF,GAiB/dkqK,CAAUqB,EAAOpnF,GAgBjBonF,EAAM1tK,UAAU0xG,gBAAkB,WAChC,MAAO,CACL46D,OAAQjsK,EAAS,GAAIO,KAAKgjF,QAAQ0oF,OAAQ,CACxCl/E,MAAO,CACL77E,SAAU3Q,KAAKkF,MAAMyL,UAAY3Q,KAAKgjF,QAAQ0oF,OAAOl/E,MAAM77E,SAC3DuhB,MAAOlyB,KAAK4K,MAAMsnB,WAM1B46I,EAAM1tK,UAAUosK,aAAe,SAAsB55J,EAAM85J,GACzD,IAAIkB,EAAgBh7J,EAAKg7J,cACrBj8J,EAAWiB,EAAKjB,SAChBwW,EAAOvV,EAAKuV,KACZolE,EAAS36E,EAAK26E,OACd87B,EAAQz2G,EAAKy2G,MACb/7B,EAAY16E,EAAK06E,UAErB,GAAIsgF,EAAe,OAAOA,EAE1B7F,IAAU2E,EAAQ,iEAElB,IAAIl/E,EAAQk/E,EAAOl/E,MAEf25E,GAAYx1J,GAAY67E,EAAM77E,UAAUw1J,SAE5C,OAAOgG,EAAUhG,EAAU,CAAEh/I,KAAMA,EAAMolE,OAAQA,EAAQ87B,MAAOA,EAAO/7B,UAAWA,GAAaE,EAAMt6D,QAGvG46I,EAAM1tK,UAAUy1G,mBAAqB,WACnC9yG,MAAU/B,KAAKkF,MAAM4vC,WAAa90C,KAAKkF,MAAM2B,QAAS,6GAEtD9E,MAAU/B,KAAKkF,MAAM4vC,WAAa90C,KAAKkF,MAAMgD,WAAa2kK,EAAgB7sK,KAAKkF,MAAMgD,WAAY,iHAEjGnG,MAAU/B,KAAKkF,MAAM2B,QAAU7G,KAAKkF,MAAMgD,WAAa2kK,EAAgB7sK,KAAKkF,MAAMgD,WAAY,+GAGhG4kK,EAAM1tK,UAAUo1G,0BAA4B,SAAmCjtB,EAAWwlF,GACxFhrK,MAAUwlF,EAAU52E,WAAa3Q,KAAKkF,MAAMyL,UAAW,2KAEvD5O,OAAWwlF,EAAU52E,UAAY3Q,KAAKkF,MAAMyL,UAAW,uKAEvD3Q,KAAKoX,SAAS,CACZ8a,MAAOlyB,KAAKwrK,aAAajkF,EAAWwlF,EAAYrB,WAIpDoB,EAAM1tK,UAAUyH,OAAS,WACvB,IAAIqrB,EAAQlyB,KAAK4K,MAAMsnB,MACnB82I,EAAShpK,KAAKkF,MACdgD,EAAW8gK,EAAO9gK,SAClB4sC,EAAYk0H,EAAOl0H,UACnBjuC,EAASmiK,EAAOniK,OAChBmmK,EAAkBhtK,KAAKgjF,QAAQ0oF,OAC/B7lI,EAAUmnI,EAAgBnnI,QAC1B2mD,EAAQwgF,EAAgBxgF,MACxBygF,EAAgBD,EAAgBC,cAGhC/nK,EAAQ,CAAEgtB,MAAOA,EAAOvhB,SADb3Q,KAAKkF,MAAMyL,UAAY67E,EAAM77E,SACIk1B,QAASA,EAASonI,cAAeA,GAEjF,OAAIn4H,EAAkB5iB,EAAQrsB,IAAM/C,cAAcgyC,EAAW5vC,GAAS,KAElE2B,EAAeqrB,EAAQrrB,EAAO3B,GAAS,KAEnB,mBAAbgD,EAAgCA,EAAShD,GAEhDgD,IAAa2kK,EAAgB3kK,GAAkBrC,IAAMkqF,SAASC,KAAK9nF,GAEhE,MAGF4kK,EA1FG,CA2FVjnK,IAAM+R,WAERk1J,EAAMj7J,UAAY,CAChB+6J,cAAerkD,IAAUrpH,OACzBioB,KAAMohG,IAAUj2G,OAChB+1G,MAAOE,IAAU5/B,KACjB4D,OAAQg8B,IAAU5/B,KAClB2D,UAAWi8B,IAAU5/B,KACrB7zC,UAAWyzE,IAAU5oG,KACrB9Y,OAAQ0hH,IAAU5oG,KAClBzX,SAAUqgH,IAAU3/B,UAAU,CAAC2/B,IAAU5oG,KAAM4oG,IAAUzkH,OACzD6M,SAAU43G,IAAUrpH,QAEtB4tK,EAAMx8D,aAAe,CACnBo7D,OAAQnjD,IAAUhqG,MAAM,CACtBsnB,QAAS0iF,IAAUrpH,OAAOiS,WAC1Bq7E,MAAO+7B,IAAUrpH,OAAOiS,WACxB87J,cAAe1kD,IAAUrpH,UAG7B4tK,EAAMr8D,kBAAoB,CACxBi7D,OAAQnjD,IAAUrpH,OAAOiS,YAIZ27J,ICvIAA,EDuIAA,EEvIA,SAAAI,EAAAh2F,EAAA5uE,GACX,GAAI4uE,QACA,gCAEJr1E,YAAYq1E,OAAZr1E,mJCJW,MAAAsrK,OAAMA,qBACQ,MADRA,uBAEU,QCL/B,IAAI1tK,GAAWvB,OAAOwB,QAAU,SAAUC,GAAU,IAAK,IAAInC,EAAI,EAAGA,EAAIoC,UAAUC,OAAQrC,IAAK,CAAE,IAAIsC,EAASF,UAAUpC,GAAI,IAAK,IAAIuB,KAAOe,EAAc5B,OAAOkB,UAAUC,eAAe1B,KAAKmC,EAAQf,KAAQY,EAAOZ,GAAOe,EAAOf,IAAY,OAAOY,GAMvP,SAASwrK,GAA2B/4I,EAAMz0B,GAAQ,IAAKy0B,EAAQ,MAAM,IAAImzD,eAAe,6DAAgE,OAAO5nF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8By0B,EAAPz0B,EASlO,IAAIyvK,GAAkB,SAAyBlgK,GAC7C,SAAUA,EAAMoyE,SAAWpyE,EAAMosF,QAAUpsF,EAAMslE,SAAWtlE,EAAMulE,WAOhE46F,GAAO,SAAU3nF,GAGnB,SAAS2nF,IACP,IAAI17J,EAAOqE,GAvBf,SAAyBq1J,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI97J,UAAU,qCAyB5G+7J,CAAgBvrK,KAAMqtK,GAEtB,IAAK,IAAI/7J,EAAO1R,UAAUC,OAAQ0C,EAAOzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EhP,EAAKgP,GAAQ3R,UAAU2R,GAGzB,OAAeI,EAASqE,EAAQm1J,GAA2BnrK,KAAM0lF,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAiByT,EAAMmpI,YAAc,SAAUjyI,GAG1K,GAFI8I,EAAM9Q,MAAMygB,SAAS3P,EAAM9Q,MAAMygB,QAAQzY,IAExCA,EAAM8pF,kBACM,IAAjB9pF,EAAM6qE,SACL/hE,EAAM9Q,MAAMvF,SACZytK,GAAgBlgK,GACf,CACEA,EAAM6nC,iBAEN,IAAIlP,EAAU7vB,EAAMgtE,QAAQ0oF,OAAO7lI,QAC/B6gD,EAAc1wE,EAAM9Q,MACpBzC,EAAUikF,EAAYjkF,QACtB2N,EAAKs2E,EAAYt2E,GAGjB3N,EACFojC,EAAQpjC,QAAQ2N,GAEhBy1B,EAAQhlC,KAAKuP,KAGV+6J,GAA2Bn1J,EAAnCrE,GAsBL,OAvEF,SAAmBrQ,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIiO,UAAU,kEAAoEjO,GAAeD,EAASlC,UAAYlB,OAAOY,OAAOyC,GAAcA,EAAWnC,UAAW,CAAEoC,YAAa,CAAE/C,MAAO6C,EAAUlD,YAAY,EAAO69E,UAAU,EAAMJ,cAAc,KAAet6E,IAAYrD,OAAOqX,eAAiBrX,OAAOqX,eAAejU,EAAUC,GAAcD,EAASG,UAAYF,GAgB/dkqK,CAAU4B,EAAM3nF,GAoChB2nF,EAAKjuK,UAAUyH,OAAS,WACtB,IAAImiK,EAAShpK,KAAKkF,MAEdkL,GADU44J,EAAOvmK,QACZumK,EAAO54J,IACZk9J,EAAWtE,EAAOsE,SAClBpoK,EA/DR,SAAkC9D,EAAKf,GAAQ,IAAIV,EAAS,GAAI,IAAK,IAAInC,KAAK4D,EAAWf,EAAKC,QAAQ9C,IAAM,GAAkBU,OAAOkB,UAAUC,eAAe1B,KAAKyD,EAAK5D,KAAcmC,EAAOnC,GAAK4D,EAAI5D,IAAM,OAAOmC,EA+DnM4tK,CAAyBvE,EAAQ,CAAC,UAAW,KAAM,aAE/DjC,IAAU/mK,KAAKgjF,QAAQ0oF,OAAQ,gDAE/B3E,SAAiB5lK,IAAPiP,EAAkB,sCAE5B,IAAIy1B,EAAU7lC,KAAKgjF,QAAQ0oF,OAAO7lI,QAE9Bl1B,EAAyB,iBAAPP,EAAkBi3J,EAAej3J,EAAI,KAAM,KAAMy1B,EAAQl1B,UAAYP,EAEvFoL,EAAOqqB,EAAQ2kI,WAAW75J,GAC9B,OAAO9K,IAAM/C,cAAc,IAAKrD,GAAS,GAAIyF,EAAO,CAAEygB,QAAS3lB,KAAKm/I,YAAa3jI,KAAMA,EAAMrJ,IAAKm7J,MAG7FD,EAxDE,CAyDTxnK,IAAM+R,WAERy1J,GAAKx7J,UAAY,CACf8T,QAAS4iG,IAAU5oG,KACnBhgB,OAAQ4oH,IAAUj2G,OAClB7P,QAAS8lH,IAAU5/B,KACnBv4E,GAAIm4G,IAAU3/B,UAAU,CAAC2/B,IAAUj2G,OAAQi2G,IAAUrpH,SAASiS,WAC9Dm8J,SAAU/kD,IAAU3/B,UAAU,CAAC2/B,IAAUj2G,OAAQi2G,IAAU5oG,QAE7D0tJ,GAAKv7J,aAAe,CAClBrP,SAAS,GAEX4qK,GAAK/8D,aAAe,CAClBo7D,OAAQnjD,IAAUhqG,MAAM,CACtBsnB,QAAS0iF,IAAUhqG,MAAM,CACvB1d,KAAM0nH,IAAU5oG,KAAKxO,WACrB1O,QAAS8lH,IAAU5oG,KAAKxO,WACxBq5J,WAAYjiD,IAAU5oG,KAAKxO,aAC1BA,aACFA,YAIUk8J,UC/FA,SAAAG,GAAA3hH,EAAAp+C,EAAA8F,GAIX,OAHA25J,EAAG,WAAa,YAD+BrhH,GAIxCkC,MAAKlC,EAEJ,CACIp+C,OADJA,EAEI4N,QAAS,CACL+yC,eAAgB,oBAEpBN,YALJ,UAMInpD,KAAMqB,oBARX2jC,KAUA,SAAAh/B,GACH,OAAOA,EAAPsjD,SCnBO,MAAAw/G,GAEXjsK,cAEIxB,KAAA0tK,SAAA,gBACA1tK,KAAA2tK,aAAA,oBAEA3tK,KAAA4tK,gBAAA,YAGJC,gBAAAC,EAAAtzE,GAEI,aAAagzE,GAASxtK,KAAD0tK,SAAA,OACjB,CACIK,MADJD,EAEIE,SAAUxzE,IAHL7wD,KAID,SAAAp2B,GAQJ,OAPIA,EAAJ06J,SACIjuK,KAAAkuK,WAAgB36J,EAAhB46J,OAGAnuK,KAAAkuK,WAAA,IAGJ36J,GARIvU,KAJZgB,OAgBJouK,SACIpuK,KAAAkuK,WAAA,IAIJL,yBACI,aAAaL,GAASxtK,KAAD2tK,aAAR,QAAAhkI,KACH,SAAAp2B,GAQF,OAPIA,EAAJ06J,SACIjuK,KAAAkuK,WAAgB36J,EAAhB46J,OAGAnuK,KAAAkuK,WAAA,IAGJ36J,GAREvU,KADVgB,OAeJquK,SAEI,UADYruK,KAAZsuK,aAKJC,WAAUxwK,GACN,IAAIopD,EAAUtkD,sBAAsB,IAAAgkE,OAChC,WAAa9oE,yCAAb,QADJ,aAGA,OAAOopD,EAAUqnH,mBAAmBrnH,EAAtB,IAAd,GAIJmnH,aACI,OAAOtuK,KAAAuuK,WAAgBvuK,KAAvB4tK,iBAGJM,WAAU3+J,GACN1M,gBAAkB7C,KAAA4tK,gBAAA,IAAlB/qK,GC9DO,MAAM4rK,WAAoB5oK,IAAM+R,UAE3CpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,cAAe,SAGnBltK,KAAK4uK,aAAe,IAAIC,GAG5BC,eACI9uK,KAAKouF,cAGTvnF,SACI,OACIkoK,EAAA7sK,EAAAY,cAAA,WAEIisK,EAAA7sK,EAAAY,cAAA,aACIisK,EAAA7sK,EAAAY,cAAA,aACIisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,mBACAisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAACksK,GAAD,CAAM5+J,GAAK,KACP2+J,EAAA7sK,EAAAY,cAAA,sBAIP9C,KAAK4uK,aAAaP,SAEfU,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAACksK,GAAD,CAAM5+J,GAAK,UACP2+J,EAAA7sK,EAAAY,cAAA,yBAGNisK,EAAA7sK,EAAAY,cAAA,+FC1C9BmsK,GAAeppK,IAAMsqF,cAAc,IAAIglB,KAEvC3kB,IADWy+E,GAAaplF,SACbolF,GAAaz+E,UA6BrB,SAAS0+E,GAAmBzlH,EAAQ0lH,GACzC,IAAIC,EAAWn+E,qBAAWg+E,IAC1B,OAAOxlH,GAAU2lH,EAAS/wK,IAAI8wK,IAAkBA,EAJhDtpK,IAAM+R,UAgCOy3J,IC1DXC,GAAa,SAAoBlmF,GACnC,OAAOA,EAAI,GAAG12E,cAAgB68J,KAASnmF,GAAK/lF,MAAM,IAGrC,SAASmsK,GAAmB/lH,EAAQ93C,GACjD,IAAIC,OAAiB,IAAVD,EAAmB,GAAKA,EAC/BM,EAAmBL,EAAKM,YACxBA,OAAmC,IAArBD,EAA8Bq9J,GAAW7lH,GAAUx3C,EACjEw9J,EAAiB79J,EAAKgG,UACtBA,OAA+B,IAAnB63J,EAA4B,MAAQA,EAChD39J,EAAeF,EAAKE,aAEpB49J,EAAc7pK,IAAMwM,WACxB,SAAU4xI,EAAO9xI,GACf,IAAIsC,EAAYwvI,EAAMxvI,UAClBk7J,EAAW1rB,EAAM0rB,SACjBC,EAAW3rB,EAAMziE,GACjB67D,OAAmB,IAAbuyB,EAAsBh4J,EAAYg4J,EACxC1qK,EAAQhF,aAA8B+jJ,EAAO,CAAC,YAAa,WAAY,OAEvE4rB,EAAiBX,GAAmBS,EAAUlmH,GAClD,OAAO5jD,IAAM/C,cAAcu6I,EAAK59I,YAAS,CACvC0S,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWo7J,IAChC3qK,MAIL,OAFAwqK,EAAY59J,aAAeA,EAC3B49J,EAAYx9J,YAAcA,EACnBw9J,EClCT,IAGeI,GAHGjqK,IAAMsqF,cAAc,CACpC4/E,eAAW5uK,ICIT6uK,GAAYnqK,IAAMwM,WAAW,SAAUT,EAAMO,GAC/C,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBvM,EAAW0J,EAAK1J,SAChB6nK,EAAYn+J,EAAKm+J,UACjBE,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,MAAQA,EACzC/qK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,WAAY,YAAa,OAEnG+9J,EAAWT,GAAmBS,EAAU,cACxC,IAAI3sF,EAAUsO,kBAAQ,WACpB,MAAO,CACLy+E,UAAWA,IAEZ,CAACA,IACJ,OAAOlqK,IAAM/C,cAAcgtK,GAAYt/E,SAAU,CAC/C/xF,MAAOukF,GACNn9E,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACpDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWk7J,KAC/BznK,MAEN8nK,GAAU99J,YAAc,YACT89J,UCxBXn+J,GAAY,CAMdnJ,KAAM6/G,IAAUj2G,OAAOnB,WACvBqwE,GAAI+mC,IAAUjX,aAKZ4+D,GAAWrqK,IAAMwM,WACrB,SAAUT,EAAMO,GACd,IAAI89J,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,MAAQA,EACzCx7J,EAAY7C,EAAK6C,UACjB/L,EAAOkJ,EAAKlJ,KACZxD,EAAQhF,aAA8B0R,EAAM,CAAC,KAAM,YAAa,SAEpE,OAAO/L,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAW/L,GAAQA,EAAO,kBAGpDwnK,GAASh+J,YAAc,WACvBg+J,GAASr+J,UAAYA,GACrBq+J,GAASp+J,aAlBU,CACjBpJ,KAAM,SAkBOwnK,UCzBXC,GAActqK,IAAMwM,WAAW,SAAUT,EAAMO,GACjD,IAiBIzR,EAGE0vK,EApBFT,EAAW/9J,EAAK+9J,SAChBjnK,EAAOkJ,EAAKlJ,KACZxE,EAAO0N,EAAK1N,KACZ2T,EAAKjG,EAAKiG,GACVpD,EAAY7C,EAAK6C,UACjB80D,EAAU33D,EAAK23D,QACf8mG,EAAYz+J,EAAKy+J,UACjBnpG,EAAYt1D,EAAKs1D,UACjBvpD,EAAW/L,EAAK+L,SAChBsyJ,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,QAAUA,EAC3C/qK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,OAAQ,OAAQ,KAAM,YAAa,UAAW,YAAa,YAAa,WAAY,OAG7Im+J,EADc9+E,qBAAW6+E,IACDC,UAK5B,GAHAJ,EAAWT,GAAmBS,EAAU,gBAGpCzoG,GAGSkpG,EAAW,IAAaT,EAAW,eAAgB,EAA9DjvK,EAAoE0vK,OAC/D,GAAa,SAAT1nK,EAAiB,CAC1B,IAAI4nK,GAEOA,EAAY,IAAcX,EAAW,UAAW,EAA3DjvK,EAAiE4vK,MAC5D,CACL,IAAIC,GAEOA,EAAY,IAAcZ,IAAY,EAAMY,EAAUZ,EAAW,IAAMzrK,GAAQA,EAA1FxD,EAAgG6vK,EAIlG,OAAO1qK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDwD,KAAMA,EACNyJ,IAAKA,EACLwL,SAAUA,EACV9F,GAAIA,GAAMk4J,EACVt7J,UAAWhU,KAAWgU,EAAW/T,EAAS6oE,GAAW,WAAY8mG,GAAa,mBAGlFF,GAAYj+J,YAAc,cAC1Bi+J,GAAYD,SAAWA,GACRC,UC5CXK,GAAiB3qK,IAAMwM,WAAW,SAAUT,EAAMO,GACpD,IAAI0F,EAAKjG,EAAKiG,GACV83J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjB80D,EAAU33D,EAAK23D,QACf8mG,EAAYz+J,EAAKy+J,UACjBI,EAAW7+J,EAAK6+J,SAChBvrK,EAAQhF,aAA8B0R,EAAM,CAAC,KAAM,WAAY,YAAa,UAAW,YAAa,aAExG+9J,EAAWT,GAAmBS,EAAU,oBAExC,IAAIe,EAAcz/E,qBAAW6+E,IACzBC,EAAYW,EAAYX,UACxBY,EAASD,EAAYC,OAEzB,OAAO9qK,IAAM/C,cAAc,QAASrD,YAAS,GAAIyF,EAAO,CACtDiN,IAAKA,EACL0F,GAAIA,GAAMk4J,EACVt7J,UAAWhU,KAAWgU,GAAYk8J,GAAUhB,EAAUgB,GAAU,uBAAwBpnG,GAAW,WAAY8mG,GAAa,aAAcI,GAAY,wBAG1JD,GAAet+J,YAAc,iBAC7Bs+J,GAAe1+J,aAzBI,CACjBpJ,KAAM,YAyBO8nK,UCvBXI,GAAiB/qK,IAAMwM,WAAW,SAAUT,EAAMO,GACpD,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBiH,EAAU9J,EAAK8J,QACfxW,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,YAE1E+9J,EAAWT,GAAmBS,EAAU,oBAExC,IAAIe,EAAcz/E,qBAAW6+E,IACzBC,EAAYW,EAAYX,UACxBY,EAASD,EAAYC,OAEzB,OAAO9qK,IAAM/C,cAAc,QAASrD,YAAS,GAAIyF,EAAO,CACtDiN,IAAKA,EACLuJ,QAASA,GAAWq0J,EACpBt7J,UAAWhU,KAAWgU,GAAYk8J,GAAUhB,EAAUgB,GAAU,6BAGpEC,GAAe1+J,YAAc,iBAC7B0+J,GAAe9+J,aAtBI,CACjBpJ,KAAM,YAsBOkoK,UCZXC,GAAYhrK,IAAMwM,WAAW,SAAUT,EAAMO,GAC/C,IAAI0F,EAAKjG,EAAKiG,GACV83J,EAAW/9J,EAAK+9J,SAChBmB,EAASl/J,EAAKk/J,OACdt2J,EAAW5I,EAAK4I,SAChB+uD,EAAU33D,EAAK23D,QACf8mG,EAAYz+J,EAAKy+J,UACjBU,EAAWn/J,EAAKm/J,SAChBt8J,EAAY7C,EAAK6C,UACjBpQ,EAAQuN,EAAKvN,MACbkE,EAAQqJ,EAAKrJ,MACbG,EAAOkJ,EAAKlJ,KACZ2T,EAAQzK,EAAKyK,MACbnU,EAAW0J,EAAK1J,SAChByoK,EAAS/+J,EAAK++J,OACdzrK,EAAQhF,aAA8B0R,EAAM,CAAC,KAAM,WAAY,SAAU,WAAY,UAAW,YAAa,WAAY,YAAa,QAAS,QAAS,OAAQ,QAAS,WAAY,WAEzL+9J,EAAWT,GAAmBS,EAAU,cAExC,IACII,EADc9+E,qBAAW6+E,IACDC,UAExBiB,EAAmB1/E,kBAAQ,WAC7B,MAAO,CACLy+E,UAAWl4J,GAAMk4J,EACjBY,OAAQA,IAET,CAACZ,EAAWY,EAAQ94J,IACnBo5J,EAAoB,MAAT50J,IAA2B,IAAVA,IAAoBnU,EAChDm4C,EAAQx6C,IAAM/C,cAAc0tK,GAAgB/wK,YAAS,GAAIyF,EAAO,CAClEwD,KAAMA,EACNyJ,IAAKA,EACLo3D,QAASA,EACT8mG,UAAWA,EACXI,UAAWQ,EACXz2J,SAAUA,KAEZ,OAAO3U,IAAM/C,cAAcgtK,GAAYt/E,SAAU,CAC/C/xF,MAAOuyK,GACNnrK,IAAM/C,cAAc,MAAO,CAC5BuB,MAAOA,EACPoQ,UAAWhU,KAAWgU,GAAYk8J,GAAUhB,EAAUgB,GAAU,yBAA2BjoK,EAAMooK,IAAWH,EAAS,iBAAmBhB,GAAY,YACnJznK,GAAYrC,IAAM/C,cAAc+C,IAAM6iF,SAAU,KAAMroC,EAAO4wH,GAAYprK,IAAM/C,cAAc8tK,GAAgB,CAC9GroK,MAAOA,GACN8T,IAASktD,GAAW8mG,IAAcxqK,IAAM/C,cAAcotK,GAAU,CACjExnK,KAAM6gE,EAAU,QAAU,WACzBwnG,QAELF,GAAU3+J,YAAc,YACxB2+J,GAAU/+J,aAzDS,CACjBpJ,KAAM,WACNooK,QAAQ,EACRt2J,UAAU,EACV+uD,SAAS,EACT8mG,WAAW,EACX9nK,MAAO,IAoDTsoK,GAAUvzB,MAAQkzB,GAClBK,GAAUK,MAAQN,GACHC,UChEXM,GAAe,CAAC,KAAM,KAAM,KAAM,KAAM,MACxCC,GAAMvrK,IAAMwM,WAChB,SAAUT,EAAMO,GACd,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBw7J,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,MAAQA,EACzC/qK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,OAEtE63C,EAASylH,GAAmBS,EAAU,OACtC0B,EAAQ,GACR3wK,EAAU,GAyBd,OAxBAywK,GAAa5rK,QAAQ,SAAU+rK,GAC7B,IAEI5yJ,EAAM6G,EAAQqB,EAFd/V,EAAY3L,EAAMosK,GAItB,UAHOpsK,EAAMosK,GAGI,MAAbzgK,GAA0C,iBAAdA,EAAwB,CACtD,IAAI0gK,EAAkB1gK,EAAU6N,KAChCA,OAA2B,IAApB6yJ,GAAoCA,EAC3ChsJ,EAAS1U,EAAU0U,OACnBqB,EAAQ/V,EAAU+V,WAElBlI,EAAO7N,EAGT,IAAI2gK,EAAqB,OAAbF,EAAoB,IAAMA,EAAW,GACrC,MAAR5yJ,GAAc2yJ,EAAMxwK,MAAc,IAAT6d,EAAgB,GAAK+qC,EAAS+nH,EAAQ,GAAK/nH,EAAS+nH,EAAQ,IAAM9yJ,GAClF,MAATkI,GAAelmB,EAAQG,KAAK,QAAU2wK,EAAQ,IAAM5qJ,GAC1C,MAAVrB,GAAgB7kB,EAAQG,KAAK,SAAW2wK,EAAQ,IAAMjsJ,KAGvD8rJ,EAAMxxK,QACTwxK,EAAMxwK,KAAK4oD,GAGN5jD,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLsC,UAAWhU,KAAWV,WAAM,EAAQ,CAAC0U,GAAWjD,OAAO6/J,EAAO3wK,SAGlE0wK,GAAIl/J,YAAc,MACHk/J,UCnCXK,GAAY5rK,IAAMwM,WAAW,SAAUT,EAAMO,GAC/C,IAAIw9J,EAAW/9J,EAAK+9J,SAChB78I,EAASlhB,EAAKkhB,OACd4+I,EAAS9/J,EAAK8/J,OACdj9J,EAAY7C,EAAK6C,UACjBiH,EAAU9J,EAAK8J,QACfxW,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,SAAU,SAAU,YAAa,YAG1Fm+J,EADc9+E,qBAAW6+E,IACDC,UAE5BJ,EAAWT,GAAmBS,EAAU,cACxC,IAAIjvK,EAAUD,KAAWgU,EAAWk7J,EAAU+B,GAAU,UAAW5+I,GAAU,kBAG7E,OADApX,EAAUA,GAAWq0J,EACjBj9I,EAAejtB,IAAM/C,cAAcsuK,GAAK3xK,YAAS,CACnD+hF,GAAI,QACJ/sE,UAAW/T,EACXgb,QAASA,GACRxW,IAEDW,IAAM/C,cAAc,QAASrD,YAAS,CACpC0S,IAAKA,EACLsC,UAAW/T,EACXgb,QAASA,GACRxW,MAGPusK,GAAUv/J,YAAc,YACxBu/J,GAAU3/J,aAjCS,CACjBghB,QAAQ,EACR4+I,QAAQ,GAgCKD,UCrCXE,GAAW9rK,IAAMwM,WACrB,SAAUT,EAAMO,GACd,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBw7J,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,QAAUA,EAC3ChzJ,EAAQrL,EAAKqL,MACb/X,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,KAAM,UAGhF,OADA+9J,EAAWT,GAAmBS,EAAU,aACjC9pK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWk7J,EAAU1yJ,GAAS,mBAGxD00J,GAASz/J,YAAc,WACRy/J,UCPXC,GAAO/rK,IAAMwM,WAAW,SAAUT,EAAMO,GAC1C,IAAIw9J,EAAW/9J,EAAK+9J,SAChBmB,EAASl/J,EAAKk/J,OACdr8J,EAAY7C,EAAK6C,UACjBo9J,EAAYjgK,EAAKigK,UACjB5B,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,OAASA,EAC1C/qK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,SAAU,YAAa,YAAa,OAGjG,OADA+9J,EAAWT,GAAmBS,EAAU,QACjC9pK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWo9J,GAAa,gBAAiBf,GAAUnB,EAAW,gBAGxFiC,GAAK1/J,YAAc,OACnB0/J,GAAK9/J,aAnBc,CACjBg/J,QAAQ,GAmBVc,GAAKttI,IAAMkrI,GAAmB,YAC9BoC,GAAK3lG,MAAQ+jG,GACb4B,GAAK/xE,QAAUswE,GACfyB,GAAKE,MAAQjB,GACbe,GAAKV,MAAQO,GACbG,GAAKG,KAAOJ,GACGC,8BCjCA,MAAAI,GAEXnE,WAAAvuI,EAAA/2B,GAII,IAAIg0H,EAAO,IAAXzxH,KACImnK,EAAkB11C,EAALu/B,WAAA,IACXv/B,EADW6/B,aAAA,IAEX7/B,EAFWggC,aAAA,MAAjBj9H,EAMA73B,iBACI,CACI2E,QADJ,IAEI5B,aAFJ,EAGIe,aAAe,IAK3BsiK,aAAAvuI,EAAA/2B,GACI,IAAIg0H,EAAO,IAAXzxH,KACImnK,EAAkB11C,EAALu/B,WAAA,IACXv/B,EADW6/B,aAAA,IAEX7/B,EAFWggC,aAAA,MAAjBj9H,EAKA73B,iBACI,CACI8D,aADJ,EAEIf,aAAe,IAG3BqjK,oBAAAvuI,EAAA/2B,GACI,IAAIg0H,EAAO,IAAXzxH,KACImnK,EAAkB11C,EAALu/B,WAAA,IACXv/B,EADW6/B,aAAA,IAEX7/B,EAFWggC,aAAA,MAAjBj9H,EAKA73B,iBACI,CACI2E,SADJ,EAEIb,aAFJ,EAGIf,aAAe,IAI3BqjK,aAAAvuI,EAAA/2B,GACI,IAAIg0H,EAAO,IAAXzxH,KACImnK,EAAkB11C,EAALu/B,WAAA,IACXv/B,EADW6/B,aAAA,IAEX7/B,EAFWggC,aAAA,MAAjBj9H,EAMA73B,eACI,CACI2E,SADJ,EAEIb,aAAe,KCtDhB,MAAM2mK,WAAoBrsK,IAAM+R,UAE3CpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,cAAe,SAEnBltK,KAAK4K,MAAQ,CAAEunK,SAAU,IACzBnyK,KAAK4uK,aAAe,IAAIC,GAEpB7uK,KAAK4uK,aAAaP,UAClBruK,KAAK4uK,aAAawD,mBAAmBzoI,KAAK,SAAUp2B,GAE5CA,EAAK06J,UACLjuK,KAAKoX,SAAS,CAAE+6J,SAAU5+J,EAAK4+J,WAC/BnyK,KAAKkF,MAAMmtK,gBAAgBvD,iBAG3B9uK,KAAKoX,SAAS,CAAE+6J,SAAU,KAC1BG,GAAaC,MAAMh/J,EAAKi/J,WAAY,UAG1CxzK,KAAKgB,OAIfyyK,YACI,IAAI3E,EAAQ9tK,KAAK+tF,KAAKggF,MAAMtvK,MACxB+7F,EAAWx6F,KAAK+tF,KAAKigF,SAASvvK,MAElCuB,KAAK4uK,aAAa8D,UAAU5E,EAAOtzE,GAC9B7wD,KAAK,SAAUp2B,GAERA,EAAK06J,UACLjuK,KAAKoX,SAAS,CAAE+6J,SAAU5+J,EAAK4+J,WAE/BnyK,KAAKkF,MAAMmtK,gBAAgBvD,iBAG3B9uK,KAAKoX,SAAS,CAAE+6J,SAAU,KAC1BG,GAAaC,MAAMh/J,EAAKi/J,WAAY,UAG1CxzK,KAAKgB,OAIf2yK,cACI3yK,KAAK4uK,aAAaR,SAClBpuK,KAAKoX,SAAS,CAAE+6J,SAAU,KAE1BnyK,KAAKkF,MAAMmtK,gBAAgBvD,eAI/BjoK,SACI,IAAI+D,EAAQ5K,KAAK4K,MAEjB,OACImkK,EAAA7sK,EAAAY,cAAA,WACK9C,KAAK4uK,aAAaP,SAEfU,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,2CAAmC8H,EAAMunK,SAAzC,KACApD,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAK2yK,aAAtB,WAGJ5D,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,+BAAuB8H,EAAMunK,SAA7B,YAIApD,EAAA7sK,EAAAY,cAAC8vK,GAAK/yE,QAAN,CAAc1tF,IAAI,QAAQzJ,KAAK,OAAO6U,YAAY,gBAClDwxJ,EAAA7sK,EAAAY,cAAC8vK,GAAKb,KAAN,CAAWt9J,UAAU,cAArB,kDAGAs6J,EAAA7sK,EAAAY,cAAA,WAEAisK,EAAA7sK,EAAAY,cAAC8vK,GAAK/yE,QAAN,CAAc1tF,IAAI,WAAWzJ,KAAK,WAAW6U,YAAY,aACzDwxJ,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKyyK,WAAtB,WCvFT,MAAAI,GACXrxK,cAEIxB,KAAA8yK,mBAAA,qCACA9yK,KAAA+yK,kBAAA,iCAEA/yK,KAAAgzK,WAAA,0BACAhzK,KAAAizK,SAAA,2BACAjzK,KAAAkzK,aAAA,2BACAlzK,KAAAmzK,oBAAA,gCAKJtF,6BAAA1gD,GACI,IAAIthE,EAAM7rD,KAAA8yK,mBAAV3lD,EAEA,aAAaqgD,GAAQ3hH,EAArB,OAGJgiH,yBAAA1gD,GACI,IAAIthE,EAAM7rD,KAAA+yK,kBAAV5lD,EAEA,aAAaqgD,GAAQ3hH,EAArB,OAGJgiH,kBAAA1gD,GAEI,aAAaqgD,GAASxtK,KAADgzK,WAAA,OACjB,CACI7lD,GAAIA,IAKhB0gD,gBAAAuF,EAAAC,GACI,aAAa7F,GAASxtK,KAADizK,SAAA,OACjB,CACI9lD,GADJimD,EAEIE,UAAWD,IAKvBE,aAAYpmD,GACR,IAAIthE,EAAM7rD,KAAAkzK,aAAV/lD,EAEAvqH,wBAGJirK,2BAAA2F,EAAA37J,GACI,aAAa21J,GAASxtK,KAADmzK,oBAAA,OACjB,CACIM,SADJ57J,EAEI67J,KAAMF,KC1DP,SAASluF,GAAuBlzD,GAC7C,QAAa,IAATA,EACF,MAAM,IAAImzD,eAAe,6DAG3B,OAAOnzD,EC4BMuhJ,OAxBf,WACE,IAAK,IAAIriK,EAAO1R,UAAUC,OAAQ+zK,EAAQ,IAAI9yK,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFqiK,EAAMriK,GAAQ3R,UAAU2R,GAG1B,OAAOqiK,EAAM5kK,OAAO,SAAU3M,GAC5B,OAAY,MAALA,IACNgW,OAAO,SAAUw7J,EAAKxxK,GACvB,GAAiB,mBAANA,EACT,MAAM,IAAIC,MAAM,2EAGlB,OAAY,OAARuxK,EAAqBxxK,EAClB,WACL,IAAK,IAAImoF,EAAQ5qF,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAM0pF,GAAQ9R,EAAQ,EAAGA,EAAQ8R,EAAO9R,IACpFn2E,EAAKm2E,GAAS94E,UAAU84E,GAG1Bm7F,EAAI9zK,MAAMC,KAAMuC,GAChBF,EAAEtC,MAAMC,KAAMuC,KAEf,OCvBL,SAASuxK,GAAct4J,GACrB,OAAQA,GAAwB,MAAhBA,EAAKgxC,OAWvB,IA0EeunH,GAxEf,SAAUruF,GAGR,SAASquF,EAAW7uK,EAAO89E,GACzB,IAAIhtE,EAKJ,OAHAA,EAAQ0vE,EAAiB/nF,KAAKqC,KAAMkF,EAAO89E,IAAYhjF,MACjDm/I,YAAcnpI,EAAMmpI,YAAYngJ,KAAKsmF,GAAuBtvE,IAClEA,EAAMyoI,cAAgBzoI,EAAMyoI,cAAcz/I,KAAKsmF,GAAuBtvE,IAC/DA,EART3U,aAAe0yK,EAAYruF,GAW3B,IAAIjyE,EAASsgK,EAAW30K,UAyDxB,OAvDAqU,EAAO0rI,YAAc,SAAqBjyI,GACxC,IAAIw5E,EAAc1mF,KAAKkF,MACnBsV,EAAWksE,EAAYlsE,SACvBgB,EAAOkrE,EAAYlrE,KACnBmK,EAAU+gE,EAAY/gE,SAEtBnL,GAAYs5J,GAAct4J,KAC5BtO,EAAM6nC,iBAGJv6B,EACFtN,EAAMC,kBAIJwY,GACFA,EAAQzY,IAIZuG,EAAOgrI,cAAgB,SAAuBvxI,GAC1B,MAAdA,EAAMnO,MACRmO,EAAM6nC,iBACN/0C,KAAKm/I,YAAYjyI,KAIrBuG,EAAO5M,OAAS,WACd,IAAIsgF,EAAennF,KAAKkF,MACpB8uK,EAAkB7sF,EAAa3F,GAC/B5pE,OAAgC,IAApBo8J,EAA6B,IAAMA,EAC/Cx5J,EAAW2sE,EAAa3sE,SACxBgkI,EAAYr3D,EAAaq3D,UACzB8uB,EAAWnmF,EAAammF,SACxBpoK,EAAQhF,aAA8BinF,EAAc,CAAC,KAAM,WAAY,YAAa,aAexF,OAbI2sF,GAAc5uK,EAAMsW,QACtBtW,EAAM4Y,KAAO5Y,EAAM4Y,MAAQ,SAG3B5Y,EAAMsW,KAAOtW,EAAMsW,MAAQ,KAGzBhB,IACFtV,EAAM+Z,UAAY,EAClB/Z,EAAM,kBAAmB,GAGvBooK,IAAUpoK,EAAMiN,IAAMm7J,GACnBznK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDygB,QAAS3lB,KAAKm/I,YACdX,UAAWm1B,GAAsB3zK,KAAKy+I,cAAeD,OAIlDu1B,EArET,CAsEEluK,IAAM+R,WC/EJq8J,GAASpuK,IAAMwM,WAAW,SAAUT,EAAMO,GAC5C,IAAIw9J,EAAW/9J,EAAK+9J,SAChBuE,EAAUtiK,EAAKsiK,QACfhwK,EAAO0N,EAAK1N,KACZ8wB,EAASpjB,EAAKojB,OACdvgB,EAAY7C,EAAK6C,UACjB49B,EAAQzgC,EAAKygC,MACb3pC,EAAOkJ,EAAKlJ,KACZ84E,EAAK5vE,EAAK4vE,GACVt8E,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,UAAW,OAAQ,SAAU,YAAa,QAAS,OAAQ,OAEpH63C,EAASylH,GAAmBS,EAAU,OACtCjvK,EAAUD,KAAWgU,EAAWg1C,EAAQz0B,GAAU,SAAUy0B,EAAS,IAAMyqH,EAAS7hI,GAASoX,EAAS,SAAUvlD,GAAQulD,EAAS,IAAMvlD,GAE3I,GAAIgB,EAAMsW,KACR,OAAO3V,IAAM/C,cAAcixK,GAAYt0K,YAAS,GAAIyF,EAAO,CACzDs8E,GAAIA,EACJ8rF,SAAUn7J,EACVsC,UAAWhU,KAAWC,EAASwE,EAAMsV,UAAY,eAIrD,IAAI5C,EAAY4pE,GAAM,SAEtB,OADIrvE,IAAKjN,EAAMiN,IAAMA,GACdtM,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDwD,KAAMA,EACN+L,UAAW/T,OAGfuzK,GAAO/hK,YAAc,SACrB+hK,GAAOniK,aApCY,CACjBoiK,QAAS,UACTl/I,QAAQ,EACRxa,UAAU,EACV9R,KAAM,UAiCOurK,UClCA,MAAME,WAAwBtuK,IAAM+R,UAE/CpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,mBAAqBltK,KAAKkF,MAAMioH,GAAI,SAExCntH,KAAK4K,MAAQ,CAAEuiH,GAAIntH,KAAKkF,MAAMioH,GAAIoP,KAAMv8H,KAAKkF,MAAMqO,KAAM6gK,UAAWp0K,KAAKkF,MAAMkvK,WAKnF5/D,0BAA0BjtB,GACtBvnF,KAAKkF,MAAQqiF,EAEWpmF,MAApBnB,KAAK+tF,KAAKsmF,SACVr0K,KAAK+tF,KAAKsmF,OAAO56J,SAAU,GAE/BzZ,KAAKoX,SAAS,CACV+1G,GAAIntH,KAAKkF,MAAMioH,GACfoP,KAAMv8H,KAAKkF,MAAMqO,KACjB6gK,UAAWp0K,KAAKkF,MAAMkvK,YAM9BE,UACI,OAAOt0K,KAAK4K,MAAM2xH,KAGtBg4C,WACI,OAAOv0K,KAAK4K,MAAMuiH,GAEtBqnD,YACI,OAAOx0K,KAAK4K,MAAM2xH,KAAKpP,GAE3BsnD,WACI,OAAwBtzK,MAApBnB,KAAK+tF,KAAKsmF,QAGPr0K,KAAK+tF,KAAKsmF,OAAO56J,QAI5Bi7J,mBACI10K,KAAKkF,MAAMmtK,gBAAgBqC,iBAAiB10K,KAAKw0K,aAGrD3tK,SACI,IAAI+D,EAAQ5K,KAAK4K,MACbq/G,EAAOr/G,EAAM2xH,KAEjB,OACIwyC,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAKmnH,EAAKkD,IACTviH,EAAMwpK,UAEHrF,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,SAAOqP,IAAI,SAASzJ,KAAK,cAE3B,KAIU,kBAAduhH,EAAK0qD,MAA0C,cAAd1qD,EAAK0qD,KAEpC5F,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAACksK,GAAD,CAAM5+J,WAAY65G,EAAKkD,MACnB4hD,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQ/8J,GAAIoyG,EAAKkD,GAAIxnG,QAAS3lB,KAAK00K,iBAAkBR,QAAQ,gBACxDjqD,EAAKypD,QAIhB3E,EAAA7sK,EAAAY,cAAA,UAAKmnH,EAAKypD,MAEhB3E,EAAA7sK,EAAAY,cAAA,UAAKmnH,EAAK0qD,MACV5F,EAAA7sK,EAAAY,cAAA,UAAKmnH,EAAK4qD,QCvEX,MAAMC,WAA4BjvK,IAAM+R,UAEnDpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,sBAAuB,SAG3BltK,KAAK4K,MAAQ,CAAE2I,KAAM,GAAI6gK,UAAWp0K,KAAKkF,MAAMkvK,WAC/Cp0K,KAAK+0K,UAAY,GACjB/0K,KAAKg1K,qBAAuB,IAAIC,GAGhCj1K,KAAKk1K,gBAOTC,YAAYj+F,GACRl3E,KAAKkF,MAAMmtK,gBAAgB+C,MAAMp1K,KAAK4K,MAAM2I,KAAKkgK,UACjDvG,EAAI,sBAAuB,eAAiBltK,KAAK4K,MAAM2I,KAAKkgK,UAG5DzzK,KAAKk1K,gBAGTR,iBAAiB78J,GACb7X,KAAKkF,MAAMmtK,gBAAgB+C,MAAMv9J,GACjCq1J,EAAI,sBAAuB,mBAAqBr1J,GAIhD7X,KAAKk1K,gBAGTG,YAAYn+F,GACR,IAAIo+F,EAAep+F,EAAOv3E,OAAOowE,WAAW,GAAGtxE,MAE3C8U,EAAOvT,KAAK4K,MAAM2I,KAEtBA,EAAK82C,MAAM/rB,KClCJ,SAAAtM,EAAApL,GACX,IAmBAsyC,EAAAq8G,EAnBIxlJ,EAAMnwB,UAAVC,OACA,OAAIkwB,EACA,MAAO,CAAA7tB,EAAAC,KAAWD,KAAD,EAAkBA,KAAlB,IAAjB,EAEJ,OAAI6tB,EACA,cAAAiC,GACI,aACI,OAAOA,IACF,CAAA9vB,EAAAC,KAAWD,IAAD,EAAiBA,MAAjB,IADR8vB,EAEF,CAAA9vB,EAAAC,KAAWD,KAAD,EAAkBA,KAAlB,IAFf,EAGJ,aACI,MAAO,CAAAA,EAAAC,KAAWD,KAAWC,EAAXD,IAAD,EAAgCA,KAAWC,EAAXD,IAAhC,IAAjB,EAGZ,GAAI6tB,OAAJ,iBAAiBnJ,EACb,OAAOA,IACF,CAAA1kB,EAAAC,KAAWD,KAAWC,EAAXD,GAAD,EAA+BA,KAAWC,EAAXD,KAA/B,IADR0kB,EAEF,CAAA1kB,EAAAC,KAAWD,KAAWC,EAAXD,IAAD,EAAgCA,KAAWC,EAAXD,IAAhC,IAFf,EAKJ,oBAAI8vB,EACAknC,EAASh7D,2BAATg7D,GACAq8G,EAASr8G,MAAWn6D,GAAOizB,EAA3BujJ,IACAxlJ,EAAMmpC,EAANnpC,WACG,CACHmpC,EAAS,IAAAp4D,MAATo4D,GACAq8G,EAAS,IAAAz0K,MAATy0K,GACA,IAAK,IAAI/3K,EAATuyB,EAAkBvyB,KACd07D,KAAYt5D,UAAZs5D,GACAq8G,OAGR,MAAO,CAAArzK,EAAAC,KACH,IAAK,IAAI3E,EAAT,EAAgBA,EAAhBuyB,EAAyBvyB,IAAK,CAC1B,GAAI0E,EAAEg3D,EAAFh3D,IAAeC,EAAE+2D,EAArB17D,IAAiC,OAAO+3K,EAAP/3K,GACjC,GAAI0E,EAAEg3D,EAAFh3D,IAAeC,EAAE+2D,EAArB17D,IAAiC,OAAQ+3K,EAAR/3K,GAErC,UDJgBg4K,CAAaF,EAAc,IAC3Ct1K,KAAKoX,SAAS,CAAE7D,KAAMA,IAO1B2hK,gBACI,IAAI/nD,EAAKntH,KAAKkF,MAAMmtK,gBAAgBoD,QACpCvI,EAAI,sBAAuB,iBAAmB//C,GAE9CntH,KAAKg1K,qBAAqBU,uBAAuBvoD,GAC5CxjF,KAAK,SAAUp2B,GACZvT,KAAKoX,SAAS,CAAE7D,KAAMA,EAAM6gK,aAAYp0K,KAAKkF,MAAMkvK,YAAoB,GAAPjnD,MAClEnuH,KAAKgB,OAGf21K,eAAez+F,GACX,IAAIi2C,EAAKntH,KAAKkF,MAAMmtK,gBAAgBoD,QACpCvI,EAAI,sBAAuB,iBAAmB//C,GAE9CntH,KAAKg1K,qBAAqBY,mBAAmBzoD,GACzCxjF,KAAK,SAAUp2B,GACXvT,KAAKk1K,iBACPl2K,KAAKgB,OAIf61K,gBAEI,OAAO71K,KAAK+0K,UACR/lK,OAAO5M,GAAKA,EAAEqyK,YACd3qK,IAAI1H,GAAKA,EAAEoyK,aAGnB3tK,SACI,IAAI0M,EAAOvT,KAAK4K,MAAM2I,KAGtB,MAA6B,OAAzBvN,KAAKE,UAAUqN,IACf25J,EAAI,sBAAuB,QAGvB6B,EAAA7sK,EAAAY,cAAA,WACK9C,KAAKkF,MAAMmtK,gBAAgBoD,SAAWtI,GAAc2I,eAEjD/G,EAAA7sK,EAAAY,cAAA,SACIisK,EAAA7sK,EAAAY,cAACksK,GAAD,CAAM5+J,WAAYmD,EAAKkgK,YACnB1E,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKm1K,aAAtB,0BAC4B5hK,EAAKwiK,cAIvC,KAINhH,EAAA7sK,EAAAY,cAAA,SAAIyQ,EAAKyiK,WACTjH,EAAA7sK,EAAAY,cAAA,SACIisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKk1K,eAAtB,UAGAnG,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAK21K,gBAAtB,WAMJ5G,EAAA7sK,EAAAY,cAAA,aAEIisK,EAAA7sK,EAAAY,cAAA,aACIisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAQ3D,SAAS,KAAKwmB,QAAS3lB,KAAKq1K,aAApC,OAGAr1K,KAAK4K,MAAMwpK,UACLrF,EAAA7sK,EAAAY,cAAA,oBACA,KAEVisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAQ3D,SAAS,OAAOwmB,QAAS3lB,KAAKq1K,aAAtC,SAEJtG,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAQ3D,SAAS,OAAOwmB,QAAS3lB,KAAKq1K,aAAtC,SAEJtG,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAQ3D,SAAS,OAAOwmB,QAAS3lB,KAAKq1K,aAAtC,WAIZtG,EAAA7sK,EAAAY,cAAA,aAEQyQ,EAAK82C,MAAMvgD,IAAI,SAAUmgH,EAAMzsH,EAAGsW,GAC9B,MAAO,CACHi7J,EAAA7sK,EAAAY,cAACmzK,GAAD,CAAiB9jK,IAAK0f,IACP,MAAPA,EAAa7xB,KAAK+0K,UAAUv3K,GAAKq0B,EAChC7xB,KAAK+0K,UAAUlgK,OAAOrX,EAAG,IAE9B42K,UAAWp0K,KAAK4K,MAAMwpK,UACtBr1K,IAAKvB,EACL2vH,GAAI3vH,EACJ+V,KAAM02G,EACNooD,gBAAiBryK,SAG3BhB,KAAKgB,YAS3BktK,EAAI,sBAAuB,UAGvB6B,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,8HEjLLozK,IACH,ECAGrwK,OAAMsqF,cAAc,MCOxBgmF,GAAY,YACZC,GAAS,SACTC,GAAW,WACXC,GAAU,UA8FjBlvF,GAEJ,SAAU1B,GAGR,SAAS0B,EAAWliF,EAAO89E,GACzB,IAAIhtE,EAEJA,EAAQ0vE,EAAiB/nF,KAAKqC,KAAMkF,EAAO89E,IAAYhjF,KACvD,IAGIu2K,EADAjvF,EAFctE,MAEuBwzF,WAAatxK,EAAMuxK,MAAQvxK,EAAMoiF,OAuB1E,OArBAtxE,EAAM0gK,aAAe,KAEjBxxK,EAAM8e,GACJsjE,GACFivF,EAAgBH,GAChBpgK,EAAM0gK,aAAeL,IAErBE,EAAgBD,GAIhBC,EADErxK,EAAMujF,eAAiBvjF,EAAMyxK,aACfR,GAEAC,GAIpBpgK,EAAMpL,MAAQ,CACZsjD,OAAQqoH,GAEVvgK,EAAM4gK,aAAe,KACd5gK,EA/BT3U,aAAe+lF,EAAY1B,GAkC3B0B,EAAW7vE,yBAA2B,SAAkC3F,EAAMilK,GAG5E,OAFajlK,EAAKoS,IAEJ6yJ,EAAU3oH,SAAWioH,GAC1B,CACLjoH,OAAQkoH,IAIL,MAmBT,IAAI3iK,EAAS2zE,EAAWhoF,UAuOxB,OArOAqU,EAAOgD,kBAAoB,WACzBzW,KAAK82K,cAAa,EAAM92K,KAAK02K,eAG/BjjK,EAAOgE,mBAAqB,SAA4BiwE,GACtD,IAAIqvF,EAAa,KAEjB,GAAIrvF,IAAc1nF,KAAKkF,MAAO,CAC5B,IAAIgpD,EAASluD,KAAK4K,MAAMsjD,OAEpBluD,KAAKkF,MAAM8e,GACTkqC,IAAWmoH,IAAYnoH,IAAWooH,KACpCS,EAAaV,IAGXnoH,IAAWmoH,IAAYnoH,IAAWooH,KACpCS,EAhLW,WAqLjB/2K,KAAK82K,cAAa,EAAOC,IAG3BtjK,EAAO4D,qBAAuB,WAC5BrX,KAAKg3K,sBAGPvjK,EAAOwjK,YAAc,WACnB,IACIC,EAAMT,EAAOnvF,EADb06B,EAAUhiH,KAAKkF,MAAM88G,QAWzB,OATAk1D,EAAOT,EAAQnvF,EAAS06B,EAET,MAAXA,GAAsC,iBAAZA,IAC5Bk1D,EAAOl1D,EAAQk1D,KACfT,EAAQz0D,EAAQy0D,MAEhBnvF,OAA4BnmF,IAAnB6gH,EAAQ16B,OAAuB06B,EAAQ16B,OAASmvF,GAGpD,CACLS,KAAMA,EACNT,MAAOA,EACPnvF,OAAQA,IAIZ7zE,EAAOqjK,aAAe,SAAsBK,EAAUJ,GAKpD,QAJiB,IAAbI,IACFA,GAAW,GAGM,OAAfJ,EAAqB,CAEvB/2K,KAAKg3K,qBACL,IAAIlzK,EAAO4R,IAASiB,YAAY3W,MAE5B+2K,IAAeV,GACjBr2K,KAAKo3K,aAAatzK,EAAMqzK,GAExBn3K,KAAKq3K,YAAYvzK,QAEV9D,KAAKkF,MAAMujF,eAAiBzoF,KAAK4K,MAAMsjD,SAAWkoH,IAC3Dp2K,KAAKoX,SAAS,CACZ82C,OAAQioH,MAKd1iK,EAAO2jK,aAAe,SAAsBtzK,EAAMqzK,GAChD,IAAIt7I,EAAS77B,KAETy2K,EAAQz2K,KAAKkF,MAAMuxK,MACnBa,EAAYt3K,KAAKgjF,QAAUhjF,KAAKgjF,QAAQwzF,WAAaW,EACrDI,EAAWv3K,KAAKi3K,cAChBO,EAAeF,EAAYC,EAASjwF,OAASiwF,EAASd,OAGrDU,IAAaV,GAAS31H,GACzB9gD,KAAKy3K,aAAa,CAChBvpH,OAAQooH,IACP,WACDz6I,EAAO32B,MAAMkjF,UAAUtkF,MAK3B9D,KAAKkF,MAAMgjF,QAAQpkF,EAAMwzK,GACzBt3K,KAAKy3K,aAAa,CAChBvpH,OAAQmoH,IACP,WACDx6I,EAAO32B,MAAMijF,WAAWrkF,EAAMwzK,GAE9Bz7I,EAAO67I,gBAAgB5zK,EAAM0zK,EAAc,WACzC37I,EAAO47I,aAAa,CAClBvpH,OAAQooH,IACP,WACDz6I,EAAO32B,MAAMkjF,UAAUtkF,EAAMwzK,WAMrC7jK,EAAO4jK,YAAc,SAAqBvzK,GACxC,IAAI8gC,EAAS5kC,KAETk3K,EAAOl3K,KAAKkF,MAAMgyK,KAClBK,EAAWv3K,KAAKi3K,cAEfC,IAAQp2H,IASb9gD,KAAKkF,MAAM8iF,OAAOlkF,GAClB9D,KAAKy3K,aAAa,CAChBvpH,OAxRe,WAyRd,WACDtpB,EAAO1/B,MAAM+iF,UAAUnkF,GAEvB8gC,EAAO8yI,gBAAgB5zK,EAAMyzK,EAASL,KAAM,WAC1CtyI,EAAO6yI,aAAa,CAClBvpH,OAAQkoH,IACP,WACDxxI,EAAO1/B,MAAMyhF,SAAS7iF,UAlB1B9D,KAAKy3K,aAAa,CAChBvpH,OAAQkoH,IACP,WACDxxI,EAAO1/B,MAAMyhF,SAAS7iF,MAqB5B2P,EAAOujK,mBAAqB,WACA,OAAtBh3K,KAAK42K,eACP52K,KAAK42K,aAAa93G,SAClB9+D,KAAK42K,aAAe,OAIxBnjK,EAAOgkK,aAAe,SAAsB7N,EAAW9gK,GAIrDA,EAAW9I,KAAK23K,gBAAgB7uK,GAChC9I,KAAKoX,SAASwyJ,EAAW9gK,IAG3B2K,EAAOkkK,gBAAkB,SAAyB7uK,GAChD,IAAIw8B,EAAStlC,KAETg1B,GAAS,EAcb,OAZAh1B,KAAK42K,aAAe,SAAU1pK,GACxB8nB,IACFA,GAAS,EACTsQ,EAAOsxI,aAAe,KACtB9tK,EAASoE,KAIblN,KAAK42K,aAAa93G,OAAS,WACzB9pC,GAAS,GAGJh1B,KAAK42K,cAGdnjK,EAAOikK,gBAAkB,SAAyB5zK,EAAMk+G,EAASt/B,GAC/D1iF,KAAK23K,gBAAgBj1F,GACrB,IAAIk1F,EAA0C,MAAX51D,IAAoBhiH,KAAKkF,MAAM2yK,eAE7D/zK,IAAQ8zK,GAKT53K,KAAKkF,MAAM2yK,gBACb73K,KAAKkF,MAAM2yK,eAAe/zK,EAAM9D,KAAK42K,cAGxB,MAAX50D,GACF31G,WAAWrM,KAAK42K,aAAc50D,IAT9B31G,WAAWrM,KAAK42K,aAAc,IAalCnjK,EAAO5M,OAAS,WACd,IAAIqnD,EAASluD,KAAK4K,MAAMsjD,OAExB,GAAIA,IAAWioH,GACb,OAAO,KAGT,IAAIzvF,EAAc1mF,KAAKkF,MACnBgD,EAAWw+E,EAAYx+E,SACvB4vK,EAAa53K,aAA8BwmF,EAAa,CAAC,aAkB7D,UAfOoxF,EAAW9zJ,UACX8zJ,EAAWnB,oBACXmB,EAAWrvF,qBACXqvF,EAAWxwF,cACXwwF,EAAWrB,aACXqB,EAAWZ,YACXY,EAAW91D,eACX81D,EAAWD,sBACXC,EAAW5vF,eACX4vF,EAAW3vF,kBACX2vF,EAAW1vF,iBACX0vF,EAAW9vF,cACX8vF,EAAW7vF,iBACX6vF,EAAWnxF,SAEM,mBAAbz+E,EAET,OAAOrC,IAAM/C,cAAci1K,GAAuBvnF,SAAU,CAC1D/xF,MAAO,MACNyJ,EAASgmD,EAAQ4pH,IAGtB,IAAIr/G,EAAQ5yD,IAAMkqF,SAASC,KAAK9nF,GAChC,OACErC,IAAM/C,cAAci1K,GAAuBvnF,SAAU,CACnD/xF,MAAO,MACNoH,IAAMe,aAAa6xD,EAAOq/G,KAI1B1wF,EAtST,CAuSEvhF,IAAM+R,WA4JR,SAAS6yG,MA1JTrjC,GAAWktB,YAAcyjE,GACzB3wF,GAAWv1E,UAuJP,GAIJu1E,GAAWt1E,aAAe,CACxBkS,IAAI,EACJ2yJ,cAAc,EACdluF,eAAe,EACfnB,QAAQ,EACRmvF,OAAO,EACPS,MAAM,EACNhvF,QAASuiC,GACTtiC,WAAYsiC,GACZriC,UAAWqiC,GACXziC,OAAQyiC,GACRxiC,UAAWwiC,GACX9jC,SAAU8jC,IAEZrjC,GAAW+uF,UAAY,EACvB/uF,GAAWgvF,OAAS,EACpBhvF,GAAWivF,SAAW,EACtBjvF,GAAWkvF,QAAU,EACrBlvF,GAAW4wF,QAAU,EACN5wF,IC/jBX6wF,GD+jBW7wF,0BCxjBf,IAOI8wF,KAAcD,GAAc,IAAgB5B,IAAY,OAAQ4B,GAAY3B,IAAW,OAAQ2B,IAE/FE,GAEJ,SAAUzyF,GAGR,SAASyyF,IAGP,IAFA,IAAIniK,EAEK1E,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAUzB,OAPAyE,EAAQ0vE,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAUvC,MAExEo4K,YAAc,SAAUt0K,IChCnB,SAA8BA,GAC3CA,EAAKy8B,aDgCD83I,CAAqBv0K,GACjBkS,EAAM9Q,MAAMgjF,SAASlyE,EAAM9Q,MAAMgjF,QAAQpkF,IAGxCkS,EAsBT,OAtCA3U,aAAe82K,EAAMzyF,GAmBRyyF,EAAK/4K,UAEXyH,OAAS,WACd,IAAI6/E,EAAc1mF,KAAKkF,MACnBuP,EAAYiyE,EAAYjyE,UACxBvM,EAAWw+E,EAAYx+E,SACvBhD,EAAQhF,aAA8BwmF,EAAa,CAAC,YAAa,aAErE,OAAO7gF,IAAM/C,cAAcskF,GAAY3nF,YAAS,CAC9Co4K,eAAgBjyJ,MACf1gB,EAAO,CACRgjF,QAASloF,KAAKo4K,cACZ,SAAUlqH,EAAQoqH,GACpB,OAAOzyK,IAAMe,aAAasB,EAAUzI,YAAS,GAAI64K,EAAY,CAC3D7jK,UAAWhU,KAAW,OAAQgU,EAAWvM,EAAShD,MAAMuP,UAAWyjK,GAAWhqH,UAK7EiqH,EAvCT,CAwCEtyK,IAAM+R,WAERugK,GAAKrmK,aArDc,CACjBkS,IAAI,EACJg+F,QAAS,IACT20D,cAAc,EACdluF,eAAe,EACfnB,QAAQ,GAiDK6wF,UEhEA3I,MAAmB,cCI9B+I,GAAc1yK,IAAMwM,WAAW,SAAUT,EAAMO,GACjD,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjB+jK,EAAW5mK,EAAK4mK,SAChBt0K,EAAO0N,EAAK1N,KACZgE,EAAW0J,EAAK1J,SAChBuwK,EAAa7mK,EAAK6mK,WAClBvzK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,WAAY,OAAQ,WAAY,eAGtG8mK,GADJ/I,EAAWT,GAAmBS,EAAU,UACX,UAC7B,OAAO9pK,IAAM/C,cAAc,MAAOrD,YAAS,GAAIyF,EAAO,CACpDiN,IAAKA,EACLsC,UAAWhU,KAAWi4K,EAAajkK,EAAWvQ,GAAQyrK,EAAW,IAAMzrK,EAAMs0K,GAAYE,EAAc,YAAaD,GAAcC,EAAc,iBAC9I7yK,IAAM/C,cAAc,MAAO,CAC7B2R,UAAWhU,KAAWkvK,EAAW,aAChCznK,MAELqwK,GAAYrmK,YAAc,cACXqmK,UCvBA/I,MAAmB,gBCkBnBmJ,OARf,SAAyBl6K,GACvB,IAAI0T,EAAMq/E,iBAAO/yF,GAIjB,OAHAyyF,oBAAU,WACR/+E,EAAIsvD,QAAUhjE,GACb,CAACA,IACG0T,GCdM,SAASymK,GAAiBtxD,GACvC,IAAIn1G,EAAMwmK,GAAgBrxD,GAC1B,OAAOt2B,sBAAY,WACjB,OAAO7+E,EAAIsvD,SAAWtvD,EAAIsvD,QAAQ1hE,MAAMoS,EAAKvS,YAC5C,CAACuS,ICDN,IAAIN,GAAY,CACdwK,MAAOksG,IAAUj2G,OAAOnB,WACxBwU,QAAS4iG,IAAU5oG,MAKjBk5J,GAAchzK,IAAMwM,WAAW,SAAUT,EAAMO,GACjD,IAAIkK,EAAQzK,EAAKyK,MACbsJ,EAAU/T,EAAK+T,QACflR,EAAY7C,EAAK6C,UACjBvP,EAAQhF,aAA8B0R,EAAM,CAAC,QAAS,UAAW,cAErE,OAAO/L,IAAM/C,cAAc,SAAUrD,YAAS,CAC5C0S,IAAKA,EACLzJ,KAAM,SACN+L,UAAWhU,KAAW,QAASgU,GAC/BkR,QAASA,GACRzgB,GAAQW,IAAM/C,cAAc,OAAQ,CACrCg2K,cAAe,QACd,KAASjzK,IAAM/C,cAAc,OAAQ,CACtC2R,UAAW,WACV4H,MAELw8J,GAAY3mK,YAAc,cAC1B2mK,GAAYhnK,UAAYA,GACxBgnK,GAAY/mK,aAtBO,CACjBuK,MAAO,SAsBMw8J,UC5BAE,GAHIlzK,IAAMsqF,cAAc,CACrC/J,OAAQ,eCUN4yF,GAAcnzK,IAAMwM,WAAW,SAAUT,EAAMO,GACjD,IAAIw9J,EAAW/9J,EAAK+9J,SAChBsJ,EAAarnK,EAAKqnK,WAClB1tK,EAAcqG,EAAKrG,YACnB66E,EAASx0E,EAAKw0E,OACd3xE,EAAY7C,EAAK6C,UACjBvM,EAAW0J,EAAK1J,SAChBhD,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,aAAc,cAAe,SAAU,YAAa,aAEjH+9J,EAAWT,GAAmBS,EAAU,gBACxC,IAAI3sF,EAAUiO,qBAAW8nF,IACrB55B,EAAcy5B,GAAiB,WAC7B51F,GAASA,EAAQoD,SACjBA,GAAQA,MAEd,OAAOvgF,IAAM/C,cAAc,MAAOrD,YAAS,CACzC0S,IAAKA,GACJjN,EAAO,CACRuP,UAAWhU,KAAWgU,EAAWk7J,KAC/BznK,EAAUqD,GAAe1F,IAAM/C,cAAc+1K,GAAa,CAC5Dx8J,MAAO48J,EACPtzJ,QAASw5H,OAGb65B,GAAY9mK,YAAc,cAC1B8mK,GAAYlnK,aA7BO,CACjBmnK,WAAY,QACZ1tK,aAAa,GA4BAytK,ICnCWvkK,GDmCXukK,MEnCAxJ,MAAmB,cAAe,CAC/C53J,WDDwBnD,GCDW,KDE5B5O,IAAMwM,WAAW,SAAU/S,EAAG6S,GACnC,OAAOtM,IAAM/C,cAAc,MAAOrD,YAAS,GAAIH,EAAG,CAChD6S,IAAKA,EACLsC,UAAWhU,KAAWnB,EAAEmV,UAAWA,6DEFrCykK,GACa,oDADbA,GAEc,cAFdA,GAGc,kBCWdpnK,GAAe,CACjBymB,MAAM,EACNtjB,UAAU,EACV6xE,UAAU,EACV3tE,WAAW,EACXgtE,cAAc,EACdE,cAAc,EACd6P,WAAW,EACXijF,SAAUZ,GACVpnJ,QAAS,IDfX,SAAU+zD,GAGR,SAASk0F,IAGP,IAFA,IAAIpjK,EAEK1E,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAoBzB,OAjBAyE,EAAQkvE,EAAcvnF,KAAKoC,MAAMmlF,EAAe,CAACllF,MAAMwR,OAAOjP,KAAUvC,MAElEq5K,eAAiB,SAAU9gK,EAAMxV,EAASszB,GAC9C,IAAIijJ,EAASv2K,EAAQsB,MAAMkU,GAC3BxV,EAAQw2K,QAAQhhK,GAAQ+gK,EACxBt0K,KAAIjC,EAASwV,EAAMhM,WAAWvH,KAAIjC,EAASwV,IAAS8d,EAAS,OAG/DrgB,EAAMwjK,QAAU,SAAUjhK,EAAMxV,GAC9B,IAAItE,EAAQsE,EAAQw2K,QAAQhhK,QAEdpX,IAAV1C,WACKsE,EAAQw2K,QAAQhhK,GACvBvT,KAAIjC,EAASwV,EAAM9Z,KAIhBuX,EA1BT3U,aAAe+3K,EAAuBl0F,GA6BtC,IAAIzxE,EAAS2lK,EAAsBh6K,UAoCnC,OAlCAqU,EAAOS,kBAAoB,SAA2BC,EAAgBC,GACpE,IAAIynB,EAAS77B,KAIb,GAFAklF,EAAc9lF,UAAU8U,kBAAkBvW,KAAKqC,KAAMmU,EAAgBC,GAEhED,EAAeN,YAApB,CACA,IAAI3P,EAAOu1K,OACX5qD,KAAIz6G,EAAW8kK,IAAwB3zK,QAAQ,SAAUurB,GACvD,OAAO+K,EAAOw9I,eAAe,eAAgBvoJ,EAAI5sB,KAEnD2qH,KAAIz6G,EAAW8kK,IAAyB3zK,QAAQ,SAAUurB,GACxD,OAAO+K,EAAOw9I,eAAe,eAAgBvoJ,GAAK5sB,KAEpD2qH,KAAIz6G,EAAW8kK,IAAyB3zK,QAAQ,SAAUurB,GACxD,OAAO+K,EAAOw9I,eAAe,eAAgBvoJ,EAAI5sB,OAIrDuP,EAAOc,qBAAuB,SAA8BJ,EAAgBC,GAC1E,IAAIwwB,EAAS5kC,KAEbklF,EAAc9lF,UAAUmV,qBAAqB5W,KAAKqC,KAAMmU,EAAgBC,GAExEy6G,KAAIz6G,EAAW8kK,IAAwB3zK,QAAQ,SAAUurB,GACvD,OAAO8T,EAAO40I,QAAQ,eAAgB1oJ,KAExC+9F,KAAIz6G,EAAW8kK,IAAyB3zK,QAAQ,SAAUurB,GACxD,OAAO8T,EAAO40I,QAAQ,eAAgB1oJ,KAExC+9F,KAAIz6G,EAAW8kK,IAAyB3zK,QAAQ,SAAUurB,GACxD,OAAO8T,EAAO40I,QAAQ,eAAgB1oJ,MAInCsoJ,EAlET,SAmEEpmK,KChDF,SAAS0mK,GAAiBx0K,GACxB,OAAOW,IAAM/C,cAAcq1K,GAAMjzK,GAGnC,SAASy0K,GAAmBz0K,GAC1B,OAAOW,IAAM/C,cAAcq1K,GAAMjzK,GAKnC,IAAIugF,GAEJ,SAAUC,GAGR,SAASD,IAGP,IAFA,IAAIzvE,EAEK1E,EAAO1R,UAAUC,OAAQ8lF,EAAQ,IAAI7kF,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFo0E,EAAMp0E,GAAQ3R,UAAU2R,GA6F1B,OA1FAyE,EAAQ0vE,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOm0E,KAAW3lF,MACzE4K,MAAQ,CACZvG,MAAO,IAET2R,EAAM4jK,aAAe,CACnBxzF,OAAQ,WACN,OAAOpwE,EAAM9Q,MAAMkhF,WAIvBpwE,EAAM6jK,YAAc,SAAU1nK,GAC5B6D,EAAM8jK,OAAS3nK,GAGjB6D,EAAM+jK,sBAAwB,WAC5B/jK,EAAMgkK,oBAAqB,GAG7BhkK,EAAMikK,cAAgB,SAAU73K,GAC1B4T,EAAMgkK,oBAAsB53K,EAAEzC,SAAWqW,EAAM8jK,OAAO5kK,SACxDc,EAAMkkK,sBAAuB,GAG/BlkK,EAAMgkK,oBAAqB,GAG7BhkK,EAAMmpI,YAAc,SAAU/8I,GACxB4T,EAAMkkK,sBAAwB93K,EAAEzC,SAAWyC,EAAE0gF,cAC/C9sE,EAAMkkK,sBAAuB,EAI/BlkK,EAAM9Q,MAAMkhF,UAGdpwE,EAAMoiK,YAAc,SAAUt0K,GAC5B,IAAI4iF,EAEA5iF,IACFA,EAAKO,MAAMqoB,QAAU,QAErB1W,EAAMmkK,kBAAkBr2K,IAG1B,IAAK,IAAI0mF,EAAQ5qF,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAM0pF,EAAQ,EAAIA,EAAQ,EAAI,GAAI9R,EAAQ,EAAGA,EAAQ8R,EAAO9R,IACxGn2E,EAAKm2E,EAAQ,GAAK94E,UAAU84E,GAG1B1iE,EAAM9Q,MAAMgjF,UAAUxB,EAAc1wE,EAAM9Q,OAAOgjF,QAAQnoF,MAAM2mF,EAAa,CAAC5iF,GAAM0N,OAAOjP,KAGhGyT,EAAMokK,eAAiB,SAAUt2K,GAG/B,IAFA,IAAIqjF,EAEKkzF,EAAQz6K,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMu5K,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG/3K,EAAK+3K,EAAQ,GAAK16K,UAAU06K,GAG1BtkK,EAAM9Q,MAAMijF,aAAahB,EAAenxE,EAAM9Q,OAAOijF,WAAWpoF,MAAMonF,EAAc,CAACrjF,GAAM0N,OAAOjP,IAEtG++H,KAAO1yH,GAAGhM,OAAQ,SAAUoT,EAAMukK,qBAGpCvkK,EAAMwkK,aAAe,SAAU12K,GAC7B,IAAI8jF,EAEA9jF,IAAMA,EAAKO,MAAMqoB,QAAU,IAE/B,IAAK,IAAI+tJ,EAAQ76K,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAM25K,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGn4K,EAAKm4K,EAAQ,GAAK96K,UAAU86K,GAG1B1kK,EAAM9Q,MAAMyhF,WAAWiB,EAAe5xE,EAAM9Q,OAAOyhF,SAAS5mF,MAAM6nF,EAAcrlF,GAEpF++H,KAAOxyH,IAAIlM,OAAQ,SAAUoT,EAAMukK,qBAGrCvkK,EAAMukK,mBAAqB,WACzBvkK,EAAMmkK,kBAAkBnkK,EAAM8jK,OAAO5kK,SAGvCc,EAAMkxE,eAAiB,SAAUhiF,GAC/B,IAAI2iF,EAAe7xE,EAAM9Q,MACrByqK,EAAW9nF,EAAa8nF,SACxBgL,EAAoB9yF,EAAa8yF,kBACrC,OAAO90K,IAAM/C,cAAc,MAAOrD,YAAS,GAAIyF,EAAO,CACpDuP,UAAWhU,KAAWkvK,EAAW,YAAagL,OAI3C3kK,EAnGT3U,aAAeokF,EAAOC,GAsGtB,IAAIjyE,EAASgyE,EAAMrmF,UA2FnB,OAzFAqU,EAAO4D,qBAAuB,WAE5BiqH,KAAOxyH,IAAIlM,OAAQ,SAAU5C,KAAKu6K,qBAGpC9mK,EAAO0mK,kBAAoB,SAA2Br2K,GACpD,GAAKwkK,KAAL,CACA,IACIsS,EADU56K,KAAKkF,MAAMisB,QACYzd,uBAAuB1T,KAAK85K,QAC7De,EAAqB/2K,EAAKozB,aAAenzB,KAAcD,GAAM6iD,gBAAgBxvB,aACjFn3B,KAAKoX,SAAS,CACZ/S,MAAO,CACLgQ,aAAcumK,IAA2BC,EAAqBpB,YAAqBt4K,EACnFg3D,aAAcyiH,GAA0BC,EAAqBpB,YAAqBt4K,OAKxFsS,EAAO5M,OAAS,WACd,IAAIi0K,EAAe96K,KAAKkF,MACpByqK,EAAWmL,EAAanL,SACxBl7J,EAAYqmK,EAAarmK,UACzBpQ,EAAQy2K,EAAaz2K,MACrB02K,EAAkBD,EAAaC,gBAC/B7yK,EAAW4yK,EAAa5yK,SACxB8yK,EAASF,EAAa3B,SACtB5gJ,EAAOuiJ,EAAaviJ,KACpB29D,EAAY4kF,EAAa5kF,UACzBjhF,EAAW6lK,EAAa7lK,SACxB6xE,EAAWg0F,EAAah0F,SACxB31D,EAAU2pJ,EAAa3pJ,QACvB41D,EAAkB+zF,EAAa/zF,gBAC/BjB,EAASg1F,EAAah1F,OACtBM,EAAS00F,EAAa10F,OACtBhyE,EAAY0mK,EAAa1mK,UACzB+E,EAAY2hK,EAAa3hK,UACzBgtE,EAAe20F,EAAa30F,aAC5BE,EAAey0F,EAAaz0F,aAC5B+B,EAAY0yF,EAAa1yF,UACzBJ,EAAS8yF,EAAa9yF,OACtBC,EAAY6yF,EAAa7yF,UAMzB/iF,GALI41K,EAAan0F,SACZm0F,EAAa3yF,WACb2yF,EAAa5yF,QACb4yF,EAAa3yF,WACb2yF,EAAaH,kBACVz6K,aAA8B46K,EAAc,CAAC,WAAY,YAAa,QAAS,kBAAmB,WAAY,WAAY,OAAQ,YAAa,WAAY,WAAY,UAAW,kBAAmB,SAAU,SAAU,YAAa,YAAa,eAAgB,eAAgB,YAAa,SAAU,YAAa,WAAY,aAAc,UAAW,aAAc,uBAElXG,GAA4B,IAAbhmK,EAAoBjV,KAAKm/I,YAAc,KAEtD+7B,EAAiBz7K,YAAS,GAAI4E,EAAOrE,KAAK4K,MAAMvG,OAIpD,OADK6xF,IAAWglF,EAAexuJ,QAAU,SAClC7mB,IAAM/C,cAAci2K,GAAavoF,SAAU,CAChD/xF,MAAOuB,KAAK45K,cACX/zK,IAAM/C,cAAcq4K,KAAW,CAChC5iJ,KAAMA,EACNtjB,SAAUA,EACVb,UAAWA,EACX0yE,SAAUA,EACV3tE,UAAWA,EACXgtE,aAAcA,EACdE,aAAcA,EACdU,gBAAiBA,EACjBjB,OAAQA,EACRM,OAAQA,EACRgC,UAAWA,EACXJ,OAAQA,EACRC,UAAWA,EACX92D,QAASA,EACThf,IAAKnS,KAAK65K,YACVx1K,MAAO62K,EACPzmK,UAAWhU,KAAWgU,EAAWk7J,GACjC5pF,mBAAoB4pF,EAAW,QAC/BnoF,WAAY0O,EAAYwjF,QAAmBv4K,EAC3CkmF,mBAAoB6O,EAAYyjF,QAAqBx4K,EACrD+lF,eAAgBlnF,KAAKknF,eACrBvhE,QAASs1J,EACT50J,UAAWrmB,KAAKi6K,cAChB/xF,QAASloF,KAAKo4K,YACdjwF,WAAYnoF,KAAKo6K,eACjBzzF,SAAU3mF,KAAKw6K,cACd30K,IAAM/C,cAAck4K,EAAQv7K,YAAS,GAAIyF,EAAO,CACjD+gB,YAAajmB,KAAK+5K,sBAClBtlK,UAAWsmK,IACT7yK,MAGCu9E,EAlMT,CAmME5/E,IAAM+R,WAER6tE,GAAM3zE,aAAeA,GACrB,IAAIspK,GvC1MJ,SAAkCxjK,EAAWk0E,GACvB,iBAATA,IAAmBA,EAAO,CACnCriC,OAAQqiC,IAEV,IAAIuvF,EAAWzjK,EAAUxY,WAAawY,EAAUxY,UAAU+uF,iBAEtDmtF,EAAQxvF,EACRriC,EAAS6xH,EAAM7xH,OACf8xH,EAAqBD,EAAMtxF,aAC3BA,OAAsC,IAAvBuxF,EAAgCF,EAAW,MAAQ,WAAaE,EACnF,OAAOlpK,KAAW,SAAUT,EAAMO,GAChC,IAAIjN,EAAQzF,YAAS,GAAImS,GAEzB1M,EAAM8kF,GAAgB73E,EACtB,IAAIi9J,EAAWn+E,qBAAWg+E,IAC1B,OAAOppK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CAExDyqK,SAAUzqK,EAAMyqK,UAAYP,EAAS/wK,IAAIorD,IAAWA,MAErD,CACDv3C,YAAa,cAAgB0F,EAAU1F,aAAe0F,EAAU7Z,MAAQ,MuCsLvDy9K,CAAyB/1F,GAAO,SACrD21F,GAAeK,KAAOA,GACtBL,GAAeM,OAASA,GACxBN,GAAeO,MAAQA,GACvBP,GAAeQ,OAASA,GACxBR,GAAeJ,OAASzC,GACxB6C,GAAeS,oBAAsB,IACrCT,GAAeU,6BAA+B,IAC/BV,mBC5OA,MAAMW,WAA+Bl2K,IAAM+R,UAEtDpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,yBAA0B,SAE9BltK,KAAK4K,MAAQ,CAAEoxK,UAAW,GAAIC,iBAAiB,GAC/Cj8K,KAAKg1K,qBAAuB,IAAIC,GAIpCiH,eAGAC,gBAKAC,gBAAgBllG,GAEGl3E,KAAKkF,MAAMmtK,gBAAgBtkF,KACtC+mF,oBAAoBe,gBAEf/rK,IAAK1H,IACV8qK,EAAI,yBAA0B,cAAgB9qK,GAE9CpC,KAAKg1K,qBAAqBzB,aAAanxK,KAI/Ci6K,cAAcnlG,GAEV,IAEIolG,EAFWt8K,KAAKkF,MAAMmtK,gBAAgBtkF,KACtC+mF,oBAAoBe,gBACA/rK,IAAK1H,IACzB8qK,EAAI,yBAA0B,YAAc9qK,GACrCpC,KAAKg1K,qBAAqBuH,YAAYn6K,KAG7Co6K,EAAS,GAGblmJ,QAAQwtB,IAAIw4H,GAAU3yI,KAAK,SAAUp2B,GACjCA,EAAKzJ,IAAI,SAAU1H,GACfo6K,GAAU,YAAcp6K,EAAE6rK,SAAW,cAAgB7rK,EAAEowK,WAAa,QAGxEF,GAAamK,MAAMD,EAAQ,QAE3Bx8K,KAAKkF,MACDmtK,gBAAgBqK,iBACtB19K,KAAKgB,OAKX28K,YAAYzlG,GACR,IAAI54D,EAAWte,KAAKkF,MAAMmtK,gBAAgBtkF,KACtC+mF,oBAAoBe,gBAED,GAAnBv3J,EAASze,SAGbG,KAAKse,SAAWA,EAEhBte,KAAKoX,SAAS,CAAE6kK,iBAAiB,KAGrCW,uBAAuB1lG,GAEnB,IAAIs8F,EAAUxzK,KAAK+tF,KAAK8uF,cAAcp+K,MAClCoZ,EAAK7X,KAAKkF,MAAMmtK,gBAAgBoD,QAKpCz1K,KAAKg1K,qBAAqB8H,qBAAqBtJ,EAAS37J,GACpD8xB,KAAK,SAAUp2B,GACXvT,KAAKkF,MAAMmtK,gBAAgBqK,gBAC3BpK,GAAamK,MAAM,WAAY,cACjCz9K,KAAKgB,OAEXA,KAAK+tF,KAAK8uF,cAAcp+K,MAAQ,GAIpCs+K,yBACI/8K,KAAKoX,SAAS,CAAE6kK,iBAAiB,IAGrCxG,QACI,OAAuBt0K,MAAnBnB,KAAKg9K,WACEh9K,KAAKg9K,WAETh9K,KAAKkF,MAAMmtK,gBAAgBoD,QAEtCL,MAAMjoD,GACFntH,KAAKg9K,WAAa7vD,EAGtB8vD,oBACI,IAAIX,EAAWt8K,KAAKse,SAASxU,IAAI,SAAU1H,GAEvC,OADA8qK,EAAI,yBAA0B,UAAY9qK,GACnCpC,KAAKg1K,qBAAqBkI,UAAU96K,EAAGpC,KAAKg9K,aACrDh+K,KAAKgB,OAEHw8K,EAAS,GACblmJ,QAAQwtB,IAAIw4H,GAAU3yI,KAAK,SAAUp2B,GACjCipK,GAAU,YAAcp6K,EAAE6rK,SAAW,cAAgB7rK,EAAEowK,WAAa,MAGpEF,GAAamK,MAAMD,EAAQ,QAC3Bx8K,KAAKkF,MACDmtK,gBAAgBqK,iBACtB19K,KAAKgB,OAEPA,KAAKoX,SAAS,CAAE6kK,iBAAiB,IAIrCp1K,SAEI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,iCAEAisK,EAAA7sK,EAAAY,cAAA,SACIisK,EAAA7sK,EAAAY,cAAA,SAAOqP,IAAI,kBACX48J,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAK48K,wBAAtB,oBAIqB,IAAxB58K,KAAK4K,MAAMoxK,UACNjN,EAAA7sK,EAAAY,cAAA,SAAI9C,KAAK4K,MAAMoxK,WACf,GAGNjN,EAAA7sK,EAAAY,cAAA,aACIisK,EAAA7sK,EAAAY,cAAA,aACIisK,EAAA7sK,EAAAY,cAAA,UACIisK,EAAA7sK,EAAAY,cAAA,UAAIisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKo8K,iBAAtB,YACJrN,EAAA7sK,EAAAY,cAAA,UAAIisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKq8K,eAAtB,YACJtN,EAAA7sK,EAAAY,cAAA,UAAIisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAK28K,aAAtB,mBAKhB5N,EAAA7sK,EAAAY,cAACq6K,GAAD,CAAOhrK,IAAI,QACPomB,KAAMv4B,KAAK4K,MAAMqxK,gBACjB71F,OAAQpmF,KAAK+8K,uBAEb74K,KAAK,KACLk5K,kBAAgB,gCAChB5E,UAAQ,GAERzJ,EAAA7sK,EAAAY,cAACq6K,GAAMzB,OAAP,CAAcnwK,aAAW,GACrBwjK,EAAA7sK,EAAAY,cAACq6K,GAAMxB,MAAP,sCAEJ5M,EAAA7sK,EAAAY,cAACq6K,GAAM1B,KAAP,KACI1M,EAAA7sK,EAAAY,cAACu6K,GAAD,CAAqBlrK,IAAI,sBACrBkgK,gBAAiBryK,KACjBo0K,WAAW,KAGnBrF,EAAA7sK,EAAAY,cAACq6K,GAAMvB,OAAP,KACI7M,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,YAAYvuJ,QAAS3lB,KAAK+8K,wBAA1C,UAGAhO,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,UAAUvuJ,QAAS3lB,KAAKi9K,mBAAxC,yBClLT,MAAAK,GAEX97K,cAEIxB,KAAAu9K,UAAA,+BACAv9K,KAAAw9K,WAAA,8BACAx9K,KAAAy9K,WAAA,0BAEAz9K,KAAA09K,kBAAyBvQ,GAAzBuQ,kBACA19K,KAAAmtH,IAAA,EAEAntH,KAAA29K,mBAAA,EAEA39K,KAAA49K,MAAA,KACA59K,KAAA69K,UAZU,KAgBV79K,KAAA89K,mBAhBU,KAkBV99K,KAAA+9K,aAlBU,KAoBV/9K,KAAAg+K,QAAA,KAOJnQ,qBAAAoQ,EAAAC,GAEI,OAAO,IAAA5nJ,QAAY,SAAAC,EAAAC,GAEf,IAAIkiB,EAAO14C,KAAA49K,MAAAv6K,MAAA46K,EAAXC,GAEI19H,EAAS,IAAbC,WACAD,SAAgB,WACZjqB,EAAQiqB,EAARjqB,SAEJiqB,YAEAA,oBAVexhD,KAAnBgB,OAeJ6tK,0BACI,IAAA7iF,EAcA,aAZMwiF,GAASxtK,KAADu9K,UAAA,OACV,CAEI9J,SAAUzzK,KAFd69K,UAIInK,KAAM1zK,KAAA49K,MAJV7/K,KAMI82K,KAAM70K,KAAA49K,MAAW15K,OAPnBylC,KAQM,SAAAp2B,GACJy3E,KADIhsF,KARZgB,OAYAgrF,EAIJ6iF,uBAAAsQ,EAAAC,GAII,GAFAlR,EAAG,iBAAHA,qBAEKltK,KAAL29K,kBACI,MAAO,CAAEU,OAAO,GAGpB,OAAIF,EAAgB,CAGhB,IAAAnzF,EAcA,OAhBAkiF,EAAG,iBAAmBltK,KAAAw9K,WAAtBtQ,SAIMM,GAASxtK,KAADw9K,WAAA,OACV,CAEIrwD,GAAIntH,KAFRmtH,GAIImxD,MAJJH,IADEx0I,KAQM,SAAAp2B,GACJy3E,KADIhsF,KARZgB,OAYAgrF,GAOR6iF,sBAAAvtH,EAAAi+H,GAEIv+K,KAAA49K,MAAAt9H,EACAtgD,KAAA69K,UAAAU,EAEA,IAAIC,QAAmBx+K,KAAvBy+K,oBACA,GAAKD,EAALH,MAAA,CAMAr+K,KAAA29K,mBAAA,EACA39K,KAAAmtH,GAAUqxD,EAAVrxD,GACA,MAAIntH,KAAA+9K,cACA/9K,KAAA+9K,aAAkB/9K,KAAlBmtH,IAEJ,IAAK,IAAInmF,EAAJ,EAAao3I,EAAlB,EAAiCp3I,EAAMhnC,KAAA49K,MAAvC15K,KAAwD8iC,GAAOhnC,KAAPgnC,kBAA+Bo3I,IAAa,CAChG,IAAKp+K,KAAL29K,kBACI,OAEJ,IAAIQ,QAAiBn+K,KAAA0+K,eAAA13I,EAAyBA,EAAMhnC,KAApD09K,mBACI9yK,QAAc5K,KAAA2+K,iBAAAR,EAAlBC,GAGA,IAAKxzK,EAALyzK,MAKI,YAFA,MAAIr+K,KAAAg+K,SACAh+K,KAAAg+K,QAAapzK,EAAbg0K,MAKR,IAAIt/K,EAAI6W,WAAW6wB,MAAYsZ,EAA/Bp8C,MACAgpK,EAAG,iBAAmB,OAAtBA,GAEA,MAAIltK,KAAA89K,oBACA99K,KAAA89K,mBAAAx+K,GAGRU,KAAA29K,mBAAA,OAlCI,MAAI39K,KAAAg+K,SACAh+K,KAAAg+K,QAAaQ,EAAbI,KAoCZC,SACI7+K,KAAA29K,mBADK,EAMLtxK,WAAW,WAEPmhK,GAASxtK,KAADy9K,WAAA,OACJ,CAEItwD,GAAIntH,KAAKmtH,MALVnuH,KAADgB,MAAVqM,MC/IO,MAAMyyK,WAAwBj5K,IAAM+R,UAE/CpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,kBAAmB,SAIvBltK,KAAK4K,MAAQ,CAAE83D,SAAU,EAAGq8G,oBAAoB,EAAMC,OAAQ,EAAGC,SAAU,GAAIjD,UAAW,IAG1Fh8K,KAAKk/K,eAAiB,IAAIC,GAC1Bn/K,KAAKk/K,eAAepB,mBAAqB99K,KAAKo/K,kBAE9Cp/K,KAAKk/K,eAAelB,QAAUh+K,KAAKg+K,QAGvCqB,cAEI,IAAIh/H,EAAQrgD,KAAK+tF,KAAKztC,KAClBC,EAAQF,EAAME,MAGlB,GAAoB,GAAhBA,EAAM1gD,OACN,OACJ,IAAIygD,EAAOC,EAAM,GAEjBvgD,KAAKoX,SAAS,CAAE2nK,oBAAoB,EAAOC,OAAQ,EAAGC,SAAU,CAAElhL,KAAMuiD,EAAKviD,KAAMmG,KAAMo8C,EAAKp8C,QAE9FlE,KAAKk/K,eAAeI,gBAAgBh/H,EAAMtgD,KAAKkF,MAAMmtK,gBAAgBoD,SAAS9rI,KAAK,WAC/E2oI,GAAamK,MAAM,WAAW,UAE9Bz8K,KAAKoX,SAAS,CAAE2nK,oBAAoB,EAAMC,OAAQ,EAAGC,SAAU,GAAIjD,UAAW,KAC9Eh8K,KAAKkF,MAAMmtK,gBAAgBqK,gBAC3Br8H,EAAM5hD,MAAQ,IAChBO,KAAKgB,OAGXu/K,cACIv/K,KAAKk/K,eAAeL,SACpB7+K,KAAKoX,SAAS,CAAE2nK,oBAAoB,EAAMC,OAAQ,EAAGC,SAAU,KAGnEG,kBAAkBI,GACdx/K,KAAKoX,SAAS,CAAEsrD,SAAU88G,IAG9BxB,QAAQY,GACJ5+K,KAAKoX,SAAS,CAAEsrD,SAAU,EAAGq8G,oBAAoB,EAAMC,OAAQ,EAAGC,SAAU,GAAIjD,UAAW4C,IAK/F/3K,SACI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,oBACAisK,EAAA7sK,EAAAY,cAAA,SACIisK,EAAA7sK,EAAAY,cAAA,SAAOqP,IAAI,OAAOzJ,KAAK,OAAO8R,UAAWxa,KAAK4K,MAAMm0K,qBACpDhQ,EAAA7sK,EAAAY,cAAA,UAAQ0X,UAAWxa,KAAK4K,MAAMm0K,mBAAoBp5J,QAAS3lB,KAAKq/K,aAAhE,UACAtQ,EAAA7sK,EAAAY,cAAA,UAAQ0X,SAAUxa,KAAK4K,MAAMm0K,mBAAoBp5J,QAAS3lB,KAAKu/K,aAA/D,WAGkB,GAArBv/K,KAAK4K,MAAMo0K,OAERjQ,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,qBAAa9C,KAAK4K,MAAM83D,SAAxB,MACAqsG,EAAA7sK,EAAAY,cAAA,uCACAisK,EAAA7sK,EAAAY,cAAA,uBAAe9C,KAAK4K,MAAMq0K,SAASlhL,MACnCgxK,EAAA7sK,EAAAY,cAAA,2BAAmB9C,KAAK4K,MAAMq0K,SAAS/6K,OAEzC,GAGmB,IAAxBlE,KAAK4K,MAAMoxK,UACNjN,EAAA7sK,EAAAY,cAAA,uBAAe9C,KAAK4K,MAAMoxK,WAC1B,OClFtB,IAGIyD,GAAgB55K,IAAMwM,WAAW,SAAUT,EAAMO,GACnD,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBvP,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,cAEzD63C,EAASylH,GAAmBS,EAAU,eAC1C,OAAO9pK,IAAM/C,cAAc,MAAOrD,YAAS,GAAIyF,EAAO,CACpDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWg1C,QAGrCg2H,GAAcvtK,YAAc,gBAC5ButK,GAAc3tK,aAfK,CACjBgM,KAAM,WAeO2hK,UCZA,MAAMC,WAAyB75K,IAAM+R,UAEhDpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,mBAAoB,SAiB5ByS,eAEI3/K,KAAK4/K,OAAuBz+K,MAAdnB,KAAK4/K,MAAqB,EAAI5/K,KAAK4/K,OAAS,IAK9D/4K,SAEI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,2BACAisK,EAAA7sK,EAAAY,cAAC+8K,GAAD,KACI9Q,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQjvJ,QAAS3lB,KAAK2/K,aAAczL,QAAQ,mBAA5C,WACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,qBAAhB,aACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,mBAAhB,WACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,mBAAhB,WACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,kBAAhB,UACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,gBAAhB,QACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,iBAAhB,SACAnF,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,gBAAhB,WCpCL,MAAM4L,WAAyBj6K,IAAM+R,UAEhDpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,mBAAoB,SAKxB,IAAI6S,EAAS,IAAIxlH,IAAI33D,OAAO+N,SAAS6K,MACjCwkK,aAAa3hL,IAAI,MAEP,MAAV0hL,EACA//K,KAAKo1K,MAAM2K,GAOX//K,KAAKo1K,OAAO,GAIpBtG,eACI9uK,KAAK08K,gBACL18K,KAAK+tF,KAAK0gF,YAAYK,eAE1B4N,gBACI18K,KAAK+tF,KAAK+mF,oBACNI,gBAGRE,MAAM7lK,GACFvP,KAAKigL,UAAY1wK,EACjB29J,EAAI,mBAAoBltK,KAAKigL,WAGjCxK,QACI,OAAOz1K,KAAKigL,UAIhBp5K,SACI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAACo9K,GAAD,CAAa/tK,IAAI,cACbkgK,gBAAiBryK,OAErB+uK,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAACq9K,GAAD,CAAahuK,IAAI,cACbkgK,gBAAiBryK,OAGrB+uK,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAACu6K,GAAD,CAAqBlrK,IAAI,sBACrBkgK,gBAAiBryK,KACjBo0K,WAAW,IAEfrF,EAAA7sK,EAAAY,cAAA,WACC9C,KAAKy1K,SAAWtI,GAAc2I,eAE3B/G,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAACs9K,GAAD,CAAwBjuK,IAAI,yBACxBkgK,gBAAiBryK,OAErB+uK,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAACu9K,GAAD,CAAiBluK,IAAI,kBACjBkgK,gBAAiBryK,OAErB+uK,EAAA7sK,EAAAY,cAAA,YAEF,GAENisK,EAAA7sK,EAAAY,cAACw9K,GAAD,MACAvR,EAAA7sK,EAAAY,cAAA,mBChET,SAASy9K,GAAOr7K,EAAOqT,GAC5B,YAAuBpX,IAAhB+D,EAAMqT,GAER,SAASioK,GAAWzhL,GACzB,MAAO,UAAYA,EAAIysD,OAAO,GAAG94C,cAAgB3T,EAAIs7E,OAAO,GC7B9D,SAASomG,GAAe9/K,GAAO,IAAI5B,EAEnC,SAAsBshD,EAAOqgI,GAAQ,GAAqB,iBAAVrgI,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAIsgI,EAAOtgI,EAAM9hD,OAAOqiL,aAAc,QAAaz/K,IAATw/K,EAAoB,CAAE,IAAI31F,EAAM21F,EAAKhjL,KAAK0iD,EAAOqgI,GAAQ,WAAY,GAAmB,iBAAR11F,EAAkB,OAAOA,EAAK,MAAM,IAAIx7E,UAAU,gDAAmD,OAAiB,WAATkxK,EAAoBhxK,OAASshD,QAAQ3Q,GAFvUwgI,CAAalgL,EAAK,UAAW,MAAsB,iBAAR5B,EAAmBA,EAAM2Q,OAAO3Q,GCFrG8G,WAAMsqF,cAAc,MCApBtqF,OAAMsqF,cAAc,0BCA/B2wF,GAAoBj7K,IAAMsqF,gBACnB4wF,GAAe,SAAsBC,EAAUxlK,GACxD,OAAgB,MAAZwlK,EAAyBtxK,OAAOsxK,GAC7BxlK,GAAQ,MAEFslK,MCJAG,GADEp7K,IAAMsqF,cAAc,MCCtB+wF,GADEr7K,IAAMsqF,cAAc,MCSjCs6B,GAAO,aAEP02D,GAEJ,SAAUz7F,GAGR,SAASy7F,IAGP,IAFA,IAAInrK,EAEK1E,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ3R,UAAU2R,GAiDzB,OA9CAyE,EAAQ0vE,EAAiB/nF,KAAKoC,MAAM2lF,EAAkB,CAAC1lF,MAAMwR,OAAOjP,KAAUvC,MACxE4K,MAAQ,CACZw2K,WAAY,MAGdprK,EAAMqrK,aAAe,SAAUtiL,EAAKmO,GAClC,IAAIw5E,EAAc1wE,EAAM9Q,MACpBilG,EAAWzjB,EAAYyjB,SACvBm3E,EAAiB56F,EAAY46F,eACtB,MAAPviL,IACAorG,GAAUA,EAASprG,EAAKmO,GACxBo0K,GAAgBA,EAAeviL,EAAKmO,KAG1C8I,EAAMyoI,cAAgB,SAAUvxI,GAC9B,IAEIq0K,EAFA/iC,EAAYxoI,EAAM9Q,MAAMs5I,UAI5B,OAHIA,GAAWA,EAAUtxI,GAGjBA,EAAMnO,KACZ,IAAK,YACL,IAAK,UACHwiL,EAAkBvrK,EAAMwrK,oBAAoB,GAC5C,MAEF,IAAK,aACL,IAAK,YACHD,EAAkBvrK,EAAMwrK,mBAAmB,GAC3C,MAEF,QACE,OAGCD,IACLr0K,EAAM6nC,iBAEN/+B,EAAMqrK,aAAaE,EAAgBhI,QAAQkI,WAAYv0K,GAEvD8I,EAAM0rK,eAAgB,IAGxB1rK,EAAM2rK,UAAY,SAAUxvK,GAC1B6D,EAAM4rK,SAAWzvK,GAGZ6D,EAvDT3U,aAAe8/K,EAAaz7F,GA0D5By7F,EAAY5pK,yBAA2B,SAAkC3F,GACvE,IAAIiwK,EAAYjwK,EAAKiwK,UACjBC,EAAkBlwK,EAAKkwK,gBACvBC,EAAkBnwK,EAAKmwK,gBAE3B,MAAO,CACLX,WAAY,CACVtjK,KAHOlM,EAAKkM,KAKZ+jK,UAAWd,GAAac,GACxBC,gBAAiBA,GAAmBr3D,GACpCs3D,gBAAiBA,GAAmBt3D,MAK1C,IAAIh3G,EAAS0tK,EAAY/hL,UA6CzB,OA3CAqU,EAAOgE,mBAAqB,WAC1B,GAAKzX,KAAK0hL,eAAkB1hL,KAAK4hL,SAAjC,CACA,IAAII,EAAchiL,KAAK4hL,SAAS96K,cAAc,8BAC1Ck7K,GAAaA,EAAY5iJ,UAG/B3rB,EAAO+tK,mBAAqB,SAA4Bj8J,GACtD,IAAKvlB,KAAK4hL,SAAU,OAAO,KAC3B,IAAIv3H,EAAQwkE,KAAI7uH,KAAK4hL,SAAU,sCAC3BI,EAAchiL,KAAK4hL,SAAS96K,cAAc,WAC1CmsB,EAAQo3B,EAAM/pD,QAAQ0hL,GAC1B,IAAe,IAAX/uJ,EAAc,OAAO,KACzB,IAAIgvJ,EAAYhvJ,EAAQ1N,EAGxB,OAFI08J,GAAa53H,EAAMxqD,SAAQoiL,EAAY,GACvCA,EAAY,IAAGA,EAAY53H,EAAMxqD,OAAS,GACvCwqD,EAAM43H,IAGfxuK,EAAO5M,OAAS,WACd,IAAIsgF,EAAennF,KAAKkF,MACpB8uK,EAAkB7sF,EAAa3F,GAC/B5pE,OAAgC,IAApBo8J,EAA6B,KAAOA,EAMhD9uK,GALIiiF,EAAagjB,SACZhjB,EAAam6F,eACbn6F,EAAa26F,gBACb36F,EAAa46F,gBACb56F,EAAa06F,UACV3hL,aAA8BinF,EAAc,CAAC,KAAM,WAAY,iBAAkB,kBAAmB,kBAAmB,eAMnI,MAJmB,YAAfjiF,EAAM4Y,OACR5Y,EAAMs5I,UAAYx+I,KAAKy+I,eAGlB54I,IAAM/C,cAAcg+K,GAAkBtwF,SAAU,CACrD/xF,MAAOuB,KAAKqhL,cACXx7K,IAAM/C,cAAcm+K,GAAWzwF,SAAU,CAC1C/xF,MAAOuB,KAAK4K,MAAMw2K,YACjBv7K,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACpDs5I,UAAWx+I,KAAKy+I,cAChBtsI,IAAKnS,KAAK2hL,gBAIPR,EAxHT,CAyHEt7K,IAAM+R,WAEOsqK,QAAkB,CAACpB,GAAmBI,IAAa,SAAUI,EAAgBa,EAAYl+B,GACtG,IAAInmI,EAAOmmI,EAAMnmI,KACjB,OAAKqkK,EAME,CACLN,UAJcM,EAAWN,UAKzBP,eAAgBA,EAChBxjK,KAAMA,GAAQ,UAGdikK,gBARoBI,EAAWJ,gBAS/BD,gBARoBK,EAAWL,iBALT,CACtBR,eAAgBA,IAcjBH,ICrJCiB,GAAUv8K,IAAMwM,WACpB,SAAUT,EAAMO,GACd,IAAIw9J,EAAW/9J,EAAK+9J,SAChBl7J,EAAY7C,EAAK6C,UACjBvM,EAAW0J,EAAK1J,SAChB+nK,EAAUr+J,EAAK4vE,GACf5pE,OAAwB,IAAZq4J,EAAqB,MAAQA,EACzC/qK,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,YAAa,WAAY,OAGtF,OADA+9J,EAAWT,GAAmBS,EAAU,YACjC9pK,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLsC,UAAWhU,KAAWgU,EAAWk7J,KAC/BznK,KAENk6K,GAAQlwK,YAAc,UACPkwK,UCXXC,GAAkBx8K,IAAMwM,WAAW,SAAUT,EAAMO,GACrD,IAAI6iB,EAASpjB,EAAKojB,OACdvgB,EAAY7C,EAAK6C,UACjBwK,EAAWrN,EAAKqN,SAChB+hK,EAAWpvK,EAAKovK,SAChB72E,EAAWv4F,EAAKu4F,SAChBxkF,EAAU/T,EAAK+T,QACf/N,EAAYhG,EAAK4vE,GACjBt8E,EAAQhF,aAA8B0R,EAAM,CAAC,SAAU,YAAa,WAAY,WAAY,WAAY,UAAW,OAEnH0wK,EAASvB,GAAaC,EAAU97K,EAAMsW,MACtC8lK,EAAiBrwF,qBAAW6vF,IAC5BM,EAAanwF,qBAAWgwF,IACxB7Y,EAAWpzI,EAEXosJ,IACGl8K,EAAM4Y,MAA4B,YAApBsjK,EAAWtjK,OAAoB5Y,EAAM4Y,KAAO,OAC/D5Y,EAAM,qBAAuBo9K,EAC7Bp9K,EAAM2S,GAAKupK,EAAWW,gBAAgBO,GACtCp9K,EAAM,iBAAmBk8K,EAAWU,gBAAgBQ,GACpDla,EAAqB,MAAVpzI,GAA4B,MAAVstJ,EAAiBlB,EAAWS,YAAcS,EAASttJ,GAG/D,QAAf9vB,EAAM4Y,OACR5Y,EAAM+Z,SAAWmpJ,EAAWnpJ,GAAY,EACxC/Z,EAAM,iBAAmBkjK,GAG3B,IAAIma,EAAgB3J,GAAiB,SAAUx2K,GACzCujB,GAASA,EAAQvjB,GACP,MAAVkgL,IACAn4E,GAAUA,EAASm4E,EAAQlgL,GAC3Bk/K,GAAgBA,EAAegB,EAAQlgL,MAE7C,OAAOyD,IAAM/C,cAAc8U,EAAWnY,YAAS,GAAIyF,EAAO,CACxDiN,IAAKA,EACLwT,QAAS48J,EACT9tK,UAAWhU,KAAWgU,EAAW2zJ,GAAY,eAGjDia,GAAgBvwK,aA3CG,CACjB0I,UAAU,GA2CG6nK,UC5CXvwK,GAAe,CACjB0I,UAAU,EACVgnE,GAAIuyF,IAEFyO,GAAU38K,IAAMwM,WAAW,SAAUT,EAAMO,GAC7C,IAAIw9J,EAAW/9J,EAAK+9J,SAChBn1J,EAAW5I,EAAK4I,SAChB/F,EAAY7C,EAAK6C,UACjB+G,EAAO5J,EAAK4J,KACZwlK,EAAWpvK,EAAKovK,SAChB72E,EAAWv4F,EAAKu4F,SAChB3oB,EAAK5vE,EAAK4vE,GACVt8E,EAAQhF,aAA8B0R,EAAM,CAAC,WAAY,WAAY,YAAa,OAAQ,WAAY,WAAY,OAGtH,OADA+9J,EAAWT,GAAmBS,EAAU,YACjC9pK,IAAM/C,cAAcu/K,GAAiB5iL,YAAS,GAAIyF,EAAO,CAC9DsW,KAAMA,EACNrJ,IAAKA,EACL6uK,SAAUA,EACVx/F,GAAIA,EACJhnE,SAAUA,EACV2vF,SAAUA,EACV11F,UAAWhU,KAAWgU,EAAWk7J,EAAUn1J,GAAY,iBAG3DgoK,GAAQtwK,YAAc,UACtBswK,GAAQ1wK,aAAeA,GACR0wK,UClBXC,GAAM58K,IAAMwM,WAAW,SAAUqwK,EAAmBvwK,GACtD,IAAIwwK,EAkBAC,EAAgBC,EAhBhBC,EVVS,SAAyB59K,EAAO47C,GAC7C,OAAO5iD,OAAOmC,KAAKygD,GAAQzoC,OAAO,SAAUgI,EAAQ0iK,GAClD,IAAI54F,EAEA4T,EAAe19E,EAAO2iK,GAAiBD,IACvCE,EAAa5iK,EAAO0iK,GACpBpuB,EAAOz0J,aAA8BmgB,EAAQ,CAAC2iK,GAAiBD,GAAYA,GAAWj5K,IAAI22K,KAE1FyC,EAAcpiI,EAAOiiI,GACrBr7F,EAAY8J,iBAAO,IAEnB2xF,EAAY1xF,mBAASsM,GACrBqlF,EAAaD,EAAU,GACvB/rK,EAAW+rK,EAAU,GAErB5C,EAASyC,GAAa99K,EAAO69K,GAC7BM,EAAUL,GAAat7F,EAAUjmB,QAASshH,GAC9Cr7F,EAAUjmB,QAAUv8D,GAMfq7K,GAAU8C,GACbjsK,EAAS2mF,GAGX,IAAIulF,EAAep+K,EAAMg+K,GACrBxgG,EAAUsO,sBAAY,SAAUvyF,GAClC,IAAK,IAAI6S,EAAO1R,UAAUC,OAAQ0C,EAAO,IAAIzB,MAAMwQ,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGhP,EAAKgP,EAAO,GAAK3R,UAAU2R,GAGzB+xK,GAAcA,EAAavjL,WAAM,EAAQ,CAACtB,GAAO+S,OAAOjP,IAC5D6U,EAAS3Y,IACR,CAAC2Y,EAAUksK,IACd,OAAO7jL,YAAS,GAAIk1J,IAAOxqE,EAAY,IAAc44F,GAAaxC,EAAS0C,EAAaG,EAAYj5F,EAAU+4F,GAAexgG,EAASyH,KACrIjlF,GU3BoBq+K,CAAgBb,EAAmB,CACxDb,UAAW,aAET2B,EAAsBV,EAAiBthG,GACvCA,OAA6B,IAAxBgiG,EAAiC,MAAQA,EAC9C7T,EAAWmT,EAAiBnT,SAC5BuE,EAAU4O,EAAiB5O,QAC3BtxJ,EAAOkgK,EAAiBlgK,KACxB6gK,EAAUX,EAAiBW,QAC3BC,EAASZ,EAAiBY,OAC1BjvK,EAAYquK,EAAiBruK,UAC7BvM,EAAW46K,EAAiB56K,SAC5B25K,EAAYiB,EAAiBjB,UAC7B38K,EAAQhF,aAA8B4iL,EAAkB,CAAC,KAAM,WAAY,UAAW,OAAQ,UAAW,SAAU,YAAa,WAAY,cAEhJnT,EAAWT,GAAmBS,EAAU,OAExC,IAAIgU,EAAgB1yF,qBAAW2yF,IAC3BC,EAAc5yF,qBAAW6yF,IAS7B,OAPIH,GACFf,EAAiBe,EAAchU,SAC/B+T,EAAmB,MAAVA,GAAwBA,GACxBG,IACThB,EAAqBgB,EAAYhB,oBAG5Bh9K,IAAM/C,cAAcq+K,GAAa1hL,YAAS,CAC/C+hF,GAAIA,EACJrvE,IAAKA,EACL0vK,UAAWA,EACXptK,UAAWhU,KAAWgU,GAAYkuK,EAAc,GAAIA,EAAYhT,IAAa+T,EAAQf,EAAYC,EAAiB,QAAUc,EAAQf,EAAYE,EAAqB,IAAM3O,KAAa2O,EAAoBF,EAAYhT,EAAW,IAAMuE,KAAaA,EAASyO,EAAYhT,EAAW,SAAW/sJ,EAAM+/J,EAAYhT,EAAW,cAAgB8T,EAASd,KACtVz9K,GAAQgD,KAEbu6K,GAAIvwK,YAAc,MAClBuwK,GAAI3wK,aA1Ce,CACjB2xK,SAAS,EACT7gK,MAAM,GAyCR6/J,GAAIsB,KAAO3B,GACXK,GAAIpV,KAAOmV,GACIC,UCrDA,MAAAuB,GAEXxiL,cACIxB,KAAAikL,aAAA,uBACAjkL,KAAAkkL,aAAA,uBAIJrW,sBACI,aAAaL,GAASxtK,KAADikL,aAAR,QAAAt6I,KACH,SAAAp2B,GACF,OAAAA,IAIZs6J,oBAAAsW,GAEI,aAAa3W,GAASxtK,KAADkkL,aAAA,OAARC,GAAAx6I,KACH,SAAAp2B,GACF,OAAAA,GADEvU,KADVgB,QCVO,MAAMokL,WAAwBv+K,IAAM+R,UAE/CpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,kBAAmB,SAEvBltK,KAAK4K,MAAQ,CACTy5K,MAAO,GACPC,WAAW,EAEXC,WAAY,CACRp3D,IAAK,EACLumD,KAAM,GACN1F,SAAU,GACVwW,QAAQ,EACRC,SAAU,EACVC,OAAQ,CAAC,CACDv3D,IAAK,GACLumD,KAAM,GACNiR,cAAc,MAK9B3kL,KAAK4kL,aAAe,IAAIC,GAExB7kL,KAAKmtH,IAAM,EAEXntH,KAAK8W,QAAU,CACX,CAAEvO,MAAO,KAAMypB,MAAO,MACtB,CAAEzpB,MAAO,OAAQypB,MAAO,OAAQuM,OAAQ,SACxC,CAAEh2B,MAAO,WAAYypB,MAAO,WAAYuM,OAAQ,SAChD,CAAEh2B,MAAO,SAAUypB,MAAO,SAAUuM,OAAQ,QAE5C,CAAEh2B,MAAO,SAAUi3B,UAAWx/B,KAAK8kL,gBAAiB/lJ,MAAO,SAAU1E,UAAWr6B,KAAK+kL,eACrF,CAAEx8K,MAAO,SAAUi3B,UAAWx/B,KAAK8kL,gBAAiB/lJ,MAAO,SAAU1E,UAAWr6B,KAAKglL,kBAGzFhlL,KAAKilL,eAAiB,CAClB,CAAE18K,MAAO,KAAMypB,MAAO,MACtB,CAAEzpB,MAAO,OAAQypB,MAAO,QACxB,CAAEzpB,MAAO,eAAgBypB,MAAO,eAAgBuM,OAAQ,SAG5Dv+B,KAAKklL,gBAGTA,gBACIllL,KAAK4kL,aAAaO,gBACdx7I,KAAK,SAAUp2B,GACX,IAAI4wK,EAAQ5wK,EAAK8wK,MACjBrkL,KAAK0kL,OAASnxK,EAAKmxK,OACnB1kL,KAAKoX,SAAS,CAAEitK,MAAOF,KACzBnlL,KAAKgB,OAEfolL,cACIplL,KAAK4kL,aAAaS,cAAcrlL,KAAK4K,MAAMy5K,OACvC16I,KAAK,SAAUp2B,GACPA,EAAK06J,SACLqE,GAAamK,MAAMlpK,EAAKi/J,WAAY,QAEpCF,GAAaC,MAAMh/J,EAAKi/J,WAAY,QAExCxyK,KAAKklL,iBACPlmL,KAAKgB,OAIf8kL,gBAAgBx+K,EAAMC,EAAiBC,GACnC,MAAO,qDAGX8+K,aAAah/K,GACT,IAAI69K,EAAQnkL,KAAK4K,MAAMy5K,MAGnBl3D,EADM7mH,EAAKqtC,SACFlF,KAAKl7B,KAAK45G,GAEvB,IAAIo4D,EAAWpB,EAAMn1K,OAAO5M,GAAKA,EAAE+qH,KAAOA,GAAI,GAGrB,IAArBo4D,EAASd,UACTc,EAASd,QAAU,GAG3Be,oBAAoBl/K,GAGsB,IAAlCtG,KAAK4K,MAAM25K,WAAWE,UACtBzkL,KAAK4K,MAAM25K,WAAWE,QAAU,GAGxCgB,cACIzlL,KAAKklL,gBAITQ,iBACI,IAAIC,EAAW,CACXx4D,GAAIntH,KAAKmtH,GACTumD,KAAM,UAAY1zK,KAAKmtH,GACvB6gD,SAAU,SACVwW,QAAQ,EACRC,QAAS,EAETC,OAAQ1kL,KAAK0kL,OAAO56K,IAAK1H,IACd,CACH+qH,GAAI/qH,EAAE+qH,GACNumD,KAAMtxK,EAAEsxK,KACRiR,aAAyB,gBAAVviL,EAAEsxK,SAI7B1zK,KAAKmtH,KAEL,IAAIg3D,EAAQnkL,KAAK4K,MAAMy5K,MACvBF,EAAMtjL,KAAK8kL,GAEX3lL,KAAKoX,SAAS,CAAEitK,MAAOF,IAG3Ba,gBAAgB5iL,EAAGkE,GAEf,IACI6mH,EADM7mH,EAAKqtC,SACFlF,KAAKl7B,KAAK45G,GAEnBg3D,EAAQnkL,KAAK4K,MAAMy5K,MAEnBuB,EAAOzB,EAAMn1K,OAAO5M,GAAKA,EAAE+qH,KAAOA,GAAI,GAErB,IAAjBy4D,EAAKnB,QACLN,EAAMtvK,OAAOsvK,EAAMt0J,UAAUztB,GAAKA,EAAE+qH,KAAOA,GAAK,GAGhDy4D,EAAKnB,QAAU,EAGnBzkL,KAAKoX,SAAS,CAAEitK,MAAOF,IAG3BY,cAAc3iL,EAAGkE,GACb,IACI6mH,EADM7mH,EAAKqtC,SACFlF,KAAKl7B,KAAK45G,GAInBy4D,EAFQ5lL,KAAK4K,MAAMy5K,MAENr1K,OAAO5M,GAAKA,EAAE+qH,KAAOA,GAAI,GAE1CntH,KAAKoX,SAAS,CAAEktK,WAAW,EAAMC,WAAYqB,IAEjDC,gBACI7lL,KAAKoX,SAAS,CAAEktK,WAAW,IAG/Bz9K,SACI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAK0lL,gBAAtB,cACA3W,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKklL,eAAtB,mCACAnW,EAAA7sK,EAAAY,cAAA,UAAQ6iB,QAAS3lB,KAAKolL,aAAtB,eAGArW,EAAA7sK,EAAAY,cAACgjL,GAAA,eAAD,CAAgB3zK,IAAI,QAChBoB,KAAMvT,KAAK4K,MAAMy5K,MAAMr1K,OAAO5M,GAAkB,GAAbA,EAAEqiL,SACrC3tK,QAAS9W,KAAK8W,QACdgoB,UAAU,EACV7nB,OAAQ,UAERknB,WAAYn+B,KAAKslL,eAGrBvW,EAAA7sK,EAAAY,cAACq6K,GAAD,CAAOhrK,IAAI,QACPomB,KAAMv4B,KAAK4K,MAAM05K,UACjBl+F,OAAQpmF,KAAK6lL,cAEb3hL,KAAK,KACLk5K,kBAAgB,gCAChB5E,UAAQ,GAERzJ,EAAA7sK,EAAAY,cAACq6K,GAAMzB,OAAP,CAAcnwK,aAAW,GACrBwjK,EAAA7sK,EAAAY,cAACq6K,GAAMxB,MAAP,qBAA2B37K,KAAK4K,MAAM25K,WAAWp3D,GAAK,IAAMntH,KAAK4K,MAAM25K,WAAW7Q,OAEtF3E,EAAA7sK,EAAAY,cAACq6K,GAAM1B,KAAP,KACI1M,EAAA7sK,EAAAY,cAACgjL,GAAA,eAAD,CAAgB3zK,IAAI,mBAChBoB,KAAMvT,KAAK4K,MAAM25K,WAAWG,OAC5B5tK,QAAS9W,KAAKilL,eACdnmJ,UAAU,EACV7nB,OAAQ,UAERknB,WAAYn+B,KAAKwlL,uBAGzBzW,EAAA7sK,EAAAY,cAACq6K,GAAMvB,OAAP,KACI7M,EAAA7sK,EAAAY,cAAC8xK,GAAD,CAAQV,QAAQ,YAAYvuJ,QAAS3lB,KAAK6lL,eAA1C,aChMT,MAAME,WAA0BlgL,IAAM+R,UAEjDpW,YAAY0D,GACRwpK,MAAMxpK,GACNypK,KAAS3uK,MACTktK,EAAI,oBAAqB,SAEzBltK,KAAK4K,MAAQ,CAAEo7K,cAAe,GAC9BhmL,KAAK4uK,aAAe,IAAIC,GAG5BC,eACI9uK,KAAK+tF,KAAK0gF,YAAYK,eAG1BmX,eACIjmL,KAAKoX,SAAS,CAAE4uK,cAAe,IAEnCjB,gBACI/kL,KAAKoX,SAAS,CAAE4uK,cAAe,IAInCn/K,SACI,OACIkoK,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAAA,WACAisK,EAAA7sK,EAAAY,cAACo9K,GAAD,CAAa/tK,IAAI,cACbkgK,gBAAiBryK,OAErB+uK,EAAA7sK,EAAAY,cAAA,WACC9C,KAAK4uK,aAAaP,SAEfU,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAACojL,GAAD,CAAKhS,QAAQ,QACTnF,EAAA7sK,EAAAY,cAACojL,GAAInC,KAAL,KACIhV,EAAA7sK,EAAAY,cAACojL,GAAI7Y,KAAL,CAAU1nJ,QAAS3lB,KAAKimL,cAAxB,UAEJlX,EAAA7sK,EAAAY,cAACojL,GAAInC,KAAL,KACIhV,EAAA7sK,EAAAY,cAACojL,GAAI7Y,KAAL,CAAU1nJ,QAAS3lB,KAAK+kL,eAAxB,aAIqB,GAA5B/kL,KAAK4K,MAAMo7K,cAERjX,EAAA7sK,EAAAY,cAAA,WACIisK,EAAA7sK,EAAAY,cAACqjL,GAAD,CAAiBh0K,IAAI,qBAGzB48J,EAAA7sK,EAAAY,cAAA,4BAKNisK,EAAA7sK,EAAAY,cAAA,iCCjCtB4S,IAAS7O,OACLkoK,EAAA7sK,EAAAY,cAxBW,cAA0B+C,IAAM+R,UAE3CpW,YAAY0D,GACRwpK,MAAMxpK,GACNgoK,EAAI,cAAe,SAIvBrmK,SACI,OACIkoK,EAAA7sK,EAAAY,cAACsjL,EAAD,KACIrX,EAAA7sK,EAAAY,cAACujL,EAAD,KACItX,EAAA7sK,EAAAY,cAACwjL,EAAD,CAAOn0K,IAAI,cAAck2G,OAAK,EAAClhG,KAAK,IAAI2tB,UAAWgrI,KACnD/Q,EAAA7sK,EAAAY,cAACwjL,EAAD,CAAOn0K,IAAI,cAAck2G,OAAK,EAAClhG,KAAK,OAAO2tB,UAAWgrI,KACtD/Q,EAAA7sK,EAAAY,cAACwjL,EAAD,CAAOn0K,IAAI,cAAck2G,OAAK,EAAClhG,KAAK,cAAc2tB,UAAWgrI,KAC7D/Q,EAAA7sK,EAAAY,cAACwjL,EAAD,CAAOn0K,IAAI,cAAcgV,KAAK,WAAW2tB,UAAWgrI,KACpD/Q,EAAA7sK,EAAAY,cAACwjL,EAAD,CAAOn0K,IAAI,cAAcgV,KAAK,SAAS2tB,UAAWixI,SAQlE,MACAljL,SAASW,eAAe,QCjC5B3B","file":"app_bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/build\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 87);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","module.exports = require('./lib/autoBind');\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = qsa;\n// Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n var maybeID = selector[0] === '#',\n maybeClass = selector[0] === '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n isSimple = simpleSelectorRE.test(nameOnly),\n found;\n\n if (isSimple) {\n if (maybeID) {\n element = element.getElementById ? element : document;\n return (found = element.getElementById(nameOnly)) ? [found] : [];\n }\n\n if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n return toArray(element.getElementsByTagName(selector));\n }\n\n return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexports.clone = clone;\nfunction isSameArray(a, b) {\n var i = a.length;\n if (i !== b.length) {\n return false;\n }\n while (i--) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexports.isSameArray = isSameArray;\nfunction reactFormatter(JSX) {\n return function customFormatter(cell, formatterParams, onRendered) {\n //cell - the cell component\n //formatterParams - parameters set for the column\n //onRendered - function to call when the formatter has been rendered\n onRendered(function () {\n var cellEl = cell.getElement();\n var CompWithMoreProps = React.cloneElement(JSX, { cell: cell });\n react_dom_1.render(CompWithMoreProps, cellEl.querySelector('.formatterCell'));\n });\n return '<div class=\"formatterCell\"></div>';\n };\n}\nexports.reactFormatter = reactFormatter;\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","\"use strict\";\nexports.__esModule = true;\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar React15Tabulator_1 = require(\"./React15Tabulator\");\nvar ReactTabulatorExample_1 = require(\"./ReactTabulatorExample\");\nvar Utils_1 = require(\"./Utils\");\nmodule.exports = {\n ReactTabulator: ReactTabulator_1[\"default\"],\n React15Tabulator: React15Tabulator_1[\"default\"],\n ReactTabulatorExample: ReactTabulatorExample_1[\"default\"],\n reactFormatter: Utils_1.reactFormatter\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(require(\"./listen\"));\n\nexports.listen = _listen.default;\nvar _default = {\n on: _on.default,\n off: _off.default,\n filter: _filter.default,\n listen: _listen.default\n};\nexports.default = _default;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction forwardRef(renderFn, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n propTypes = _ref.propTypes,\n defaultProps = _ref.defaultProps,\n _ref$allowFallback = _ref.allowFallback,\n allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n var render = function render(props, ref) {\n return renderFn(props, ref);\n };\n\n return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n return render(props, null);\n }, {\n displayName: displayName,\n propTypes: propTypes,\n defaultProps: defaultProps\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(require(\"dom-helpers/class\"));\n\nvar _style = _interopRequireDefault(require(\"dom-helpers/style\"));\n\nvar _scrollbarSize = _interopRequireDefault(require(\"dom-helpers/util/scrollbarSize\"));\n\nvar _isOverflowing = _interopRequireDefault(require(\"./utils/isOverflowing\"));\n\nvar _manageAriaHidden = require(\"./utils/manageAriaHidden\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = (0, _scrollbarSize.default)();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden' // we are only interested in the actual `style` here\n // becasue we will override it\n\n };\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n }\n\n (0, _style.default)(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var style = containerState.style;\n Object.keys(style).forEach(function (key) {\n container.style[key] = style[key];\n });\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.hideSiblings)(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: (0, _isOverflowing.default)(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class.default.addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.showSiblings)(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n (0, _manageAriaHidden.ariaHidden)(false, dialog);\n (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { // props.options are passed to Tabulator's options.\n data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // React 16.5.x - \"getDerivedStateFromProps\" replaces both \"componentWillMount\" & \"componentWillReceiveProps\"\n // This function will be ignored when running with React 15.6.x\n default_1.getDerivedStateFromProps = function (props, state) {\n // console.log('- getDerivedStateFromProps', props, state);\n var noData = !props.data || props.data.length === 0;\n if (!state && noData) {\n // first time (similar to: componentWillMount)\n return null;\n }\n if (state && state.data.length === 0 && props.data.length === 0) {\n return null;\n }\n if (state && props.data) {\n // this triggers componentDidUpdate\n if (!Utils_1.isSameArray(state.data, props.data)) {\n return __assign({}, state, { data: props.data });\n }\n }\n return {};\n };\n // componentDidUpdate(prevProps, prevState)\n default_1.prototype.componentDidUpdate = function () {\n this.table.setData(this.state.data);\n };\n default_1.prototype.render = function () {\n var _this = this;\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.pickSVGProps = exports.pickHTMLProps = undefined;\n\n\tvar _pickHtmlProps = __webpack_require__(1);\n\n\tvar _pickHtmlProps2 = _interopRequireDefault(_pickHtmlProps);\n\n\tvar _pickSvgProps = __webpack_require__(5);\n\n\tvar _pickSvgProps2 = _interopRequireDefault(_pickSvgProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.pickHTMLProps = _pickHtmlProps2.default;\n\texports.pickSVGProps = _pickSvgProps2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _htmlAttributes = __webpack_require__(2);\n\n\tvar _htmlAttributes2 = _interopRequireDefault(_htmlAttributes);\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar extra = ['about', 'datatype', 'defaultChecked', 'defaultValue', 'inlist', 'prefix', 'property', 'resource', 'typeof', 'vocab', 'autoCapitalize', 'autoCorrect', 'color', 'itemProp', 'itemScope', 'itemType', 'itemRef', 'itemID', 'security', 'unselectable', 'results', 'autoSave', 'allowtransparency', 'charSet', 'ismap', 'typemustmatch',\n\n\t// handlers:\n\t'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onFocus', 'onInput', 'onKeyDown', 'onKeyPress', 'onKeyUp', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'onScroll', 'onSubmit', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onWheel', 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate', 'onInvalid', 'onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut', 'onSelect', 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting', 'onLoad', 'onError', 'onAnimationStart', 'onAnimationEnd', 'onAnimationIteration', 'onTransitionEnd', 'onToggle'];\n\n\tvar ReactHTMLAttrs = _extends({}, _htmlAttributes2.default, extra.reduce(function (attrs, prop) {\n\t attrs[prop] = prop;\n\t return attrs;\n\t}, {}));\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(ReactHTMLAttrs[prop]) || /^(data|aria)-/.test(prop);\n\t});\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * html-attributes\n\t * https://github.com/alexmingoia/html-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module html-attributes\n\t */\n\n\tmodule.exports = {\n\t \"abbr\": \"abbr\",\n\t \"accept\": \"accept\",\n\t \"acceptCharset\": \"accept-charset\",\n\t \"accessKey\": \"accesskey\",\n\t \"action\": \"action\",\n\t \"allowFullScreen\": \"allowfullscreen\",\n\t \"allowTransparency\": \"allowtransparency\",\n\t \"alt\": \"alt\",\n\t \"async\": \"async\",\n\t \"autoComplete\": \"autocomplete\",\n\t \"autoFocus\": \"autofocus\",\n\t \"autoPlay\": \"autoplay\",\n\t \"cellPadding\": \"cellpadding\",\n\t \"cellSpacing\": \"cellspacing\",\n\t \"challenge\": \"challenge\",\n\t \"charset\": \"charset\",\n\t \"checked\": \"checked\",\n\t \"cite\": \"cite\",\n\t \"class\": \"class\",\n\t \"className\": \"class\",\n\t \"cols\": \"cols\",\n\t \"colSpan\": \"colspan\",\n\t \"command\": \"command\",\n\t \"content\": \"content\",\n\t \"contentEditable\": \"contenteditable\",\n\t \"contextMenu\": \"contextmenu\",\n\t \"controls\": \"controls\",\n\t \"coords\": \"coords\",\n\t \"crossOrigin\": \"crossorigin\",\n\t \"data\": \"data\",\n\t \"dateTime\": \"datetime\",\n\t \"default\": \"default\",\n\t \"defer\": \"defer\",\n\t \"dir\": \"dir\",\n\t \"disabled\": \"disabled\",\n\t \"download\": \"download\",\n\t \"draggable\": \"draggable\",\n\t \"dropzone\": \"dropzone\",\n\t \"encType\": \"enctype\",\n\t \"for\": \"for\",\n\t \"form\": \"form\",\n\t \"formAction\": \"formaction\",\n\t \"formEncType\": \"formenctype\",\n\t \"formMethod\": \"formmethod\",\n\t \"formNoValidate\": \"formnovalidate\",\n\t \"formTarget\": \"formtarget\",\n\t \"frameBorder\": \"frameBorder\",\n\t \"headers\": \"headers\",\n\t \"height\": \"height\",\n\t \"hidden\": \"hidden\",\n\t \"high\": \"high\",\n\t \"href\": \"href\",\n\t \"hrefLang\": \"hreflang\",\n\t \"htmlFor\": \"for\",\n\t \"httpEquiv\": \"http-equiv\",\n\t \"icon\": \"icon\",\n\t \"id\": \"id\",\n\t \"inputMode\": \"inputmode\",\n\t \"isMap\": \"ismap\",\n\t \"itemId\": \"itemid\",\n\t \"itemProp\": \"itemprop\",\n\t \"itemRef\": \"itemref\",\n\t \"itemScope\": \"itemscope\",\n\t \"itemType\": \"itemtype\",\n\t \"kind\": \"kind\",\n\t \"label\": \"label\",\n\t \"lang\": \"lang\",\n\t \"list\": \"list\",\n\t \"loop\": \"loop\",\n\t \"manifest\": \"manifest\",\n\t \"max\": \"max\",\n\t \"maxLength\": \"maxlength\",\n\t \"media\": \"media\",\n\t \"mediaGroup\": \"mediagroup\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"minLength\": \"minlength\",\n\t \"multiple\": \"multiple\",\n\t \"muted\": \"muted\",\n\t \"name\": \"name\",\n\t \"noValidate\": \"novalidate\",\n\t \"open\": \"open\",\n\t \"optimum\": \"optimum\",\n\t \"pattern\": \"pattern\",\n\t \"ping\": \"ping\",\n\t \"placeholder\": \"placeholder\",\n\t \"poster\": \"poster\",\n\t \"preload\": \"preload\",\n\t \"radioGroup\": \"radiogroup\",\n\t \"readOnly\": \"readonly\",\n\t \"rel\": \"rel\",\n\t \"required\": \"required\",\n\t \"role\": \"role\",\n\t \"rows\": \"rows\",\n\t \"rowSpan\": \"rowspan\",\n\t \"sandbox\": \"sandbox\",\n\t \"scope\": \"scope\",\n\t \"scoped\": \"scoped\",\n\t \"scrolling\": \"scrolling\",\n\t \"seamless\": \"seamless\",\n\t \"selected\": \"selected\",\n\t \"shape\": \"shape\",\n\t \"size\": \"size\",\n\t \"sizes\": \"sizes\",\n\t \"sortable\": \"sortable\",\n\t \"span\": \"span\",\n\t \"spellCheck\": \"spellcheck\",\n\t \"src\": \"src\",\n\t \"srcDoc\": \"srcdoc\",\n\t \"srcSet\": \"srcset\",\n\t \"start\": \"start\",\n\t \"step\": \"step\",\n\t \"style\": \"style\",\n\t \"tabIndex\": \"tabindex\",\n\t \"target\": \"target\",\n\t \"title\": \"title\",\n\t \"translate\": \"translate\",\n\t \"type\": \"type\",\n\t \"typeMustMatch\": \"typemustmatch\",\n\t \"useMap\": \"usemap\",\n\t \"value\": \"value\",\n\t \"width\": \"width\",\n\t \"wmode\": \"wmode\",\n\t \"wrap\": \"wrap\"\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _lodash = __webpack_require__(4);\n\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = function (filter) {\n\t return function (props) {\n\t if (!(0, _lodash2.default)(props)) throw new Error('props should be a plain object');\n\t var out = {};\n\t for (var key in props) {\n\t if (props.hasOwnProperty(key) && filter(key)) {\n\t out[key] = props[key];\n\t }\n\t }\n\t return out;\n\t };\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\n\t/** `Object#toString` result references. */\n\tvar objectTag = '[object Object]';\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/** Used to infer the `Object` constructor. */\n\tvar objectCtorString = funcToString.call(Object);\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Built-in value references. */\n\tvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.8.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\tfunction isPlainObject(value) {\n\t if (!isObjectLike(value) ||\n\t objectToString.call(value) != objectTag || isHostObject(value)) {\n\t return false;\n\t }\n\t var proto = getPrototype(value);\n\t if (proto === null) {\n\t return true;\n\t }\n\t var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n\t return (typeof Ctor == 'function' &&\n\t Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n\t}\n\n\tmodule.exports = isPlainObject;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tvar _svgAttributes = __webpack_require__(6);\n\n\tvar _svgAttributes2 = _interopRequireDefault(_svgAttributes);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(_svgAttributes2.default[prop]);\n\t});\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * svg-attributes\n\t * https://github.com/alexmingoia/svg-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module svg-attributes\n\t */\n\n\tmodule.exports = {\n\t /**\n\t * Regular attributes\n\t */\n\t \"accentHeight\": \"accent-height\",\n\t \"accumulate\": \"accumulate\",\n\t \"additive\": \"additive\",\n\t \"alphabetic\": \"alphabetic\",\n\t \"amplitude\": \"amplitude\",\n\t \"arabicForm\": \"arabic-form\",\n\t \"ascent\": \"ascent\",\n\t \"attributeName\": \"attributeName\",\n\t \"attributeType\": \"attributeType\",\n\t \"azimuth\": \"azimuth\",\n\t \"baseFrequency\": \"baseFrequency\",\n\t \"baseProfile\": \"baseProfile\",\n\t \"bbox\": \"bbox\",\n\t \"begin\": \"begin\",\n\t \"bias\": \"bias\",\n\t \"by\": \"by\",\n\t \"calcMode\": \"calcMode\",\n\t \"capHeight\": \"cap-height\",\n\t \"class\": \"class\",\n\t \"clipPathUnits\": \"clipPathUnits\",\n\t \"contentScriptType\": \"contentScriptType\",\n\t \"contentStyleType\": \"contentStyleType\",\n\t \"cx\": \"cx\",\n\t \"cy\": \"cy\",\n\t \"d\": \"d\",\n\t \"descent\": \"descent\",\n\t \"diffuseConstant\": \"diffuseConstant\",\n\t \"divisor\": \"divisor\",\n\t \"dur\": \"dur\",\n\t \"dx\": \"dx\",\n\t \"dy\": \"dy\",\n\t \"edgeMode\": \"edgeMode\",\n\t \"elevation\": \"elevation\",\n\t \"end\": \"end\",\n\t \"exponent\": \"exponent\",\n\t \"externalResourcesRequired\": \"externalResourcesRequired\",\n\t \"fill\": \"fill\",\n\t \"filterRes\": \"filterRes\",\n\t \"filterUnits\": \"filterUnits\",\n\t \"fontFamily\": \"font-family\",\n\t \"fontSize\": \"font-size\",\n\t \"fontStretch\": \"font-stretch\",\n\t \"fontStyle\": \"font-style\",\n\t \"format\": \"format\",\n\t \"from\": \"from\",\n\t \"fx\": \"fx\",\n\t \"fy\": \"fy\",\n\t \"g1\": \"g1\",\n\t \"g2\": \"g2\",\n\t \"glyphame\": \"glyph-name\",\n\t \"glyphRef\": \"glyphRef\",\n\t \"gradientTransform\": \"gradientTransform\",\n\t \"gradientUnits\": \"gradientUnits\",\n\t \"hanging\": \"hanging\",\n\t \"height\": \"height\",\n\t \"horizAdvX\": \"horiz-adv-x\",\n\t \"horizOriginX\": \"horiz-origin-x\",\n\t \"horizOriginY\": \"horiz-origin-y\",\n\t \"id\": \"id\",\n\t \"ideographic\": \"ideographic\",\n\t \"in\": \"in\",\n\t \"in2\": \"in2\",\n\t \"intercept\": \"intercept\",\n\t \"k\": \"k\",\n\t \"k1\": \"k1\",\n\t \"k2\": \"k2\",\n\t \"k3\": \"k3\",\n\t \"k4\": \"k4\",\n\t \"kernelMatrix\": \"kernelMatrix\",\n\t \"kernelUnitLength\": \"kernelUnitLength\",\n\t \"keyPoints\": \"keyPoints\",\n\t \"keySplines\": \"keySplines\",\n\t \"keyTimes\": \"keyTimes\",\n\t \"lang\": \"lang\",\n\t \"lengthAdjust\": \"lengthAdjust\",\n\t \"limitingConeAngle\": \"limitingConeAngle\",\n\t \"local\": \"local\",\n\t \"markerHeight\": \"markerHeight\",\n\t \"markerUnits\": \"markerUnits\",\n\t \"markerWidth\": \"markerWidth\",\n\t \"maskContentUnits\": \"maskContentUnits\",\n\t \"maskUnits\": \"maskUnits\",\n\t \"mathematical\": \"mathematical\",\n\t \"max\": \"max\",\n\t \"media\": \"media\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"mode\": \"mode\",\n\t \"name\": \"name\",\n\t \"numOctaves\": \"numOctaves\",\n\t \"offset\": \"offset\",\n\t \"onAbort\": \"onabort\",\n\t \"onActivate\": \"onactivate\",\n\t \"onBegin\": \"onbegin\",\n\t \"onClick\": \"onclick\",\n\t \"onEnd\": \"onend\",\n\t \"onError\": \"onerror\",\n\t \"onFocusIn\": \"onfocusin\",\n\t \"onFocusOut\": \"onfocusout\",\n\t \"onLoad\": \"onload\",\n\t \"onMouseDown\": \"onmousedown\",\n\t \"onMouseMove\": \"onmousemove\",\n\t \"onMouseOut\": \"onmouseout\",\n\t \"onMouseOver\": \"onmouseover\",\n\t \"onMouseUp\": \"onmouseup\",\n\t \"onRepeat\": \"onrepeat\",\n\t \"onResize\": \"onresize\",\n\t \"onScroll\": \"onscroll\",\n\t \"onUnload\": \"onunload\",\n\t \"onZoom\": \"onzoom\",\n\t \"operator\": \"operator\",\n\t \"order\": \"order\",\n\t \"orient\": \"orient\",\n\t \"orientation\": \"orientation\",\n\t \"origin\": \"origin\",\n\t \"overlinePosition\": \"overline-position\",\n\t \"overlineThickness\": \"overline-thickness\",\n\t \"panose1\": \"panose-1\",\n\t \"path\": \"path\",\n\t \"pathLength\": \"pathLength\",\n\t \"patternContentUnits\": \"patternContentUnits\",\n\t \"patternTransform\": \"patternTransform\",\n\t \"patternUnits\": \"patternUnits\",\n\t \"points\": \"points\",\n\t \"pointsAtX\": \"pointsAtX\",\n\t \"pointsAtY\": \"pointsAtY\",\n\t \"pointsAtZ\": \"pointsAtZ\",\n\t \"preserveAlpha\": \"preserveAlpha\",\n\t \"preserveAspectRatio\": \"preserveAspectRatio\",\n\t \"primitiveUnits\": \"primitiveUnits\",\n\t \"r\": \"r\",\n\t \"radius\": \"radius\",\n\t \"refX\": \"refX\",\n\t \"refY\": \"refY\",\n\t \"renderingIntent\": \"rendering-intent\",\n\t \"repeatCount\": \"repeatCount\",\n\t \"repeatDur\": \"repeatDur\",\n\t \"requiredExtensions\": \"requiredExtensions\",\n\t \"requiredFeatures\": \"requiredFeatures\",\n\t \"restart\": \"restart\",\n\t \"result\": \"result\",\n\t \"rotate\": \"rotate\",\n\t \"rx\": \"rx\",\n\t \"ry\": \"ry\",\n\t \"scale\": \"scale\",\n\t \"seed\": \"seed\",\n\t \"slope\": \"slope\",\n\t \"spacing\": \"spacing\",\n\t \"specularConstant\": \"specularConstant\",\n\t \"specularExponent\": \"specularExponent\",\n\t \"spreadMethod\": \"spreadMethod\",\n\t \"startOffset\": \"startOffset\",\n\t \"stdDeviation\": \"stdDeviation\",\n\t \"stemh\": \"stemh\",\n\t \"stemv\": \"stemv\",\n\t \"stitchTiles\": \"stitchTiles\",\n\t \"strikethroughPosition\": \"strikethrough-position\",\n\t \"strikethroughThickness\": \"strikethrough-thickness\",\n\t \"string\": \"string\",\n\t \"style\": \"style\",\n\t \"surfaceScale\": \"surfaceScale\",\n\t \"systemLanguage\": \"systemLanguage\",\n\t \"tableValues\": \"tableValues\",\n\t \"target\": \"target\",\n\t \"targetX\": \"targetX\",\n\t \"targetY\": \"targetY\",\n\t \"textLength\": \"textLength\",\n\t \"title\": \"title\",\n\t \"to\": \"to\",\n\t \"transform\": \"transform\",\n\t \"type\": \"type\",\n\t \"u1\": \"u1\",\n\t \"u2\": \"u2\",\n\t \"underlinePosition\": \"underline-position\",\n\t \"underlineThickness\": \"underline-thickness\",\n\t \"unicode\": \"unicode\",\n\t \"unicodeRange\": \"unicode-range\",\n\t \"unitsPerEm\": \"units-per-em\",\n\t \"vAlphabetic\": \"v-alphabetic\",\n\t \"vHanging\": \"v-hanging\",\n\t \"vIdeographic\": \"v-ideographic\",\n\t \"vMathematical\": \"v-mathematical\",\n\t \"values\": \"values\",\n\t \"version\": \"version\",\n\t \"vertAdvY\": \"vert-adv-y\",\n\t \"vertOriginX\": \"vert-origin-x\",\n\t \"vertOriginY\": \"vert-origin-y\",\n\t \"viewBox\": \"viewBox\",\n\t \"viewTarget\": \"viewTarget\",\n\t \"width\": \"width\",\n\t \"widths\": \"widths\",\n\t \"x\": \"x\",\n\t \"xHeight\": \"x-height\",\n\t \"x1\": \"x1\",\n\t \"x2\": \"x2\",\n\t \"xChannelSelector\": \"xChannelSelector\",\n\t \"xlink\": \"xlink\",\n\t \"xml\": \"xml\",\n\t \"y\": \"y\",\n\t \"y1\": \"y1\",\n\t \"y2\": \"y2\",\n\t \"yChannelSelector\": \"yChannelSelector\",\n\t \"z\": \"z\",\n\t \"zoomAndPan\": \"zoomAndPan\",\n\t /**\n\t * Presentation attributes\n\t */\n\t \"alignmentBaseline\": \"alignment-baseline\",\n\t \"baselineShift\": \"baseline-shift\",\n\t \"clipPath\": \"clip-path\",\n\t \"clipRule\": \"clip-rule\",\n\t \"clip\": \"clip\",\n\t \"colorInterpolationFilters\": \"color-interpolation-filters\",\n\t \"colorInterpolation\": \"color-interpolation\",\n\t \"colorProfile\": \"color-profile\",\n\t \"colorRendering\": \"color-rendering\",\n\t \"color\": \"color\",\n\t \"cursor\": \"cursor\",\n\t \"direction\": \"direction\",\n\t \"display\": \"display\",\n\t \"dominantBaseline\": \"dominant-baseline\",\n\t \"enableBackground\": \"enable-background\",\n\t \"fillOpacity\": \"fill-opacity\",\n\t \"fillRule\": \"fill-rule\",\n\t \"filter\": \"filter\",\n\t \"floodColor\": \"flood-color\",\n\t \"floodOpacity\": \"flood-opacity\",\n\t \"fontSizeAdjust\": \"font-size-adjust\",\n\t \"fontVariant\": \"font-variant\",\n\t \"fontWeight\": \"font-weight\",\n\t \"glyphOrientationHorizontal\": \"glyph-orientation-horizontal\",\n\t \"glyphOrientationVertical\": \"glyph-orientation-vertical\",\n\t \"imageRendering\": \"image-rendering\",\n\t \"kerning\": \"kerning\",\n\t \"letterSpacing\": \"letter-spacing\",\n\t \"lightingColor\": \"lighting-color\",\n\t \"markerEnd\": \"marker-end\",\n\t \"markerMid\": \"marker-mid\",\n\t \"markerStart\": \"marker-start\",\n\t \"mask\": \"mask\",\n\t \"opacity\": \"opacity\",\n\t \"overflow\": \"overflow\",\n\t \"pointerEvents\": \"pointer-events\",\n\t \"shapeRendering\": \"shape-rendering\",\n\t \"stopColor\": \"stop-color\",\n\t \"stopOpacity\": \"stop-opacity\",\n\t \"strokeDasharray\": \"stroke-dasharray\",\n\t \"strokeDashoffset\": \"stroke-dashoffset\",\n\t \"strokeLinecap\": \"stroke-linecap\",\n\t \"strokeLinejoin\": \"stroke-linejoin\",\n\t \"strokeMiterlimit\": \"stroke-miterlimit\",\n\t \"strokeOpacity\": \"stroke-opacity\",\n\t \"strokeWidth\": \"stroke-width\",\n\t \"stroke\": \"stroke\",\n\t \"textAnchor\": \"text-anchor\",\n\t \"textDecoration\": \"text-decoration\",\n\t \"textRendering\": \"text-rendering\",\n\t \"unicodeBidi\": \"unicode-bidi\",\n\t \"visibility\": \"visibility\",\n\t \"wordSpacing\": \"word-spacing\",\n\t \"writingMode\": \"writing-mode\"\n\t};\n\n\n/***/ }\n/******/ ]);","\"use strict\";\nexports.__esModule = true;\nvar server_1 = require(\"react-dom/server\");\n// .prettierignore (to keep relevant props together)\nvar NOOPS = function () { };\n// get callbacks from props (default: NOOP) to set them to Tabulator options later.\nexports.propsToOptions = function (props) {\n var output = {};\n var defaultOptions = ['height', 'layout', 'layoutColumnsOnNewData', 'columnMinWidth', 'columnVertAlign',\n 'resizableColumns', 'resizableRows', 'autoResize', 'tooltips', 'tooltipsHeader', 'tooltipGenerationMode',\n 'initialSort', 'initialFilter', 'footerElement', 'index', 'keybindings', 'clipboard', 'clipboardCopyStyled',\n 'clipboardCopySelector', 'clipboardCopyFormatter', 'clipboardCopyHeader', 'clipboardPasteParser',\n 'clipboardPasteAction', 'rowFormatter', 'placeholder'];\n for (var _i = 0, defaultOptions_1 = defaultOptions; _i < defaultOptions_1.length; _i++) {\n var opt = defaultOptions_1[_i];\n if (typeof props[opt] !== 'undefined') {\n output[opt] = props[opt];\n }\n }\n var callbackNames = ['tableBuilt', 'rowClick', 'rowDblClick', 'rowContext', 'rowTap', 'rowDblTap', 'rowTapHold',\n 'rowAdded', 'rowDeleted', 'rowMoved', 'rowUpdated', 'rowSelectionChanged', 'rowSelected', 'rowDeselected', 'rowResized',\n 'cellClick', 'cellDblClick', 'cellContext', 'cellTap', 'cellDblTap', 'cellTapHold', 'cellEditing', 'cellEdited', 'cellEditCancelled',\n 'columnMoved', 'columnResized', 'columnTitleChanged', 'columnVisibilityChanged',\n 'headerClick', 'headerDblClick', 'headerContext', 'headerTap', 'headerDblTap', 'headerTapHold',\n 'htmlImporting', 'htmlImported', 'dataLoading', 'dataLoaded', 'dataEdited',\n 'ajaxRequesting', 'ajaxResponse', 'ajaxError', 'dataFiltering', 'dataFiltered', 'dataSorting', 'dataSorted',\n 'renderStarted', 'renderComplete', 'pageLoaded', 'localized', 'dataGrouping', 'dataGrouped',\n 'groupVisibilityChanged', 'groupClick', 'groupDblClick', 'groupContext', 'groupTap', 'groupDblTap', 'groupTapHold',\n 'movableRowsSendingStart', 'movableRowsSent', 'movableRowsSentFailed', 'movableRowsSendingStop', 'movableRowsReceivingStart', 'movableRowsReceived', 'movableRowsReceivedFailed', 'movableRowsReceivingStop',\n 'validationFailed', 'clipboardCopied', 'clipboardPasted', 'clipboardPasteError',\n 'downloadDataFormatter', 'downloadReady', 'downloadComplete'];\n for (var _a = 0, callbackNames_1 = callbackNames; _a < callbackNames_1.length; _a++) {\n var callbackName = callbackNames_1[_a];\n output[callbackName] = props[callbackName] || NOOPS;\n }\n if (typeof props['footerElement'] === 'object') {\n // convert from JSX to HTML string (tabulator's footerElement accepts string)\n output['footerElement'] = server_1.renderToString(props['footerElement']);\n }\n return output;\n};\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* Tabulator v4.3.0 (c) Oliver Folkerd */\n\n;(function (global, factory) {\n\tif ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {\n\t\tmodule.exports = factory();\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else {\n\t\tglobal.Tabulator = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\n\n\tif (!Array.prototype.findIndex) {\n\n\t\tObject.defineProperty(Array.prototype, 'findIndex', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return k.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn k;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return -1.\n\n\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t});\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\n\n\tif (!Array.prototype.find) {\n\n\t\tObject.defineProperty(Array.prototype, 'find', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return kValue.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn kValue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return undefined.\n\n\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t});\n\t}\n\n\tvar ColumnManager = function ColumnManager(table) {\n\n\t\tthis.table = table; //hold parent table\n\n\n\t\tthis.blockHozScrollEvent = false;\n\n\t\tthis.headersElement = this.createHeadersElement();\n\n\t\tthis.element = this.createHeaderElement(); //containing element\n\n\n\t\tthis.rowManager = null; //hold row manager object\n\n\n\t\tthis.columns = []; // column definition object\n\n\n\t\tthis.columnsByIndex = []; //columns by index\n\n\n\t\tthis.columnsByField = {}; //columns by field\n\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\n\t};\n\n\t////////////// Setup Functions /////////////////\n\n\n\tColumnManager.prototype.createHeadersElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-headers\");\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.createHeaderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-header\");\n\n\t\tif (!this.table.options.headerVisible) {\n\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\t//scroll body along with header\n\n\n\t\t// self.element.addEventListener(\"scroll\", function(e){\n\n\n\t\t// \tif(!self.blockHozScrollEvent){\n\n\n\t\t// \t\tself.table.rowManager.scrollHorizontal(self.element.scrollLeft);\n\n\n\t\t// \t}\n\n\n\t\t// });\n\n\t};\n\n\t//link to row manager\n\n\n\tColumnManager.prototype.setRowManager = function (manager) {\n\n\t\tthis.rowManager = manager;\n\t};\n\n\t//return containing element\n\n\n\tColumnManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return header containing element\n\n\n\tColumnManager.prototype.getHeadersElement = function () {\n\n\t\treturn this.headersElement;\n\t};\n\n\t// ColumnManager.prototype.tempScrollBlock = function(){\n\n\n\t// \tclearTimeout(this.blockHozScrollEvent);\n\n\n\t// \tthis.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);\n\n\n\t// }\n\n\n\t//scroll horizontally to match table body\n\n\n\tColumnManager.prototype.scrollHorizontal = function (left) {\n\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\n\n\t\t// this.tempScrollBlock();\n\n\n\t\tthis.element.scrollLeft = left;\n\n\t\t//adjust for vertical scrollbar moving table when present\n\n\n\t\tif (left > scrollWidth) {\n\n\t\t\thozAdjust = left - scrollWidth;\n\n\t\t\tthis.element.style.marginLeft = -hozAdjust + \"px\";\n\t\t} else {\n\n\t\t\tthis.element.style.marginLeft = 0;\n\t\t}\n\n\t\t//keep frozen columns fixed in position\n\n\n\t\t//this._calcFrozenColumnsPos(hozAdjust + 3);\n\n\n\t\tthis.scrollLeft = left;\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.scrollHorizontal();\n\t\t}\n\t};\n\n\t///////////// Column Setup Functions /////////////\n\n\n\tColumnManager.prototype.generateColumnsFromRowData = function (data) {\n\n\t\tvar cols = [],\n\t\t row,\n\t\t sorter;\n\n\t\tif (data && data.length) {\n\n\t\t\trow = data[0];\n\n\t\t\tfor (var key in row) {\n\n\t\t\t\tvar col = {\n\n\t\t\t\t\tfield: key,\n\n\t\t\t\t\ttitle: key\n\n\t\t\t\t};\n\n\t\t\t\tvar value = row[key];\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\n\t\t\t\t\tcase \"undefined\":\n\n\t\t\t\t\t\tsorter = \"string\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\t\tsorter = \"boolean\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"object\":\n\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tcol.sorter = sorter;\n\n\t\t\t\tcols.push(col);\n\t\t\t}\n\n\t\t\tthis.table.options.columns = cols;\n\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t};\n\n\tColumnManager.prototype.setColumns = function (cols, row) {\n\n\t\tvar self = this;\n\n\t\twhile (self.headersElement.firstChild) {\n\t\t\tself.headersElement.removeChild(self.headersElement.firstChild);\n\t\t}self.columns = [];\n\n\t\tself.columnsByIndex = [];\n\n\t\tself.columnsByField = {};\n\n\t\t//reset frozen columns\n\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.reset();\n\t\t}\n\n\t\tcols.forEach(function (def, i) {\n\n\t\t\tself._addColumn(def);\n\t\t});\n\n\t\tself._reIndexColumns();\n\n\t\tif (self.table.options.responsiveLayout && self.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tself.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tself.redraw(true);\n\t};\n\n\tColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = new Column(definition, this),\n\t\t colEl = column.getElement(),\n\t\t index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\n\t\tif (nextToColumn && index > -1) {\n\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\n\n\t\t\tvar nextEl = nextToColumn.getElement();\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.unshift(column);\n\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.push(column);\n\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\n\t\treturn column;\n\t};\n\n\tColumnManager.prototype.registerColumnField = function (col) {\n\n\t\tif (col.definition.field) {\n\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t};\n\n\tColumnManager.prototype.registerColumnPosition = function (col) {\n\n\t\tthis.columnsByIndex.push(col);\n\t};\n\n\tColumnManager.prototype._reIndexColumns = function () {\n\n\t\tthis.columnsByIndex = [];\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t};\n\n\t//ensure column headers take up the correct amount of space in column groups\n\n\n\tColumnManager.prototype._verticalAlignHeaders = function () {\n\n\t\tvar self = this,\n\t\t minHeight = 0;\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tvar height;\n\n\t\t\tcolumn.clearVerticalAlign();\n\n\t\t\theight = column.getHeight();\n\n\t\t\tif (height > minHeight) {\n\n\t\t\t\tminHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(self.table.options.columnVertAlign, minHeight);\n\t\t});\n\n\t\tself.rowManager.adjustTableSize();\n\t};\n\n\t//////////////// Column Details /////////////////\n\n\n\tColumnManager.prototype.findColumn = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Column) {\n\n\t\t\t\t//subject is column element\n\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof ColumnComponent) {\n\n\t\t\t\t//subject is public column component\n\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the column header\n\n\n\t\t\t\tvar match = self.columns.find(function (column) {\n\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//subject should be treated as the field name of the column\n\n\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tColumnManager.prototype.getColumnByField = function (field) {\n\n\t\treturn this.columnsByField[field];\n\t};\n\n\tColumnManager.prototype.getColumnByIndex = function (index) {\n\n\t\treturn this.columnsByIndex[index];\n\t};\n\n\tColumnManager.prototype.getFirstVisibileColumn = function (index) {\n\n\t\tvar index = this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn col.visible;\n\t\t});\n\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t};\n\n\tColumnManager.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\tColumnManager.prototype.findColumnIndex = function (column) {\n\n\t\treturn this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn column === col;\n\t\t});\n\t};\n\n\t//return all columns that are not groups\n\n\n\tColumnManager.prototype.getRealColumns = function () {\n\n\t\treturn this.columnsByIndex;\n\t};\n\n\t//travers across columns and call action\n\n\n\tColumnManager.prototype.traverse = function (callback) {\n\n\t\tvar self = this;\n\n\t\tself.columnsByIndex.forEach(function (column, i) {\n\n\t\t\tcallback(column, i);\n\t\t});\n\t};\n\n\t//get defintions of actual columns\n\n\n\tColumnManager.prototype.getDefinitions = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (!active || active && column.visible) {\n\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get full nested definition tree\n\n\n\tColumnManager.prototype.getDefinitionTree = function () {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getComponents = function (structured) {\n\n\t\tvar self = this,\n\t\t output = [],\n\t\t columns = structured ? self.columns : self.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getWidth = function () {\n\n\t\tvar width = 0;\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\treturn width;\n\t};\n\n\tColumnManager.prototype.moveColumn = function (from, to, after) {\n\n\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.options.columnMoved) {\n\n\t\t\tthis.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\n\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\t};\n\n\tColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {\n\n\t\tvar fromIndex = columns.indexOf(from),\n\t\t toIndex;\n\n\t\tif (fromIndex > -1) {\n\n\t\t\tcolumns.splice(fromIndex, 1);\n\n\t\t\ttoIndex = columns.indexOf(to);\n\n\t\t\tif (toIndex > -1) {\n\n\t\t\t\tif (after) {\n\n\t\t\t\t\ttoIndex = toIndex + 1;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\n\t\t\tcolumns.splice(toIndex, 0, from);\n\n\t\t\tif (updateRows) {\n\n\t\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\n\t\t\t\t\tif (row.cells.length) {\n\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {\n\t\tvar _this = this;\n\n\t\tvar left = 0,\n\t\t offset = 0,\n\t\t adjust = 0,\n\t\t colEl = column.getElement();\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\tposition = _this.table.options.scrollToColumnPosition;\n\t\t\t}\n\n\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\tifVisible = _this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\n\t\t\t\t//align to correct position\n\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tadjust = -_this.element.clientWidth / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"right\":\n\n\t\t\t\t\t\tadjust = colEl.clientWidth - _this.headersElement.clientWidth;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//check column visibility\n\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\toffset = colEl.offsetLeft;\n\n\t\t\t\t\tif (offset > 0 && offset + colEl.offsetWidth < _this.element.clientWidth) {\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//calculate scroll position\n\n\n\t\t\t\tleft = colEl.offsetLeft + _this.element.scrollLeft + adjust;\n\n\t\t\t\tleft = Math.max(Math.min(left, _this.table.rowManager.element.scrollWidth - _this.table.rowManager.element.clientWidth), 0);\n\n\t\t\t\t_this.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t_this.scrollHorizontal(left);\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tColumnManager.prototype.generateCells = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cells = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\t//////////////// Column Management /////////////////\n\n\n\tColumnManager.prototype.getFlexBaseWidth = function () {\n\n\t\tvar self = this,\n\t\t totalWidth = self.table.element.clientWidth,\n\t\t //table element width\n\n\n\t\tfixedWidth = 0;\n\n\t\t//adjust for vertical scrollbar if present\n\n\n\t\tif (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {\n\n\t\t\ttotalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;\n\t\t}\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tvar width, minWidth, colWidth;\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth = column.definition.width || 0;\n\n\t\t\t\tminWidth = typeof column.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(column.minWidth);\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t}\n\t\t});\n\n\t\treturn fixedWidth;\n\t};\n\n\tColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\n\t\tthis._reIndexColumns();\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tthis.redraw();\n\n\t\tif (this.table.modules.layout.getMode() != \"fitColumns\") {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tthis._verticalAlignHeaders();\n\n\t\tthis.table.rowManager.reinitialize();\n\t};\n\n\t//remove column from system\n\n\n\tColumnManager.prototype.deregisterColumn = function (column) {\n\n\t\tvar field = column.getField(),\n\t\t index;\n\n\t\t//remove from field list\n\n\n\t\tif (field) {\n\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\n\t\t//remove from index list\n\n\n\t\tindex = this.columnsByIndex.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\n\t\t//remove from column list\n\n\n\t\tindex = this.columns.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tthis.redraw();\n\t};\n\n\t//redraw columns\n\n\n\tColumnManager.prototype.redraw = function (force) {\n\n\t\tif (force) {\n\n\t\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\n\t\t\t\tthis._verticalAlignHeaders();\n\t\t\t}\n\n\t\t\tthis.table.rowManager.resetScroll();\n\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\n\t\tif (this.table.modules.layout.getMode() == \"fitColumns\") {\n\n\t\t\tthis.table.modules.layout.layout();\n\t\t} else {\n\n\t\t\tif (force) {\n\n\t\t\t\tthis.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tif (force) {\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.redraw();\n\t\t\t}\n\t\t}\n\n\t\tthis.table.footerManager.redraw();\n\t};\n\n\t//public column object\n\n\tvar ColumnComponent = function ColumnComponent(column) {\n\n\t\tthis._column = column;\n\n\t\tthis.type = \"ColumnComponent\";\n\t};\n\n\tColumnComponent.prototype.getElement = function () {\n\n\t\treturn this._column.getElement();\n\t};\n\n\tColumnComponent.prototype.getDefinition = function () {\n\n\t\treturn this._column.getDefinition();\n\t};\n\n\tColumnComponent.prototype.getField = function () {\n\n\t\treturn this._column.getField();\n\t};\n\n\tColumnComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tColumnComponent.prototype.getVisibility = function () {\n\n\t\treturn this._column.visible;\n\t};\n\n\tColumnComponent.prototype.show = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.hide = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.hide();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.toggle = function () {\n\n\t\tif (this._column.visible) {\n\n\t\t\tthis.hide();\n\t\t} else {\n\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.delete = function () {\n\n\t\tthis._column.delete();\n\t};\n\n\tColumnComponent.prototype.getSubColumns = function () {\n\n\t\tvar output = [];\n\n\t\tif (this._column.columns.length) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tColumnComponent.prototype.getParentColumn = function () {\n\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype._getSelf = function () {\n\n\t\treturn this._column;\n\t};\n\n\tColumnComponent.prototype.scrollTo = function () {\n\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\n\t};\n\n\tColumnComponent.prototype.getTable = function () {\n\n\t\treturn this._column.table;\n\t};\n\n\tColumnComponent.prototype.headerFilterFocus = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterFocus(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.reloadHeaderFilter = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.reloadHeaderFilter(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.setHeaderFilterValue = function (value) {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterValue(this._column, value);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.getNextColumn = function () {\n\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype.getPrevColumn = function () {\n\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t};\n\n\tvar Column = function Column(def, parent) {\n\n\t\tvar self = this;\n\n\t\tthis.table = parent.table;\n\n\t\tthis.definition = def; //column definition\n\n\t\tthis.parent = parent; //hold parent object\n\n\t\tthis.type = \"column\"; //type of element\n\n\t\tthis.columns = []; //child columns\n\n\t\tthis.cells = []; //cells bound to this column\n\n\t\tthis.element = this.createElement(); //column header element\n\n\t\tthis.contentElement = false;\n\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\n\t\tthis.isGroup = false;\n\n\t\tthis.tooltip = false; //hold column tooltip\n\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\n\n\t\t//multi dimentional filed handling\n\n\t\tthis.field = \"\";\n\n\t\tthis.fieldStructure = \"\";\n\n\t\tthis.getFieldValue = \"\";\n\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.checkDefinition();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\n\t\tthis.cellEvents = {\n\n\t\t\tcellClick: false,\n\n\t\t\tcellDblClick: false,\n\n\t\t\tcellContext: false,\n\n\t\t\tcellTap: false,\n\n\t\t\tcellDblTap: false,\n\n\t\t\tcellTapHold: false,\n\n\t\t\tcellMouseEnter: false,\n\n\t\t\tcellMouseLeave: false,\n\n\t\t\tcellMouseOver: false,\n\n\t\t\tcellMouseOut: false,\n\n\t\t\tcellMouseMove: false\n\n\t\t};\n\n\t\tthis.width = null; //column width\n\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\n\n\t\tthis.minWidth = null; //column minimum width\n\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\n\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\n\t\tthis.visible = true; //default visible state\n\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\t//initialize column\n\n\t\tif (def.columns) {\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tdef.columns.forEach(function (def, i) {\n\n\t\t\t\tvar newCol = new Column(def, self);\n\n\t\t\t\tself.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tself.checkColumnVisibility();\n\t\t} else {\n\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tif (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists(\"moveRow\")) {\n\n\t\t\tthis.table.modules.moveRow.setHandle(true);\n\t\t}\n\n\t\tthis._buildHeader();\n\t};\n\n\tColumn.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.createGroupElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.checkDefinition = function () {\n\t\tvar _this2 = this;\n\n\t\tObject.keys(this.definition).forEach(function (key) {\n\n\t\t\tif (_this2.defaultOptionList.indexOf(key) === -1) {\n\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (_this2.field || _this2.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t};\n\n\tColumn.prototype.setField = function (field) {\n\n\t\tthis.field = field;\n\n\t\tthis.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];\n\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnPosition = function (column) {\n\n\t\tthis.parent.registerColumnPosition(column);\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnField = function (column) {\n\n\t\tthis.parent.registerColumnField(column);\n\t};\n\n\t//trigger position registration\n\n\tColumn.prototype.reRegisterPosition = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t};\n\n\tColumn.prototype._mapDepricatedFunctionality = function () {\n\n\t\tif (typeof this.definition.hideInHtml !== \"undefined\") {\n\n\t\t\tthis.definition.htmlOutput = !this.definition.hideInHtml;\n\n\t\t\tconsole.warn(\"hideInHtml column definition property is depricated, you should now use htmlOutput\");\n\t\t}\n\t};\n\n\tColumn.prototype.setTooltip = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\t//set header tooltips\n\n\t\tvar tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\tif (def.field) {\n\n\t\t\t\t\tself.table.modules.localize.bind(\"columns|\" + def.field, function (value) {\n\n\t\t\t\t\t\tself.element.setAttribute(\"title\", value || def.title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.element.setAttribute(\"title\", def.title);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (typeof tooltip == \"function\") {\n\n\t\t\t\t\ttooltip = tooltip(self.getComponent());\n\n\t\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\t\ttooltip = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself.element.setAttribute(\"title\", tooltip);\n\t\t\t}\n\t\t} else {\n\n\t\t\tself.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//build header element\n\n\tColumn.prototype._buildHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\twhile (self.element.firstChild) {\n\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t}if (def.headerVertical) {\n\n\t\t\tself.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif (def.headerVertical === \"flip\") {\n\n\t\t\t\tself.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tself.contentElement = self._bindEvents();\n\n\t\tself.contentElement = self._buildColumnHeaderContent();\n\n\t\tself.element.appendChild(self.contentElement);\n\n\t\tif (self.isGroup) {\n\n\t\t\tself._buildGroupHeader();\n\t\t} else {\n\n\t\t\tself._buildColumnHeader();\n\t\t}\n\n\t\tself.setTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (self.table.options.resizableColumns && self.table.modExists(\"resizeColumns\")) {\n\n\t\t\tself.table.modules.resizeColumns.initializeColumn(\"header\", self, self.element);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (def.headerFilter && self.table.modExists(\"filter\") && self.table.modExists(\"edit\")) {\n\n\t\t\tif (typeof def.headerFilterPlaceholder !== \"undefined\" && def.field) {\n\n\t\t\t\tself.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\n\t\t\t}\n\n\t\t\tself.table.modules.filter.initializeColumn(self);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.initializeColumn(self);\n\t\t}\n\n\t\t//set movable column\n\n\t\tif (self.table.options.movableColumns && !self.isGroup && self.table.modExists(\"moveColumn\")) {\n\n\t\t\tself.table.modules.moveColumn.initializeColumn(self);\n\t\t}\n\n\t\t//set calcs column\n\n\t\tif ((def.topCalc || def.bottomCalc) && self.table.modExists(\"columnCalcs\")) {\n\n\t\t\tself.table.modules.columnCalcs.initializeColumn(self);\n\t\t}\n\n\t\t//update header tooltip on mouse enter\n\n\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\tself.setTooltip();\n\t\t});\n\t};\n\n\tColumn.prototype._bindEvents = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//setup header click event bindings\n\n\t\tif (typeof def.headerClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tdef.headerClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tdef.headerDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerContext == \"function\") {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tdef.headerContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//setup header tap event bindings\n\n\t\tif (typeof def.headerTap == \"function\") {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tdef.headerTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblTap == \"function\") {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tdef.headerDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerTapHold == \"function\") {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tdef.headerTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\t//store column cell click event bindings\n\n\t\tif (typeof def.cellClick == \"function\") {\n\n\t\t\tself.cellEvents.cellClick = def.cellClick;\n\t\t}\n\n\t\tif (typeof def.cellDblClick == \"function\") {\n\n\t\t\tself.cellEvents.cellDblClick = def.cellDblClick;\n\t\t}\n\n\t\tif (typeof def.cellContext == \"function\") {\n\n\t\t\tself.cellEvents.cellContext = def.cellContext;\n\t\t}\n\n\t\t//store column mouse event bindings\n\n\t\tif (typeof def.cellMouseEnter == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseEnter = def.cellMouseEnter;\n\t\t}\n\n\t\tif (typeof def.cellMouseLeave == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseLeave = def.cellMouseLeave;\n\t\t}\n\n\t\tif (typeof def.cellMouseOver == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOver = def.cellMouseOver;\n\t\t}\n\n\t\tif (typeof def.cellMouseOut == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOut = def.cellMouseOut;\n\t\t}\n\n\t\tif (typeof def.cellMouseMove == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseMove = def.cellMouseMove;\n\t\t}\n\n\t\t//setup column cell tap event bindings\n\n\t\tif (typeof def.cellTap == \"function\") {\n\n\t\t\tself.cellEvents.cellTap = def.cellTap;\n\t\t}\n\n\t\tif (typeof def.cellDblTap == \"function\") {\n\n\t\t\tself.cellEvents.cellDblTap = def.cellDblTap;\n\t\t}\n\n\t\tif (typeof def.cellTapHold == \"function\") {\n\n\t\t\tself.cellEvents.cellTapHold = def.cellTapHold;\n\t\t}\n\n\t\t//setup column cell edit callbacks\n\n\t\tif (typeof def.cellEdited == \"function\") {\n\n\t\t\tself.cellEvents.cellEdited = def.cellEdited;\n\t\t}\n\n\t\tif (typeof def.cellEditing == \"function\") {\n\n\t\t\tself.cellEvents.cellEditing = def.cellEditing;\n\t\t}\n\n\t\tif (typeof def.cellEditCancelled == \"function\") {\n\n\t\t\tself.cellEvents.cellEditCancelled = def.cellEditCancelled;\n\t\t}\n\t};\n\n\t//build header element for header\n\n\tColumn.prototype._buildColumnHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t sortable;\n\n\t\t//set column sorter\n\n\t\tif (table.modExists(\"sort\")) {\n\n\t\t\ttable.modules.sort.initializeColumn(self, self.contentElement);\n\t\t}\n\n\t\t//set column formatter\n\n\t\tif (table.modExists(\"format\")) {\n\n\t\t\ttable.modules.format.initializeColumn(self);\n\t\t}\n\n\t\t//set column editor\n\n\t\tif (typeof def.editor != \"undefined\" && table.modExists(\"edit\")) {\n\n\t\t\ttable.modules.edit.initializeColumn(self);\n\t\t}\n\n\t\t//set colum validator\n\n\t\tif (typeof def.validator != \"undefined\" && table.modExists(\"validate\")) {\n\n\t\t\ttable.modules.validate.initializeColumn(self);\n\t\t}\n\n\t\t//set column mutator\n\n\t\tif (table.modExists(\"mutator\")) {\n\n\t\t\ttable.modules.mutator.initializeColumn(self);\n\t\t}\n\n\t\t//set column accessor\n\n\t\tif (table.modExists(\"accessor\")) {\n\n\t\t\ttable.modules.accessor.initializeColumn(self);\n\t\t}\n\n\t\t//set respoviveLayout\n\n\t\tif (_typeof(table.options.responsiveLayout) && table.modExists(\"responsiveLayout\")) {\n\n\t\t\ttable.modules.responsiveLayout.initializeColumn(self);\n\t\t}\n\n\t\t//set column visibility\n\n\t\tif (typeof def.visible != \"undefined\") {\n\n\t\t\tif (def.visible) {\n\n\t\t\t\tself.show(true);\n\t\t\t} else {\n\n\t\t\t\tself.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//asign additional css classes to column header\n\n\t\tif (def.cssClass) {\n\n\t\t\tvar classeNames = def.cssClass.split(\" \");\n\n\t\t\tclasseNames.forEach(function (className) {\n\n\t\t\t\tself.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif (def.field) {\n\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\n\t\tself.setMinWidth(typeof def.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(def.minWidth));\n\n\t\tself.reinitializeWidth();\n\n\t\t//set tooltip if present\n\n\t\tself.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;\n\n\t\t//set orizontal text alignment\n\n\t\tself.hozAlign = typeof self.definition.align == \"undefined\" ? \"\" : self.definition.align;\n\t};\n\n\tColumn.prototype._buildColumnHeaderContent = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table;\n\n\t\tvar contentElement = document.createElement(\"div\");\n\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tcontentElement.appendChild(self._buildColumnHeaderTitle());\n\n\t\treturn contentElement;\n\t};\n\n\t//build title element of column\n\n\tColumn.prototype._buildColumnHeaderTitle = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t title;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\n\t\tif (def.editableTitle) {\n\n\t\t\tvar titleElement = document.createElement(\"input\");\n\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", function (e) {\n\n\t\t\t\te.stopPropagation();\n\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", function () {\n\n\t\t\t\tdef.title = titleElement.value;\n\n\t\t\t\ttable.options.columnTitleChanged.call(self.table, self.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\ttitleElement.value = text || def.title || \" \";\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, text || def.title || \" \");\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t};\n\n\tColumn.prototype._formatColumnHeaderTitle = function (el, title) {\n\n\t\tvar formatter, contents, params, mockCell;\n\n\t\tif (this.definition.titleFormatter && this.table.modExists(\"format\")) {\n\n\t\t\tformatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);\n\n\t\t\tmockCell = {\n\n\t\t\t\tgetValue: function getValue() {\n\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\n\t\t\t\tgetElement: function getElement() {\n\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tparams = this.definition.titleFormatterParams || {};\n\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\n\t\t\tcontents = formatter.call(this.table.modules.format, mockCell, params);\n\n\t\t\tswitch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {\n\n\t\t\t\tcase \"object\":\n\n\t\t\t\t\tif (contents instanceof Node) {\n\n\t\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"undefined\":\n\n\t\t\t\tcase \"null\":\n\n\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tel.innerHTML = contents;\n\n\t\t\t}\n\t\t} else {\n\n\t\t\tel.innerHTML = title;\n\t\t}\n\t};\n\n\t//build header element for column group\n\n\tColumn.prototype._buildGroupHeader = function () {\n\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\tthis.element.appendChild(this.groupElement);\n\t};\n\n\t//flat field lookup\n\n\tColumn.prototype._getFlatData = function (data) {\n\n\t\treturn data[this.field];\n\t};\n\n\t//nested field lookup\n\n\tColumn.prototype._getNestedData = function (data) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length,\n\t\t output;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif (!dataObj) {\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//flat field set\n\n\tColumn.prototype._setFlatData = function (data, value) {\n\n\t\tif (this.field) {\n\n\t\t\tdata[this.field] = value;\n\t\t}\n\t};\n\n\t//nested field set\n\n\tColumn.prototype._setNesteData = function (data, value) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tif (i == length - 1) {\n\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t} else {\n\n\t\t\t\tif (!dataObj[structure[i]]) {\n\n\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t};\n\n\t//attach column to this group\n\n\tColumn.prototype.attachColumn = function (column) {\n\n\t\tvar self = this;\n\n\t\tif (self.groupElement) {\n\n\t\t\tself.columns.push(column);\n\n\t\t\tself.groupElement.appendChild(column.getElement());\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t};\n\n\t//vertically align header in column\n\n\tColumn.prototype.verticalAlign = function (alignment, height) {\n\n\t\t//calculate height of column header and group holder element\n\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;\n\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\n\t\tif (!this.isGroup && alignment !== \"top\") {\n\n\t\t\tif (alignment === \"bottom\") {\n\n\t\t\t\tthis.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + \"px\";\n\t\t\t} else {\n\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + \"px\";\n\t\t\t}\n\t\t}\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t};\n\n\t//clear vertical alignmenet\n\n\tColumn.prototype.clearVerticalAlign = function () {\n\n\t\tthis.element.style.paddingTop = \"\";\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.element.style.minHeight = \"\";\n\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\t};\n\n\t//// Retreive Column Information ////\n\n\n\t//return column header element\n\n\tColumn.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return colunm group element\n\n\tColumn.prototype.getGroupElement = function () {\n\n\t\treturn this.groupElement;\n\t};\n\n\t//return field name\n\n\tColumn.prototype.getField = function () {\n\n\t\treturn this.field;\n\t};\n\n\t//return the first column in a group\n\n\tColumn.prototype.getFirstColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return the last column in a group\n\n\tColumn.prototype.getLastColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[this.columns.length - 1].getLastColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\t//retreive the top column in a group of columns\n\n\tColumn.prototype.getTopColumn = function () {\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\treturn this.parent.getTopColumn();\n\t\t} else {\n\n\t\t\treturn this;\n\t\t}\n\t};\n\n\t//return column definition object\n\n\tColumn.prototype.getDefinition = function (updateBranches) {\n\n\t\tvar colDefs = [];\n\n\t\tif (this.isGroup && updateBranches) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tColumn.prototype.checkColumnVisibility = function () {\n\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif (visible) {\n\n\t\t\tthis.show();\n\n\t\t\tthis.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t} else {\n\n\t\t\tthis.hide();\n\t\t}\n\t};\n\n\t//show column\n\n\tColumn.prototype.show = function (silent, responsiveToggle) {\n\n\t\tif (!this.visible) {\n\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif (!this.isGroup && this.width === null) {\n\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\t//hide column\n\n\tColumn.prototype.hide = function (silent, responsiveToggle) {\n\n\t\tif (this.visible) {\n\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.matchChildWidths = function () {\n\n\t\tvar childWidth = 0;\n\n\t\tif (this.contentElement && this.columns.length) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = childWidth - 1 + \"px\";\n\t\t}\n\t};\n\n\tColumn.prototype.setWidth = function (width) {\n\n\t\tthis.widthFixed = true;\n\n\t\tthis.setWidthActual(width);\n\t};\n\n\tColumn.prototype.setWidthActual = function (width) {\n\n\t\tif (isNaN(width)) {\n\n\t\t\twidth = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tthis.width = width;\n\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif (!this.isGroup) {\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\t};\n\n\tColumn.prototype.checkCellHeights = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tif (cell.row.heightInitialized) {\n\n\t\t\t\tif (cell.row.getElement().offsetParent !== null) {\n\n\t\t\t\t\trows.push(cell.row);\n\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t} else {\n\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\t};\n\n\tColumn.prototype.getWidth = function () {\n\n\t\t// return this.element.offsetWidth;\n\n\t\treturn this.width;\n\t};\n\n\tColumn.prototype.getHeight = function () {\n\n\t\treturn this.element.offsetHeight;\n\t};\n\n\tColumn.prototype.setMinWidth = function (minWidth) {\n\n\t\tthis.minWidth = minWidth;\n\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setMinWidth();\n\t\t});\n\t};\n\n\tColumn.prototype.delete = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.delete();\n\t\t\t});\n\t\t}\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.table.columnManager.deregisterColumn(this);\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\t//generate cell for this column\n\n\tColumn.prototype.generateCell = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cell = new Cell(self, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t};\n\n\tColumn.prototype.nextColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index + 1) : false;\n\t};\n\n\tColumn.prototype.prevColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index - 1) : false;\n\t};\n\n\tColumn.prototype.reinitializeWidth = function (force) {\n\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\n\t\tif (typeof this.definition.width !== \"undefined\" && !force) {\n\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\t//hide header filters to prevent them altering column width\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.hideHeaderFilterElements();\n\t\t}\n\n\t\tthis.fitToData();\n\n\t\t//show header filters again after layout is complete\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.showHeaderFilterElements();\n\t\t}\n\t};\n\n\t//set column width to maximum cell width\n\n\tColumn.prototype.fitToData = function () {\n\n\t\tvar self = this;\n\n\t\tif (!this.widthFixed) {\n\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif (!self.width || !this.widthFixed) {\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif (width > maxWidth) {\n\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (maxWidth) {\n\n\t\t\t\tself.setWidthActual(maxWidth + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\tColumn.prototype.defaultOptionList = [\"title\", \"field\", \"columns\", \"visible\", \"align\", \"width\", \"minWidth\", \"widthGrow\", \"widthShrink\", \"resizable\", \"frozen\", \"responsive\", \"tooltip\", \"cssClass\", \"rowHandle\", \"hideInHtml\", \"print\", \"htmlOutput\", \"sorter\", \"sorterParams\", \"formatter\", \"formatterParams\", \"variableHeight\", \"editable\", \"editor\", \"editorParams\", \"validator\", \"mutator\", \"mutatorParams\", \"mutatorData\", \"mutatorDataParams\", \"mutatorEdit\", \"mutatorEditParams\", \"mutatorClipboard\", \"mutatorClipboardParams\", \"accessor\", \"accessorParams\", \"accessorData\", \"accessorDataParams\", \"accessorDownload\", \"accessorDownloadParams\", \"accessorClipboard\", \"accessorClipboardParams\", \"download\", \"downloadTitle\", \"topCalc\", \"topCalcParams\", \"topCalcFormatter\", \"topCalcFormatterParams\", \"bottomCalc\", \"bottomCalcParams\", \"bottomCalcFormatter\", \"bottomCalcFormatterParams\", \"cellClick\", \"cellDblClick\", \"cellContext\", \"cellTap\", \"cellDblTap\", \"cellTapHold\", \"cellMouseEnter\", \"cellMouseLeave\", \"cellMouseOver\", \"cellMouseOut\", \"cellMouseMove\", \"cellEditing\", \"cellEdited\", \"cellEditCancelled\", \"headerSort\", \"headerSortStartingDir\", \"headerSortTristate\", \"headerClick\", \"headerDblClick\", \"headerContext\", \"headerTap\", \"headerDblTap\", \"headerTapHold\", \"headerTooltip\", \"headerVertical\", \"editableTitle\", \"titleFormatter\", \"titleFormatterParams\", \"headerFilter\", \"headerFilterPlaceholder\", \"headerFilterParams\", \"headerFilterEmptyCheck\", \"headerFilterFunc\", \"headerFilterFuncParams\", \"headerFilterLiveFilter\", \"print\"];\n\n\t//////////////// Event Bindings /////////////////\n\n\n\t//////////////// Object Generation /////////////////\n\n\tColumn.prototype.getComponent = function () {\n\n\t\treturn new ColumnComponent(this);\n\t};\n\n\tvar RowManager = function RowManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.element = this.createHolderElement(); //containing element\n\n\t\tthis.tableElement = this.createTableElement(); //table element\n\n\t\tthis.columnManager = null; //hold column manager object\n\n\t\tthis.height = 0; //hold height of table element\n\n\n\t\tthis.firstRender = false; //handle first render\n\n\t\tthis.renderMode = \"classic\"; //current rendering mode\n\n\n\t\tthis.rows = []; //hold row data objects\n\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\n\t\tthis.activeRowsCount = 0; //count of active rows\n\n\n\t\tthis.displayRows = []; //rows currently on display in the table\n\n\t\tthis.displayRowsCount = 0; //count of display rows\n\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\n\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\tRowManager.prototype.createHolderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-tableHolder\");\n\n\t\tel.setAttribute(\"tabindex\", 0);\n\n\t\treturn el;\n\t};\n\n\tRowManager.prototype.createTableElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-table\");\n\n\t\treturn el;\n\t};\n\n\t//return containing element\n\n\tRowManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return table element\n\n\tRowManager.prototype.getTableElement = function () {\n\n\t\treturn this.tableElement;\n\t};\n\n\t//return position of row in table\n\n\tRowManager.prototype.getRowPosition = function (row, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows.indexOf(row);\n\t\t} else {\n\n\t\t\treturn this.rows.indexOf(row);\n\t\t}\n\t};\n\n\t//link to column manager\n\n\tRowManager.prototype.setColumnManager = function (manager) {\n\n\t\tthis.columnManager = manager;\n\t};\n\n\tRowManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\tself.setRenderMode();\n\n\t\t//initialize manager\n\n\t\tself.element.appendChild(self.tableElement);\n\n\t\tself.firstRender = true;\n\n\t\t//scroll header along with table body\n\n\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\tvar left = self.element.scrollLeft;\n\n\t\t\t//handle horizontal scrolling\n\n\t\t\tif (self.scrollLeft != left) {\n\n\t\t\t\tself.columnManager.scrollHorizontal(left);\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.table.modules.groupRows.scrollHeaders(left);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tself.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.scrollLeft = left;\n\t\t});\n\n\t\t//handle virtual dom scrolling\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\t\tvar top = self.element.scrollTop;\n\n\t\t\t\tvar dir = self.scrollTop > top;\n\n\t\t\t\t//handle verical scrolling\n\n\t\t\t\tif (self.scrollTop != top) {\n\n\t\t\t\t\tself.scrollTop = top;\n\n\t\t\t\t\tself.scrollVertical(dir);\n\n\t\t\t\t\tif (self.table.options.ajaxProgressiveLoad == \"scroll\") {\n\n\t\t\t\t\t\tself.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tself.scrollTop = top;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t////////////////// Row Manipulation //////////////////\n\n\n\tRowManager.prototype.findRow = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Row) {\n\n\t\t\t\t//subject is row element\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof RowComponent) {\n\n\t\t\t\t//subject is public row component\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the row\n\n\t\t\t\tvar match = self.rows.find(function (row) {\n\n\t\t\t\t\treturn row.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else if (typeof subject == \"undefined\" || subject === null) {\n\n\t\t\treturn false;\n\t\t} else {\n\n\t\t\t//subject should be treated as the index of the row\n\n\t\t\tvar _match = self.rows.find(function (row) {\n\n\t\t\t\treturn row.data[self.table.options.index] == subject;\n\t\t\t});\n\n\t\t\treturn _match || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getRowFromDataObject = function (data) {\n\n\t\tvar match = this.rows.find(function (row) {\n\n\t\t\treturn row.data === data;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\tRowManager.prototype.getRowFromPosition = function (position, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows[position];\n\t\t} else {\n\n\t\t\treturn this.rows[position];\n\t\t}\n\t};\n\n\tRowManager.prototype.scrollToRow = function (row, position, ifVisible) {\n\t\tvar _this3 = this;\n\n\t\tvar rowIndex = this.getDisplayRows().indexOf(row),\n\t\t rowEl = row.getElement(),\n\t\t rowTop,\n\t\t offset = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\t\tposition = _this3.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\t\tifVisible = _this3.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\tif (position === \"nearest\") {\n\n\t\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t\trowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.element.scrollTop - rowTop) > Math.abs(_this3.element.scrollTop + _this3.element.clientHeight - rowTop) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.vDomTop - rowIndex) > Math.abs(_this3.vDomBottom - rowIndex) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\tif (Tabulator.prototype.helpers.elVisible(rowEl)) {\n\n\t\t\t\t\t\toffset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top;\n\n\t\t\t\t\t\tif (offset > 0 && offset < _this3.element.clientHeight - rowEl.offsetHeight) {\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\n\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top + _this3.element.scrollTop;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t_this3._virtualRenderFill(rowIndex, true);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//align to correct position\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight + rowEl.offsetHeight;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\tRowManager.prototype.setData = function (data, renderInPosition) {\n\t\tvar _this4 = this;\n\n\t\tvar self = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (renderInPosition && _this4.getDisplayRows().length) {\n\n\t\t\t\tif (self.table.options.pagination) {\n\n\t\t\t\t\tself._setDataActual(data, true);\n\t\t\t\t} else {\n\n\t\t\t\t\t_this4.reRenderInPosition(function () {\n\n\t\t\t\t\t\tself._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (_this4.table.options.autoColumns) {\n\n\t\t\t\t\t_this4.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\n\t\t\t\t_this4.resetScroll();\n\n\t\t\t\t_this4._setDataActual(data);\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRowManager.prototype._setDataActual = function (data, renderInPosition) {\n\n\t\tvar self = this;\n\n\t\tself.table.options.dataLoading.call(this.table, data);\n\n\t\tthis._wipeElements();\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.clear();\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\n\t\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\t\tthis.table.modules.selectRow.clearSelectionData();\n\t\t\t}\n\n\t\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\tthis.table.modules.reactiveData.watchData(data);\n\t\t\t}\n\n\t\t\tdata.forEach(function (def, i) {\n\n\t\t\t\tif (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === \"object\") {\n\n\t\t\t\t\tvar row = new Row(def, self);\n\n\t\t\t\t\tself.rows.push(row);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.options.dataLoaded.call(this.table, data);\n\n\t\t\tself.refreshActiveData(false, false, renderInPosition);\n\t\t} else {\n\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data === 'undefined' ? 'undefined' : _typeof(data), \"\\nData: \", data);\n\t\t}\n\t};\n\n\tRowManager.prototype._wipeElements = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.wipe();\n\t\t}\n\n\t\tthis.rows = [];\n\t};\n\n\tRowManager.prototype.deleteRow = function (row, blockRedraw) {\n\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\t activeIndex = this.activeRows.indexOf(row);\n\n\t\tif (activeIndex > -1) {\n\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\n\t\tif (allIndex > -1) {\n\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tvar displayIndex = rows.indexOf(row);\n\n\t\t\tif (displayIndex > -1) {\n\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\tthis.table.options.rowDeleted.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t} else if (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.refreshActiveData(false, false, true);\n\t\t} else {\n\n\t\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\t\tthis.refreshActiveData(\"page\");\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.addRow = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowAdd\", row, { data: data, pos: pos, index: index });\n\t\t}\n\n\t\treturn row;\n\t};\n\n\t//add multiple rows\n\n\tRowManager.prototype.addRows = function (data, pos, index) {\n\t\tvar _this5 = this;\n\n\t\tvar self = this,\n\t\t length = 0,\n\t\t rows = [];\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpos = _this5.findAddRowPos(pos);\n\n\t\t\tif (!Array.isArray(data)) {\n\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\tlength = data.length - 1;\n\n\t\t\tif (typeof index == \"undefined\" && pos || typeof index !== \"undefined\" && !pos) {\n\n\t\t\t\tdata.reverse();\n\t\t\t}\n\n\t\t\tdata.forEach(function (item, i) {\n\n\t\t\t\tvar row = self.addRow(item, pos, index, true);\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\tif (_this5.table.options.groupBy && _this5.table.modExists(\"groupRows\")) {\n\n\t\t\t\t_this5.table.modules.groupRows.updateGroupRows(true);\n\t\t\t} else if (_this5.table.options.pagination && _this5.table.modExists(\"page\")) {\n\n\t\t\t\t_this5.refreshActiveData(false, false, true);\n\t\t\t} else {\n\n\t\t\t\t_this5.reRenderInPosition();\n\t\t\t}\n\n\t\t\t//recalc column calculations if present\n\n\t\t\tif (_this5.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t_this5.table.modules.columnCalcs.recalc(_this5.table.rowManager.activeRows);\n\t\t\t}\n\n\t\t\tresolve(rows);\n\t\t});\n\t};\n\n\tRowManager.prototype.findAddRowPos = function (pos) {\n\n\t\tif (typeof pos === \"undefined\") {\n\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\n\t\tif (pos === \"pos\") {\n\n\t\t\tpos = true;\n\t\t}\n\n\t\tif (pos === \"bottom\") {\n\n\t\t\tpos = false;\n\t\t}\n\n\t\treturn pos;\n\t};\n\n\tRowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\t top = this.findAddRowPos(pos),\n\t\t dispRows;\n\n\t\tif (!index && this.table.options.pagination && this.table.options.paginationAddRow == \"page\") {\n\n\t\t\tdispRows = this.getDisplayRows();\n\n\t\t\tif (top) {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[0];\n\t\t\t\t} else {\n\n\t\t\t\t\tif (this.activeRows.length) {\n\n\t\t\t\t\t\tindex = this.activeRows[this.activeRows.length - 1];\n\n\t\t\t\t\t\ttop = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[dispRows.length - 1];\n\n\t\t\t\t\ttop = dispRows.length < this.table.modules.page.getPageSize() ? false : true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tindex = this.findRow(index);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.assignRowToGroup(row);\n\n\t\t\tvar groupRows = row.getGroup().rows;\n\n\t\t\tif (groupRows.length > 1) {\n\n\t\t\t\tif (!index || index && groupRows.indexOf(index) == -1) {\n\n\t\t\t\t\tif (top) {\n\n\t\t\t\t\t\tif (groupRows[0] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[0];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (groupRows[groupRows.length - 1] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length - 1];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tvar allIndex = this.rows.indexOf(index),\n\t\t\t activeIndex = this.activeRows.indexOf(index);\n\n\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\n\t\t\t\tif (displayIndex > -1) {\n\n\t\t\t\t\trows.splice(top ? displayIndex : displayIndex + 1, 0, row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (activeIndex > -1) {\n\n\t\t\t\tthis.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);\n\t\t\t}\n\n\t\t\tif (allIndex > -1) {\n\n\t\t\t\tthis.rows.splice(top ? allIndex : allIndex + 1, 0, row);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (top) {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.unshift(row);\n\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t} else {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.push(row);\n\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.table.options.rowAdded.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\treturn row;\n\t};\n\n\tRowManager.prototype.moveRow = function (from, to, after) {\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowMove\", from, { pos: this.getRowPosition(from), to: to, after: after });\n\t\t}\n\n\t\tthis.moveRowActual(from, to, after);\n\n\t\tthis.table.options.rowMoved.call(this.table, from.getComponent());\n\t};\n\n\tRowManager.prototype.moveRowActual = function (from, to, after) {\n\n\t\tvar self = this;\n\n\t\tthis._moveRowInArray(this.rows, from, to, after);\n\n\t\tthis._moveRowInArray(this.activeRows, from, to, after);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tself._moveRowInArray(rows, from, to, after);\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tvar toGroup = to.getGroup();\n\n\t\t\tvar fromGroup = from.getGroup();\n\n\t\t\tif (toGroup === fromGroup) {\n\n\t\t\t\tthis._moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t} else {\n\n\t\t\t\tif (fromGroup) {\n\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._moveRowInArray = function (rows, from, to, after) {\n\n\t\tvar fromIndex, toIndex, start, end;\n\n\t\tif (from !== to) {\n\n\t\t\tfromIndex = rows.indexOf(from);\n\n\t\t\tif (fromIndex > -1) {\n\n\t\t\t\trows.splice(fromIndex, 1);\n\n\t\t\t\ttoIndex = rows.indexOf(to);\n\n\t\t\t\tif (toIndex > -1) {\n\n\t\t\t\t\tif (after) {\n\n\t\t\t\t\t\trows.splice(toIndex + 1, 0, from);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//restyle rows\n\n\t\t\tif (rows === this.getDisplayRows()) {\n\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex + 1;\n\n\t\t\t\tfor (var i = start; i <= end; i++) {\n\n\t\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.clearData = function () {\n\n\t\tthis.setData([]);\n\t};\n\n\tRowManager.prototype.getRowIndex = function (row) {\n\n\t\treturn this.findRowIndex(row, this.rows);\n\t};\n\n\tRowManager.prototype.getDisplayRowIndex = function (row) {\n\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\n\t\treturn index > -1 ? index : false;\n\t};\n\n\tRowManager.prototype.nextDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t nextRow = false;\n\n\t\tif (index !== false && index < this.displayRowsCount - 1) {\n\n\t\t\tnextRow = this.getDisplayRows()[index + 1];\n\t\t}\n\n\t\tif (nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")) {\n\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\n\t\treturn nextRow;\n\t};\n\n\tRowManager.prototype.prevDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t prevRow = false;\n\n\t\tif (index) {\n\n\t\t\tprevRow = this.getDisplayRows()[index - 1];\n\t\t}\n\n\t\tif (prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")) {\n\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\n\t\treturn prevRow;\n\t};\n\n\tRowManager.prototype.findRowIndex = function (row, list) {\n\n\t\tvar rowIndex;\n\n\t\trow = this.findRow(row);\n\n\t\tif (row) {\n\n\t\t\trowIndex = list.indexOf(row);\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getData = function (active, transform) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getComponents = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDataCount = function (active) {\n\n\t\treturn active ? this.activeRows.length : this.rows.length;\n\t};\n\n\tRowManager.prototype._genRemoteRequest = function () {\n\n\t\tvar self = this,\n\t\t table = self.table,\n\t\t options = table.options,\n\t\t params = {};\n\n\t\tif (table.modExists(\"page\")) {\n\n\t\t\t//set sort data if defined\n\n\t\t\tif (options.ajaxSorting) {\n\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\n\t\t\tif (options.ajaxFiltering) {\n\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(params, true);\n\t\t}\n\n\t\ttable.modules.ajax.sendRequest().then(function (data) {\n\n\t\t\tself.setData(data);\n\t\t}).catch(function (e) {});\n\t};\n\n\t//choose the path to refresh data after a filter update\n\n\tRowManager.prototype.filterRefresh = function () {\n\n\t\tvar table = this.table,\n\t\t options = table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxFiltering) {\n\n\t\t\tif (options.pagination == \"remote\" && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(\"filter\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\t//choose the path to refresh data after a sorter update\n\n\tRowManager.prototype.sorterRefresh = function (loadOrignalData) {\n\n\t\tvar table = this.table,\n\t\t options = this.table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxSorting) {\n\n\t\t\tif ((options.pagination == \"remote\" || options.progressiveLoad) && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(loadOrignalData ? \"filter\" : \"sort\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\tRowManager.prototype.scrollHorizontal = function (left) {\n\n\t\tthis.scrollLeft = left;\n\n\t\tthis.element.scrollLeft = left;\n\n\t\tif (this.table.options.groupBy) {\n\n\t\t\tthis.table.modules.groupRows.scrollHeaders(left);\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t}\n\t};\n\n\t//set active data set\n\n\tRowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {\n\n\t\tvar self = this,\n\t\t table = this.table,\n\t\t displayIndex;\n\n\t\tif (self.table.modExists(\"edit\")) {\n\n\t\t\tself.table.modules.edit.cancelEdit();\n\t\t}\n\n\t\tif (!stage) {\n\n\t\t\tstage = \"all\";\n\t\t}\n\n\t\tif (table.options.selectable && !table.options.selectablePersistence && table.modExists(\"selectRow\")) {\n\n\t\t\ttable.modules.selectRow.deselectRows();\n\t\t}\n\n\t\t//cascade through data refresh stages\n\n\t\tswitch (stage) {\n\n\t\t\tcase \"all\":\n\n\t\t\tcase \"filter\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"filter\")) {\n\n\t\t\t\t\t\tself.setActiveRows(table.modules.filter.filter(self.rows));\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.setActiveRows(self.rows.slice(0));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"sort\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"sort\")) {\n\n\t\t\t\t\t\ttable.modules.sort.sort(this.activeRows);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t//generic stage to allow for pipeline trigger after the data manipulation stage\n\n\t\t\tcase \"display\":\n\n\t\t\t\tthis.resetDisplayRows();\n\n\t\t\tcase \"freeze\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\t\t\t\tif (table.modules.frozenRows.isFrozen()) {\n\n\t\t\t\t\t\t\tif (!table.modules.frozenRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdisplayIndex = table.modules.frozenRows.getDisplayIndex();\n\n\t\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"group\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.groupBy && table.modExists(\"groupRows\")) {\n\n\t\t\t\t\t\tif (!table.modules.groupRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.groupRows.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"tree\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.dataTree && table.modExists(\"dataTree\")) {\n\n\t\t\t\t\t\tif (!table.modules.dataTree.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.dataTree.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t\tif (table.options.pagination && table.modExists(\"page\") && !renderInPosition) {\n\n\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\ttable.modules.page.reset();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase \"page\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.pagination && table.modExists(\"page\")) {\n\n\t\t\t\t\t\tif (!table.modules.page.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.page.getDisplayIndex();\n\n\t\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\t\ttable.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t}\n\n\t\tif (Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tif (renderInPosition) {\n\n\t\t\t\tself.reRenderInPosition();\n\t\t\t} else {\n\n\t\t\t\tself.renderTable();\n\n\t\t\t\tif (table.options.layoutColumnsOnNewData) {\n\n\t\t\t\t\tself.table.columnManager.redraw(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (table.modExists(\"columnCalcs\")) {\n\n\t\t\ttable.modules.columnCalcs.recalc(this.activeRows);\n\t\t}\n\t};\n\n\tRowManager.prototype.setActiveRows = function (activeRows) {\n\n\t\tthis.activeRows = activeRows;\n\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t};\n\n\t//reset display rows array\n\n\tRowManager.prototype.resetDisplayRows = function () {\n\n\t\tthis.displayRows = [];\n\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\n\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\tthis.table.modules.frozenRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.table.modules.page.setDisplayIndex(0);\n\t\t}\n\t};\n\n\tRowManager.prototype.getNextDisplayIndex = function () {\n\n\t\treturn this.displayRows.length;\n\t};\n\n\t//set display row pipeline data\n\n\tRowManager.prototype.setDisplayRows = function (displayRows, index) {\n\n\t\tvar output = true;\n\n\t\tif (index && typeof this.displayRows[index] != \"undefined\") {\n\n\t\t\tthis.displayRows[index] = displayRows;\n\n\t\t\toutput = true;\n\t\t} else {\n\n\t\t\tthis.displayRows.push(displayRows);\n\n\t\t\toutput = index = this.displayRows.length - 1;\n\t\t}\n\n\t\tif (index == this.displayRows.length - 1) {\n\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDisplayRows = function (index) {\n\n\t\tif (typeof index == \"undefined\") {\n\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];\n\t\t} else {\n\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t};\n\n\tRowManager.prototype.getVisibleRows = function (viewable) {\n\n\t\tvar topEdge = this.element.scrollTop,\n\t\t bottomEdge = this.element.clientHeight + topEdge,\n\t\t topFound = false,\n\t\t topRow = 0,\n\t\t bottomRow = 0,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (viewable) {\n\n\t\t\tthis.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tif (!topFound) {\n\n\t\t\t\t\t\tif (topEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttopFound = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (bottomEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\ttopRow = this.vDomTop;\n\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t};\n\n\t//repeat action accross display rows\n\n\tRowManager.prototype.displayRowIterator = function (callback) {\n\n\t\tthis.displayRows.forEach(callback);\n\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t};\n\n\t//return only actual rows (not group headers etc)\n\n\tRowManager.prototype.getRows = function () {\n\n\t\treturn this.rows;\n\t};\n\n\t///////////////// Table Rendering /////////////////\n\n\n\t//trigger rerender of table in current position\n\n\tRowManager.prototype.reRenderInPosition = function (callback) {\n\n\t\tif (this.getRenderMode() == \"virtual\") {\n\n\t\t\tvar scrollTop = this.element.scrollTop;\n\n\t\t\tvar topRow = false;\n\n\t\t\tvar topOffset = false;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tvar rows = this.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\t\tif (topOffset === false || Math.abs(diff) < topOffset) {\n\n\t\t\t\t\t\ttopOffset = diff;\n\n\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\n\t\t\tthis._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.setRenderMode = function () {\n\n\t\tif ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {\n\n\t\t\tthis.renderMode = \"virtual\";\n\t\t} else {\n\n\t\t\tthis.renderMode = \"classic\";\n\t\t}\n\t};\n\n\tRowManager.prototype.getRenderMode = function () {\n\n\t\treturn this.renderMode;\n\t};\n\n\tRowManager.prototype.renderTable = function () {\n\n\t\tvar self = this;\n\n\t\tself.table.options.renderStarted.call(this.table);\n\n\t\tself.element.scrollTop = 0;\n\n\t\tswitch (self.renderMode) {\n\n\t\t\tcase \"classic\":\n\n\t\t\t\tself._simpleRender();\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"virtual\":\n\n\t\t\t\tself._virtualRenderFill();\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif (self.firstRender) {\n\n\t\t\tif (self.displayRowsCount) {\n\n\t\t\t\tself.firstRender = false;\n\n\t\t\t\tself.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tself.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (!self.displayRowsCount) {\n\n\t\t\tif (self.table.options.placeholder) {\n\n\t\t\t\tif (this.renderMode) {\n\n\t\t\t\t\tself.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\t}\n\n\t\t\t\tself.getElement().appendChild(self.table.options.placeholder);\n\t\t\t}\n\t\t}\n\n\t\tself.table.options.renderComplete.call(this.table);\n\t};\n\n\t//simple render on heightless table\n\n\tRowManager.prototype._simpleRender = function () {\n\n\t\tthis._clearVirtualDom();\n\n\t\tif (this.displayRowsCount) {\n\n\t\t\tthis.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\tRowManager.prototype.checkClassicModeGroupHeaderWidth = function () {\n\n\t\tvar self = this,\n\t\t element = this.tableElement,\n\t\t onlyGroupHeaders = true;\n\n\t\tself.getDisplayRows().forEach(function (row, index) {\n\n\t\t\tself.styleRow(row, index);\n\n\t\t\telement.appendChild(row.getElement());\n\n\t\t\trow.initialize(true);\n\n\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\n\t\tif (onlyGroupHeaders) {\n\n\t\t\telement.style.minWidth = self.table.columnManager.getWidth() + \"px\";\n\t\t} else {\n\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t};\n\n\t//show scrollbars on empty table div\n\n\tRowManager.prototype.renderEmptyScroll = function () {\n\n\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\n\t\tthis.tableElement.style.minHeight = \"1px\";\n\n\t\tthis.tableElement.style.visibility = \"hidden\";\n\t};\n\n\tRowManager.prototype._clearVirtualDom = function () {\n\n\t\tvar element = this.tableElement;\n\n\t\tif (this.table.options.placeholder && this.table.options.placeholder.parentNode) {\n\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\n\t\t}\n\n\t\t// element.children.detach();\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.style.paddingTop = \"\";\n\n\t\telement.style.paddingBottom = \"\";\n\n\t\telement.style.minWidth = \"\";\n\n\t\telement.style.minHeight = \"\";\n\n\t\telement.style.visibility = \"\";\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\n\t\tthis.vDomBottom = 0;\n\n\t\tthis.vDomTopPad = 0;\n\n\t\tthis.vDomBottomPad = 0;\n\t};\n\n\tRowManager.prototype.styleRow = function (row, index) {\n\n\t\tvar rowEl = row.getElement();\n\n\t\tif (index % 2) {\n\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t} else {\n\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t};\n\n\t//full virtual render\n\n\tRowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {\n\n\t\tvar self = this,\n\t\t element = self.tableElement,\n\t\t holder = self.element,\n\t\t topPad = 0,\n\t\t rowsHeight = 0,\n\t\t topPadHeight = 0,\n\t\t i = 0,\n\t\t onlyGroupHeaders = true,\n\t\t rows = self.getDisplayRows();\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif (!position) {\n\n\t\t\tself._clearVirtualDom();\n\t\t} else {\n\n\t\t\twhile (element.firstChild) {\n\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t} //check if position is too close to bottom of table\n\n\t\t\tvar heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;\n\n\t\t\tif (heightOccupied < self.height) {\n\n\t\t\t\tposition -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);\n\n\t\t\t\tif (position < 0) {\n\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\n\t\t\ttopPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);\n\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tself.vDomTop = position;\n\n\t\t\tself.vDomBottom = position - 1;\n\n\t\t\twhile ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {\n\n\t\t\t\tvar index = self.vDomBottom + 1,\n\t\t\t\t row = rows[index],\n\t\t\t\t rowHeight = 0;\n\n\t\t\t\tself.styleRow(row, index);\n\n\t\t\t\telement.appendChild(row.getElement());\n\n\t\t\t\tif (!row.initialized) {\n\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!row.heightInitialized) {\n\n\t\t\t\t\t\trow.normalizeHeight(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowHeight = row.getHeight();\n\n\t\t\t\tif (i < topPad) {\n\n\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t} else {\n\n\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (rowHeight > this.vDomWindowBuffer) {\n\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t}\n\n\t\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\t\tonlyGroupHeaders = false;\n\t\t\t\t}\n\n\t\t\t\tself.vDomBottom++;\n\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tif (!position) {\n\n\t\t\t\tthis.vDomTopPad = 0;\n\n\t\t\t\t//adjust rowheight to match average of rendered elements\n\n\t\t\t\tself.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\n\n\t\t\t\tself.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);\n\n\t\t\t\tself.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;\n\t\t\t} else {\n\n\t\t\t\tself.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;\n\n\t\t\t\tself.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\n\t\t\telement.style.paddingTop = self.vDomTopPad + \"px\";\n\n\t\t\telement.style.paddingBottom = self.vDomBottomPad + \"px\";\n\n\t\t\tif (forceMove) {\n\n\t\t\t\tthis.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\n\t\t\tif (this.element.scrollWidth > this.element.offsetWidth && forceMove) {\n\n\t\t\t\tthis.scrollTop += this.element.offsetHeight - this.element.clientHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\telement.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + \"px\" : \"\";\n\n\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\tif (self.table.modules.layout.getMode() != \"fitDataFill\" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {\n\n\t\t\t\t\tself.tableElement.style.minWidth = self.table.columnManager.getWidth();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\t//handle vertical scrolling\n\n\tRowManager.prototype.scrollVertical = function (dir) {\n\n\t\tvar topDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\tvar bottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\n\t\tif (-topDiff > margin || bottomDiff > margin) {\n\n\t\t\t//if big scroll redraw table;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tthis._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tif (dir) {\n\n\t\t\t\t//scrolling up\n\n\t\t\t\tif (topDiff < 0) {\n\n\t\t\t\t\tthis._addTopRow(-topDiff);\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff < 0) {\n\n\t\t\t\t\t//hide bottom row if needed\n\n\t\t\t\t\tif (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeBottomRow(-bottomDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//scrolling down\n\n\t\t\t\tif (topDiff >= 0) {\n\n\t\t\t\t\t//hide top row if needed\n\n\t\t\t\t\tif (this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeTopRow(topDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff >= 0) {\n\n\t\t\t\t\tthis._addBottomRow(bottomDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._addTopRow = function (topDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomTop) {\n\n\t\t\tvar index = this.vDomTop - 1,\n\t\t\t topRow = rows[index],\n\t\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide top row if needed\n\n\t\t\tif (topDiff >= topRowHeight) {\n\n\t\t\t\tthis.styleRow(topRow, index);\n\n\t\t\t\ttable.insertBefore(topRow.getElement(), table.firstChild);\n\n\t\t\t\tif (!topRow.initialized || !topRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomTopNewRows.push(topRow);\n\n\t\t\t\t\tif (!topRow.heightInitialized) {\n\n\t\t\t\t\t\ttopRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttopRow.initialize();\n\n\t\t\t\tthis.vDomTopPad -= topRowHeight;\n\n\t\t\t\tif (this.vDomTopPad < 0) {\n\n\t\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (!index) {\n\n\t\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosTop -= topRowHeight;\n\n\t\t\t\tthis.vDomTop--;\n\t\t\t}\n\n\t\t\ttopDiff = -(this.scrollTop - this.vDomScrollPosTop);\n\n\t\t\tif (topRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = topRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addTopRow(topDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomTopNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeTopRow = function (topDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t topRow = this.getDisplayRows()[this.vDomTop],\n\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (topDiff >= topRowHeight) {\n\n\t\t\tvar rowEl = topRow.getElement();\n\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.vDomTopPad += topRowHeight;\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;\n\n\t\t\tthis.vDomTop++;\n\n\t\t\ttopDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\t\tthis._removeTopRow(topDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._addBottomRow = function (bottomDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomBottom < this.displayRowsCount - 1) {\n\n\t\t\tvar index = this.vDomBottom + 1,\n\t\t\t bottomRow = rows[index],\n\t\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide bottom row if needed\n\n\t\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\t\tthis.styleRow(bottomRow, index);\n\n\t\t\t\ttable.appendChild(bottomRow.getElement());\n\n\t\t\t\tif (!bottomRow.initialized || !bottomRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomBottomNewRows.push(bottomRow);\n\n\t\t\t\t\tif (!bottomRow.heightInitialized) {\n\n\t\t\t\t\t\tbottomRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbottomRow.initialize();\n\n\t\t\t\tthis.vDomBottomPad -= bottomRowHeight;\n\n\t\t\t\tif (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {\n\n\t\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosBottom += bottomRowHeight;\n\n\t\t\t\tthis.vDomBottom++;\n\t\t\t}\n\n\t\t\tbottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\t\tif (bottomRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = bottomRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addBottomRow(bottomDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomBottomNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeBottomRow = function (bottomDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t bottomRow = this.getDisplayRows()[this.vDomBottom],\n\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\tvar rowEl = bottomRow.getElement();\n\n\t\t\tif (rowEl.parentNode) {\n\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.vDomBottomPad += bottomRowHeight;\n\n\t\t\tif (this.vDomBottomPad < 0) {\n\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\tthis.vDomScrollPosBottom -= bottomRowHeight;\n\n\t\t\tthis.vDomBottom--;\n\n\t\t\tbottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);\n\n\t\t\tthis._removeBottomRow(bottomDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._quickNormalizeRowHeight = function (rows) {\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\n\t\trows.length = 0;\n\t};\n\n\t//normalize height of active rows\n\n\tRowManager.prototype.normalizeHeight = function () {\n\n\t\tthis.activeRows.forEach(function (row) {\n\n\t\t\trow.normalizeHeight();\n\t\t});\n\t};\n\n\t//adjust the height of the table holder to fit in the Tabulator element\n\n\tRowManager.prototype.adjustTableSize = function () {\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tthis.height = this.element.clientHeight;\n\n\t\t\tthis.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;\n\n\t\t\tvar otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);\n\n\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t}\n\t};\n\n\t//renitialize all rows\n\n\tRowManager.prototype.reinitialize = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.reinitialize();\n\t\t});\n\t};\n\n\t//redraw table\n\n\tRowManager.prototype.redraw = function (force) {\n\n\t\tvar pos = 0,\n\t\t left = this.scrollLeft;\n\n\t\tthis.adjustTableSize();\n\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\n\t\tif (!force) {\n\n\t\t\tif (self.renderMode == \"classic\") {\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.refreshActiveData(\"group\", false, false);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._simpleRender();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tthis.reRenderInPosition();\n\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t}\n\n\t\t\tif (!this.displayRowsCount) {\n\n\t\t\t\tif (this.table.options.placeholder) {\n\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\t\t}\n\t};\n\n\tRowManager.prototype.resetScroll = function () {\n\n\t\tthis.element.scrollLeft = 0;\n\n\t\tthis.element.scrollTop = 0;\n\n\t\tif (this.table.browser === \"ie\") {\n\n\t\t\tvar event = document.createEvent(\"Event\");\n\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\n\t\t\tthis.element.dispatchEvent(event);\n\t\t} else {\n\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t};\n\n\t//public row object\n\n\tvar RowComponent = function RowComponent(row) {\n\n\t\tthis._row = row;\n\t};\n\n\tRowComponent.prototype.getData = function (transform) {\n\n\t\treturn this._row.getData(transform);\n\t};\n\n\tRowComponent.prototype.getElement = function () {\n\n\t\treturn this._row.getElement();\n\t};\n\n\tRowComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tRowComponent.prototype.getCell = function (column) {\n\n\t\tvar cell = this._row.getCell(column);\n\n\t\treturn cell ? cell.getComponent() : false;\n\t};\n\n\tRowComponent.prototype.getIndex = function () {\n\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t};\n\n\tRowComponent.prototype.getPosition = function (active) {\n\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\n\t};\n\n\tRowComponent.prototype.delete = function () {\n\n\t\treturn this._row.delete();\n\t};\n\n\tRowComponent.prototype.scrollTo = function () {\n\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\n\t};\n\n\tRowComponent.prototype.pageTo = function () {\n\n\t\tif (this._row.table.modExists(\"page\", true)) {\n\n\t\t\treturn this._row.table.modules.page.setPageToRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.move = function (to, after) {\n\n\t\tthis._row.moveToRow(to, after);\n\t};\n\n\tRowComponent.prototype.update = function (data) {\n\n\t\treturn this._row.updateData(data);\n\t};\n\n\tRowComponent.prototype.normalizeHeight = function () {\n\n\t\tthis._row.normalizeHeight(true);\n\t};\n\n\tRowComponent.prototype.select = function () {\n\n\t\tthis._row.table.modules.selectRow.selectRows(this._row);\n\t};\n\n\tRowComponent.prototype.deselect = function () {\n\n\t\tthis._row.table.modules.selectRow.deselectRows(this._row);\n\t};\n\n\tRowComponent.prototype.toggleSelect = function () {\n\n\t\tthis._row.table.modules.selectRow.toggleRow(this._row);\n\t};\n\n\tRowComponent.prototype.isSelected = function () {\n\n\t\treturn this._row.table.modules.selectRow.isRowSelected(this._row);\n\t};\n\n\tRowComponent.prototype._getSelf = function () {\n\n\t\treturn this._row;\n\t};\n\n\tRowComponent.prototype.freeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.freezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.unfreeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.unfreezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeCollapse = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.collapseRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeExpand = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.expandRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeToggle = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.toggleRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.getTreeParent = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeParent(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.getTreeChildren = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeChildren(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.reformat = function () {\n\n\t\treturn this._row.reinitialize();\n\t};\n\n\tRowComponent.prototype.getGroup = function () {\n\n\t\treturn this._row.getGroup().getComponent();\n\t};\n\n\tRowComponent.prototype.getTable = function () {\n\n\t\treturn this._row.table;\n\t};\n\n\tRowComponent.prototype.getNextRow = function () {\n\n\t\tvar row = this._row.nextRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tRowComponent.prototype.getPrevRow = function () {\n\n\t\tvar row = this._row.prevRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tvar Row = function Row(data, parent) {\n\n\t\tthis.table = parent.table;\n\n\t\tthis.parent = parent;\n\n\t\tthis.data = {};\n\n\t\tthis.type = \"row\"; //type of element\n\n\t\tthis.element = this.createElement();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.cells = [];\n\n\t\tthis.height = 0; //hold element height\n\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\n\n\t\tthis.manualHeight = false; //user has manually set row height\n\n\t\tthis.outerHeight = 0; //holde lements outer height\n\n\t\tthis.initialized = false; //element has been rendered\n\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\n\n\t\tthis.setData(data);\n\n\t\tthis.generateElement();\n\t};\n\n\tRow.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\n\t\tel.setAttribute(\"role\", \"row\");\n\n\t\treturn el;\n\t};\n\n\tRow.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tRow.prototype.detachElement = function () {\n\n\t\tif (this.element && this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.generateElement = function () {\n\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//set row selection characteristics\n\n\t\tif (self.table.options.selectable !== false && self.table.modExists(\"selectRow\")) {\n\n\t\t\tself.table.modules.selectRow.initializeRow(this);\n\t\t}\n\n\t\t//setup movable rows\n\n\t\tif (self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeRow(this);\n\t\t}\n\n\t\t//setup data tree\n\n\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\")) {\n\n\t\t\tself.table.modules.dataTree.initializeRow(this);\n\t\t}\n\n\t\t//handle row click events\n\n\t\tif (self.table.options.rowClick) {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\n\t\t\t\tself.table.options.rowClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblClick) {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tself.table.options.rowDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowContext) {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tself.table.options.rowContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//handle mouse events\n\n\t\tif (self.table.options.rowMouseEnter) {\n\n\t\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseEnter(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseLeave) {\n\n\t\t\tself.element.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseLeave(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOver) {\n\n\t\t\tself.element.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOver(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOut) {\n\n\t\t\tself.element.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOut(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseMove) {\n\n\t\t\tself.element.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseMove(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tself.table.options.rowTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.table.options.rowDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tself.table.options.rowTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\tRow.prototype.generateCells = function () {\n\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t};\n\n\t//functions to setup on first render\n\n\tRow.prototype.initialize = function (force) {\n\n\t\tvar self = this;\n\n\t\tif (!self.initialized || force) {\n\n\t\t\tself.deleteCells();\n\n\t\t\twhile (self.element.firstChild) {\n\t\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t\t} //handle frozen cells\n\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\t\tthis.table.modules.frozenColumns.layoutRow(this);\n\t\t\t}\n\n\t\t\tthis.generateCells();\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tself.element.appendChild(cell.getElement());\n\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\n\t\t\tif (force) {\n\n\t\t\t\tself.normalizeHeight();\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\n\t\t\t\tself.table.modules.dataTree.layoutRow(this);\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.responsiveLayout === \"collapse\" && self.table.modExists(\"responsiveLayout\")) {\n\n\t\t\t\tself.table.modules.responsiveLayout.layoutRow(this);\n\t\t\t}\n\n\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t}\n\n\t\t\t//set resizable handles\n\n\t\t\tif (self.table.options.resizableRows && self.table.modExists(\"resizeRows\")) {\n\n\t\t\t\tself.table.modules.resizeRows.initializeRow(self);\n\t\t\t}\n\n\t\t\tself.initialized = true;\n\t\t}\n\t};\n\n\tRow.prototype.reinitializeHeight = function () {\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t};\n\n\tRow.prototype.reinitialize = function () {\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (!this.manualHeight) {\n\n\t\t\tthis.height = 0;\n\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\t//get heights when doing bulk row style calcs in virtual DOM\n\n\tRow.prototype.calcHeight = function (force) {\n\n\t\tvar maxHeight = 0,\n\t\t minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tvar height = cell.getHeight();\n\n\t\t\tif (height > maxHeight) {\n\n\t\t\t\tmaxHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tif (force) {\n\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t} else {\n\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t}\n\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t};\n\n\t//set of cells\n\n\tRow.prototype.setCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setHeight();\n\t\t});\n\n\t\tthis.heightInitialized = true;\n\t};\n\n\tRow.prototype.clearCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.clearHeight();\n\t\t});\n\t};\n\n\t//normalize the height of elements in the row\n\n\tRow.prototype.normalizeHeight = function (force) {\n\n\t\tif (force) {\n\n\t\t\tthis.clearCellHeight();\n\t\t}\n\n\t\tthis.calcHeight(force);\n\n\t\tthis.setCellHeight();\n\t};\n\n\t// Row.prototype.setHeight = function(height){\n\n\t// \tthis.height = height;\n\n\n\t// \tthis.setCellHeight();\n\n\t// };\n\n\n\t//set height of rows\n\n\tRow.prototype.setHeight = function (height, force) {\n\n\t\tif (this.height != height || force) {\n\n\t\t\tthis.manualHeight = true;\n\n\t\t\tthis.height = height;\n\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\n\t\t\tthis.setCellHeight();\n\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\n\tRow.prototype.getHeight = function () {\n\n\t\treturn this.outerHeight;\n\t};\n\n\t//return rows outer Width\n\n\tRow.prototype.getWidth = function () {\n\n\t\treturn this.element.offsetWidth;\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tRow.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\t//////////////// Data Management /////////////////\n\n\n\tRow.prototype.setData = function (data) {\n\n\t\tif (this.table.modExists(\"mutator\")) {\n\n\t\t\tdata = this.table.modules.mutator.transformRow(data, \"data\");\n\t\t}\n\n\t\tthis.data = data;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.table.modules.reactiveData.watchRow(this);\n\t\t}\n\t};\n\n\t//update the rows data\n\n\tRow.prototype.updateData = function (data) {\n\t\tvar _this6 = this;\n\n\t\tvar self = this,\n\t\t visible = Tabulator.prototype.helpers.elVisible(this.element);\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.block();\n\t\t\t}\n\n\t\t\t//mutate incomming data if needed\n\n\t\t\tif (self.table.modExists(\"mutator\")) {\n\n\t\t\t\tdata = self.table.modules.mutator.transformRow(data, \"data\", true);\n\t\t\t}\n\n\t\t\t//set data\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tself.data[attrname] = data[attrname];\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.unblock();\n\t\t\t}\n\n\t\t\t//update affected cells only\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tvar cell = _this6.getCell(attrname);\n\n\t\t\t\tif (cell) {\n\n\t\t\t\t\tif (cell.getValue() != data[attrname]) {\n\n\t\t\t\t\t\tcell.setValueProcessData(data[attrname]);\n\n\t\t\t\t\t\tif (visible) {\n\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Partial reinitialization if visible\n\n\t\t\tif (visible) {\n\n\t\t\t\tself.normalizeHeight();\n\n\t\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t_this6.initialized = false;\n\n\t\t\t\t_this6.height = 0;\n\n\t\t\t\t_this6.heightStyled = \"\";\n\t\t\t}\n\n\t\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\") && typeof data[_this6.table.modules.dataTree.getChildField()] !== \"undefined\") {\n\n\t\t\t\t_this6.table.modules.dataTree.initializeRow(_this6);\n\n\t\t\t\t_this6.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t\t\t}\n\n\t\t\t//self.reinitialize();\n\n\n\t\t\tself.table.options.rowUpdated.call(_this6.table, self.getComponent());\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.getData = function (transform) {\n\n\t\tvar self = this;\n\n\t\tif (transform) {\n\n\t\t\tif (self.table.modExists(\"accessor\")) {\n\n\t\t\t\treturn self.table.modules.accessor.transformRow(self.data, transform);\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn this.data;\n\t\t}\n\t};\n\n\tRow.prototype.getCell = function (column) {\n\n\t\tvar match = false;\n\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\n\t\tmatch = this.cells.find(function (cell) {\n\n\t\t\treturn cell.column === column;\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tRow.prototype.getCellIndex = function (findCell) {\n\n\t\treturn this.cells.findIndex(function (cell) {\n\n\t\t\treturn cell === findCell;\n\t\t});\n\t};\n\n\tRow.prototype.findNextEditableCell = function (index) {\n\n\t\tvar nextCell = false;\n\n\t\tif (index < this.cells.length - 1) {\n\n\t\t\tfor (var i = index + 1; i < this.cells.length; i++) {\n\n\t\t\t\tvar cell = this.cells[i];\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tvar allowEdit = true;\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tnextCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nextCell;\n\t};\n\n\tRow.prototype.findPrevEditableCell = function (index) {\n\n\t\tvar prevCell = false;\n\n\t\tif (index > 0) {\n\n\t\t\tfor (var i = index - 1; i >= 0; i--) {\n\n\t\t\t\tvar cell = this.cells[i],\n\t\t\t\t allowEdit = true;\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tprevCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn prevCell;\n\t};\n\n\tRow.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\tRow.prototype.nextRow = function () {\n\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.prevRow = function () {\n\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.moveToRow = function (to, before) {\n\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\n\t\tif (toRow) {\n\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t};\n\n\t///////////////////// Actions /////////////////////\n\n\n\tRow.prototype.delete = function () {\n\t\tvar _this7 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar index = _this7.table.rowManager.getRowIndex(_this7);\n\n\t\t\t_this7.deleteActual();\n\n\t\t\tif (_this7.table.options.history && _this7.table.modExists(\"history\")) {\n\n\t\t\t\tif (index) {\n\n\t\t\t\t\tindex = _this7.table.rowManager.rows[index - 1];\n\t\t\t\t}\n\n\t\t\t\t_this7.table.modules.history.action(\"rowDelete\", _this7, { data: _this7.getData(), pos: !index, index: index });\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.deleteActual = function (blockRedraw) {\n\n\t\tvar index = this.table.rowManager.getRowIndex(this);\n\n\t\t//deselect row if it is selected\n\n\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\tthis.table.modules.selectRow._deselectRow(this, true);\n\t\t}\n\n\t\t// if(this.table.options.dataTree && this.table.modExists(\"dataTree\")){\n\n\t\t// \tthis.table.modules.dataTree.collapseRow(this, true);\n\n\t\t// }\n\n\n\t\t//remove any reactive data watchers from row object\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {}\n\n\t\t// this.table.modules.reactiveData.unwatchRow(this);\n\n\t\t//remove from group\n\n\t\tif (this.modules.group) {\n\n\t\t\tthis.modules.group.removeRow(this);\n\t\t}\n\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\n\t\tthis.deleteCells();\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\t//recalc column calculations if present\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this);\n\t\t\t} else {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRow.prototype.deleteCells = function () {\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t};\n\n\tRow.prototype.wipe = function () {\n\n\t\tthis.deleteCells();\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}this.element = false;\n\n\t\tthis.modules = {};\n\n\t\tif (this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.getGroup = function () {\n\n\t\treturn this.modules.group || false;\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tRow.prototype.getComponent = function () {\n\n\t\treturn new RowComponent(this);\n\t};\n\n\t//public row object\n\n\tvar CellComponent = function CellComponent(cell) {\n\n\t\tthis._cell = cell;\n\t};\n\n\tCellComponent.prototype.getValue = function () {\n\n\t\treturn this._cell.getValue();\n\t};\n\n\tCellComponent.prototype.getOldValue = function () {\n\n\t\treturn this._cell.getOldValue();\n\t};\n\n\tCellComponent.prototype.getElement = function () {\n\n\t\treturn this._cell.getElement();\n\t};\n\n\tCellComponent.prototype.getRow = function () {\n\n\t\treturn this._cell.row.getComponent();\n\t};\n\n\tCellComponent.prototype.getData = function () {\n\n\t\treturn this._cell.row.getData();\n\t};\n\n\tCellComponent.prototype.getField = function () {\n\n\t\treturn this._cell.column.getField();\n\t};\n\n\tCellComponent.prototype.getColumn = function () {\n\n\t\treturn this._cell.column.getComponent();\n\t};\n\n\tCellComponent.prototype.setValue = function (value, mutate) {\n\n\t\tif (typeof mutate == \"undefined\") {\n\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t};\n\n\tCellComponent.prototype.restoreOldValue = function () {\n\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t};\n\n\tCellComponent.prototype.edit = function (force) {\n\n\t\treturn this._cell.edit(force);\n\t};\n\n\tCellComponent.prototype.cancelEdit = function () {\n\n\t\tthis._cell.cancelEdit();\n\t};\n\n\tCellComponent.prototype.nav = function () {\n\n\t\treturn this._cell.nav();\n\t};\n\n\tCellComponent.prototype.checkHeight = function () {\n\n\t\tthis._cell.checkHeight();\n\t};\n\n\tCellComponent.prototype.getTable = function () {\n\n\t\treturn this._cell.table;\n\t};\n\n\tCellComponent.prototype._getSelf = function () {\n\n\t\treturn this._cell;\n\t};\n\n\tvar Cell = function Cell(column, row) {\n\n\t\tthis.table = column.table;\n\n\t\tthis.column = column;\n\n\t\tthis.row = row;\n\n\t\tthis.element = null;\n\n\t\tthis.value = null;\n\n\t\tthis.oldValue = null;\n\n\t\tthis.height = null;\n\n\t\tthis.width = null;\n\n\t\tthis.minWidth = null;\n\n\t\tthis.build();\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\t//generate element\n\n\tCell.prototype.build = function () {\n\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\t};\n\n\tCell.prototype.generateElement = function () {\n\n\t\tthis.element = document.createElement('div');\n\n\t\tthis.element.className = \"tabulator-cell\";\n\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\n\t\tthis.element = this.element;\n\t};\n\n\tCell.prototype._configureCell = function () {\n\n\t\tvar self = this,\n\t\t cellEvents = self.column.cellEvents,\n\t\t element = self.element,\n\t\t field = this.column.getField();\n\n\t\t//set text alignment\n\n\t\telement.style.textAlign = self.column.hozAlign;\n\n\t\tif (field) {\n\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\n\t\tif (self.column.definition.cssClass) {\n\n\t\t\tvar classNames = self.column.definition.cssClass.split(\" \");\n\n\t\t\tclassNames.forEach(function (className) {\n\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\t//update tooltip on mouse enter\n\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\") {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself._generateTooltip();\n\t\t\t});\n\t\t}\n\n\t\tself._bindClickEvents(cellEvents);\n\n\t\tself._bindTouchEvents(cellEvents);\n\n\t\tself._bindMouseEvents(cellEvents);\n\n\t\tif (self.column.modules.edit) {\n\n\t\t\tself.table.modules.edit.bindEditor(self);\n\t\t}\n\n\t\tif (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeCell(self);\n\t\t}\n\n\t\t//hide cell if not visible\n\n\t\tif (!self.column.visible) {\n\n\t\t\tself.hide();\n\t\t}\n\t};\n\n\tCell.prototype._bindClickEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\t//set event bindings\n\n\t\tif (cellEvents.cellClick || self.table.options.cellClick) {\n\n\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellClick) {\n\n\t\t\t\t\tcellEvents.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellClick) {\n\n\t\t\t\t\tself.table.options.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblClick || this.table.options.cellDblClick) {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellDblClick) {\n\n\t\t\t\t\tcellEvents.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellDblClick) {\n\n\t\t\t\t\tself.table.options.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// IE\n\n\t\t\t\t\tvar range = document.body.createTextRange();\n\n\t\t\t\t\trange.moveToElementText(self.element);\n\n\t\t\t\t\trange.select();\n\t\t\t\t} else if (window.getSelection) {\n\n\t\t\t\t\tvar range = document.createRange();\n\n\t\t\t\t\trange.selectNode(self.element);\n\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\n\t\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellContext || this.table.options.cellContext) {\n\n\t\t\telement.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellContext) {\n\n\t\t\t\t\tcellEvents.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellContext) {\n\n\t\t\t\t\tself.table.options.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindMouseEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\tif (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseEnter) {\n\n\t\t\t\t\tcellEvents.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseEnter) {\n\n\t\t\t\t\tself.table.options.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {\n\n\t\t\telement.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseLeave) {\n\n\t\t\t\t\tcellEvents.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseLeave) {\n\n\t\t\t\t\tself.table.options.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {\n\n\t\t\telement.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOver) {\n\n\t\t\t\t\tcellEvents.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOver) {\n\n\t\t\t\t\tself.table.options.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {\n\n\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOut) {\n\n\t\t\t\t\tcellEvents.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOut) {\n\n\t\t\t\t\tself.table.options.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseMove) {\n\n\t\t\t\t\tcellEvents.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseMove) {\n\n\t\t\t\t\tself.table.options.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindTouchEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\tif (cellEvents.cellTap || this.table.options.cellTap) {\n\n\t\t\ttap = false;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTap) {\n\n\t\t\t\t\t\tcellEvents.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTap) {\n\n\t\t\t\t\t\tself.table.options.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblTap || this.table.options.cellDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellDblTap) {\n\n\t\t\t\t\t\tcellEvents.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellDblTap) {\n\n\t\t\t\t\t\tself.table.options.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellTapHold || this.table.options.cellTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTapHold) {\n\n\t\t\t\t\t\tcellEvents.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTapHold) {\n\n\t\t\t\t\t\tself.table.options.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\t//generate cell contents\n\n\tCell.prototype._generateContents = function () {\n\n\t\tvar val;\n\n\t\tif (this.table.modExists(\"format\")) {\n\n\t\t\tval = this.table.modules.format.formatValue(this);\n\t\t} else {\n\n\t\t\tval = this.element.innerHTML = this.value;\n\t\t}\n\n\t\tswitch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {\n\n\t\t\tcase \"object\":\n\n\t\t\t\tif (val instanceof Node) {\n\n\t\t\t\t\t//clear previous cell contents\n\n\t\t\t\t\twhile (this.element.firstChild) {\n\t\t\t\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t\t\t\t}this.element.appendChild(val);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif (val != null) {\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"undefined\":\n\n\t\t\tcase \"null\":\n\n\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tthis.element.innerHTML = val;\n\n\t\t}\n\t};\n\n\tCell.prototype.cellRendered = function () {\n\n\t\tif (this.table.modExists(\"format\") && this.table.modules.format.cellRendered) {\n\n\t\t\tthis.table.modules.format.cellRendered(this);\n\t\t}\n\t};\n\n\t//generate tooltip text\n\n\tCell.prototype._generateTooltip = function () {\n\n\t\tvar tooltip = this.column.tooltip;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\ttooltip = this.value;\n\t\t\t} else if (typeof tooltip == \"function\") {\n\n\t\t\t\ttooltip = tooltip(this.getComponent());\n\n\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\ttooltip = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof tooltip === \"undefined\") {\n\n\t\t\t\ttooltip = \"\";\n\t\t\t}\n\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\n\t\t} else {\n\n\t\t\tthis.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//////////////////// Getters ////////////////////\n\n\tCell.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tCell.prototype.getValue = function () {\n\n\t\treturn this.value;\n\t};\n\n\tCell.prototype.getOldValue = function () {\n\n\t\treturn this.oldValue;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tCell.prototype.setValue = function (value, mutate) {\n\n\t\tvar changed = this.setValueProcessData(value, mutate),\n\t\t component;\n\n\t\tif (changed) {\n\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\t\tthis.table.modules.history.action(\"cellEdit\", this, { oldValue: this.oldValue, newValue: this.value });\n\t\t\t}\n\n\t\t\tcomponent = this.getComponent();\n\n\t\t\tif (this.column.cellEvents.cellEdited) {\n\n\t\t\t\tthis.column.cellEvents.cellEdited.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEdited.call(this.table, component);\n\n\t\t\tthis.table.options.dataEdited.call(this.table, this.table.rowManager.getData());\n\t\t}\n\t};\n\n\tCell.prototype.setValueProcessData = function (value, mutate) {\n\n\t\tvar changed = false;\n\n\t\tif (this.value != value) {\n\n\t\t\tchanged = true;\n\n\t\t\tif (mutate) {\n\n\t\t\t\tif (this.column.modules.mutate) {\n\n\t\t\t\t\tvalue = this.table.modules.mutator.transformCell(this, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif (changed && this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.column.definition.topCalc || this.column.definition.bottomCalc) {\n\n\t\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\t\tif (this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnCalcs != \"table\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this.row);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t};\n\n\tCell.prototype.setValueActual = function (value) {\n\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.block();\n\t\t}\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.unblock();\n\t\t}\n\n\t\tthis._generateContents();\n\n\t\tthis._generateTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (this.table.options.resizableColumns && this.table.modExists(\"resizeColumns\")) {\n\n\t\t\tthis.table.modules.resizeColumns.initializeColumn(\"cell\", this.column, this.element);\n\t\t}\n\n\t\t//handle frozen cells\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layoutElement(this.element, this.column);\n\t\t}\n\t};\n\n\tCell.prototype.setWidth = function () {\n\n\t\tthis.width = this.column.width;\n\n\t\tthis.element.style.width = this.column.widthStyled;\n\t};\n\n\tCell.prototype.clearWidth = function () {\n\n\t\tthis.width = \"\";\n\n\t\tthis.element.style.width = \"\";\n\t};\n\n\tCell.prototype.getWidth = function () {\n\n\t\treturn this.width || this.element.offsetWidth;\n\t};\n\n\tCell.prototype.setMinWidth = function () {\n\n\t\tthis.minWidth = this.column.minWidth;\n\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t};\n\n\tCell.prototype.checkHeight = function () {\n\n\t\t// var height = this.element.css(\"height\");\n\n\t\tthis.row.reinitializeHeight();\n\t};\n\n\tCell.prototype.clearHeight = function () {\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.height = null;\n\t};\n\n\tCell.prototype.setHeight = function () {\n\n\t\tthis.height = this.row.height;\n\n\t\tthis.element.style.height = this.row.heightStyled;\n\t};\n\n\tCell.prototype.getHeight = function () {\n\n\t\treturn this.height || this.element.offsetHeight;\n\t};\n\n\tCell.prototype.show = function () {\n\n\t\tthis.element.style.display = \"\";\n\t};\n\n\tCell.prototype.hide = function () {\n\n\t\tthis.element.style.display = \"none\";\n\t};\n\n\tCell.prototype.edit = function (force) {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\treturn this.table.modules.edit.editCell(this, force);\n\t\t}\n\t};\n\n\tCell.prototype.cancelEdit = function () {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\tvar editing = this.table.modules.edit.getCurrentCell();\n\n\t\t\tif (editing && editing._getSelf() === this) {\n\n\t\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t\t}\n\t\t}\n\t};\n\n\tCell.prototype.delete = function () {\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.element = false;\n\n\t\tthis.column.deleteCell(this);\n\n\t\tthis.row.deleteCell(this);\n\n\t\tthis.calcs = {};\n\t};\n\n\t//////////////// Navigation /////////////////\n\n\n\tCell.prototype.nav = function () {\n\n\t\tvar self = this,\n\t\t nextCell = false,\n\t\t index = this.row.getCellIndex(this);\n\n\t\treturn {\n\n\t\t\tnext: function next() {\n\n\t\t\t\tvar nextCell = this.right(),\n\t\t\t\t nextRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tnextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\t\tif (nextRow) {\n\n\t\t\t\t\t\tnextCell = nextRow.findNextEditableCell(-1);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tprev: function prev() {\n\n\t\t\t\tvar nextCell = this.left(),\n\t\t\t\t prevRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tprevRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\t\tif (prevRow) {\n\n\t\t\t\t\t\tnextCell = prevRow.findPrevEditableCell(prevRow.cells.length);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tleft: function left() {\n\n\t\t\t\tnextCell = self.row.findPrevEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tright: function right() {\n\n\t\t\t\tnextCell = self.row.findNextEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tup: function up() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tdown: function down() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\t};\n\n\tCell.prototype.getIndex = function () {\n\n\t\tthis.row.getCellIndex(this);\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tCell.prototype.getComponent = function () {\n\n\t\treturn new CellComponent(this);\n\t};\n\n\tvar FooterManager = function FooterManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.active = false;\n\n\t\tthis.element = this.createElement(); //containing element\n\n\t\tthis.external = false;\n\n\t\tthis.links = [];\n\n\t\tthis._initialize();\n\t};\n\n\tFooterManager.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t};\n\n\tFooterManager.prototype._initialize = function (element) {\n\n\t\tif (this.table.options.footerElement) {\n\n\t\t\tswitch (_typeof(this.table.options.footerElement)) {\n\n\t\t\t\tcase \"string\":\n\n\t\t\t\t\tif (this.table.options.footerElement[0] === \"<\") {\n\n\t\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.external = true;\n\n\t\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t};\n\n\tFooterManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tFooterManager.prototype.append = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.appendChild(element);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.prepend = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.remove = function (element) {\n\n\t\telement.parentNode.removeChild(element);\n\n\t\tthis.deactivate();\n\t};\n\n\tFooterManager.prototype.deactivate = function (force) {\n\n\t\tif (!this.element.firstChild || force) {\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.active = false;\n\t\t}\n\n\t\t// this.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.activate = function (parent) {\n\n\t\tif (!this.active) {\n\n\t\t\tthis.active = true;\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\n\t\tif (parent) {\n\n\t\t\tthis.links.push(parent);\n\t\t}\n\t};\n\n\tFooterManager.prototype.redraw = function () {\n\n\t\tthis.links.forEach(function (link) {\n\n\t\t\tlink.footerRedraw();\n\t\t});\n\t};\n\n\tvar Tabulator = function Tabulator(element, options) {\n\n\t\tthis.options = {};\n\n\t\tthis.columnManager = null; // hold Column Manager\n\n\t\tthis.rowManager = null; //hold Row Manager\n\n\t\tthis.footerManager = null; //holder Footer Manager\n\n\t\tthis.browser = \"\"; //hold current browser type\n\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\n\n\t\tthis.modules = {}; //hold all modules bound to this table\n\n\n\t\tthis.initializeElement(element);\n\n\t\tthis.initializeOptions(options || {});\n\n\t\tthis._create();\n\n\t\tTabulator.prototype.comms.register(this); //register table for inderdevice communication\n\t};\n\n\t//default setup options\n\n\tTabulator.prototype.defaultOptions = {\n\n\t\theight: false, //height of tabulator\n\n\n\t\tlayout: \"fitData\", ///layout type \"fitColumns\" | \"fitData\"\n\n\t\tlayoutColumnsOnNewData: false, //update column widths on setData\n\n\n\t\tcolumnMinWidth: 40, //minimum global width for a column\n\n\t\tcolumnVertAlign: \"top\", //vertical alignment of column headers\n\n\n\t\tresizableColumns: true, //resizable columns\n\n\t\tresizableRows: false, //resizable rows\n\n\t\tautoResize: true, //auto resize table\n\n\n\t\tcolumns: [], //store for colum header info\n\n\n\t\tdata: [], //default starting data\n\n\n\t\tautoColumns: false, //build columns from data row structure\n\n\n\t\treactiveData: false, //enable data reactivity\n\n\n\t\tnestedFieldSeparator: \".\", //seperatpr for nested data\n\n\n\t\ttooltips: false, //Tool tip value\n\n\t\ttooltipsHeader: false, //Tool tip for headers\n\n\t\ttooltipGenerationMode: \"load\", //when to generate tooltips\n\n\n\t\tinitialSort: false, //initial sorting criteria\n\n\t\tinitialFilter: false, //initial filtering criteria\n\n\t\tinitialHeaderFilter: false, //initial header filtering criteria\n\n\n\t\tcolumnHeaderSortMulti: true, //multiple or single column sorting\n\n\n\t\tsortOrderReverse: false, //reverse internal sort ordering\n\n\n\t\tfooterElement: false, //hold footer element\n\n\n\t\tindex: \"id\", //filed for row index\n\n\n\t\tkeybindings: [], //array for keybindings\n\n\n\t\tclipboard: false, //enable clipboard\n\n\t\tclipboardCopyStyled: true, //formatted table data\n\n\t\tclipboardCopySelector: \"active\", //method of chosing which data is coppied to the clipboard\n\n\t\tclipboardCopyFormatter: \"table\", //convert data to a clipboard string\n\n\t\tclipboardPasteParser: \"table\", //convert pasted clipboard data to rows\n\n\t\tclipboardPasteAction: \"insert\", //how to insert pasted data into the table\n\n\t\tclipboardCopyConfig: false, //clipboard config\n\n\n\t\tclipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard\n\n\t\tclipboardPasted: function clipboardPasted() {}, //data has been pasted into the table\n\n\t\tclipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table\n\n\n\t\tdownloadDataFormatter: false, //function to manipulate table data before it is downloaded\n\n\t\tdownloadReady: function downloadReady(data, blob) {\n\t\t\treturn blob;\n\t\t}, //function to manipulate download data\n\n\t\tdownloadComplete: false, //function to manipulate download data\n\n\t\tdownloadConfig: false, //download config\n\n\n\t\tdataTree: false, //enable data tree\n\n\t\tdataTreeElementColumn: false,\n\n\t\tdataTreeBranchElement: true, //show data tree branch element\n\n\t\tdataTreeChildIndent: 9, //data tree child indent in px\n\n\t\tdataTreeChildField: \"_children\", //data tre column field to look for child rows\n\n\t\tdataTreeCollapseElement: false, //data tree row collapse element\n\n\t\tdataTreeExpandElement: false, //data tree row expand element\n\n\t\tdataTreeStartExpanded: false,\n\n\t\tdataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded\n\n\t\tdataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed\n\n\n\t\tprintAsHtml: false, //enable print as html\n\n\t\tprintFormatter: false, //printing page formatter\n\n\t\tprintHeader: false, //page header contents\n\n\t\tprintFooter: false, //page footer contents\n\n\t\tprintCopyStyle: true, //enable print as html styling\n\n\t\tprintVisibleRows: true, //restrict print to visible rows only\n\n\t\tprintConfig: {}, //print config options\n\n\n\t\taddRowPos: \"bottom\", //position to insert blank rows, top|bottom\n\n\n\t\tselectable: \"highlight\", //highlight rows on hover\n\n\t\tselectableRangeMode: \"drag\", //highlight rows on hover\n\n\t\tselectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached\n\n\t\tselectablePersistence: true, // maintain selection when table view is updated\n\n\t\tselectableCheck: function selectableCheck(data, row) {\n\t\t\treturn true;\n\t\t}, //check wheather row is selectable\n\n\n\t\theaderFilterPlaceholder: false, //placeholder text to display in header filters\n\n\n\t\theaderVisible: true, //hide header\n\n\n\t\thistory: false, //enable edit history\n\n\n\t\tlocale: false, //current system language\n\n\t\tlangs: {},\n\n\t\tvirtualDom: true, //enable DOM virtualization\n\n\t\tvirtualDomBuffer: 0, // set virtual DOM buffer size\n\n\n\t\tpersistentLayout: false, //store column layout in memory\n\n\t\tpersistentSort: false, //store sorting in memory\n\n\t\tpersistentFilter: false, //store filters in memory\n\n\t\tpersistenceID: \"\", //key for persistent storage\n\n\t\tpersistenceMode: true, //mode for storing persistence information\n\n\n\t\tresponsiveLayout: false, //responsive layout flags\n\n\t\tresponsiveLayoutCollapseStartOpen: true, //start showing collapsed data\n\n\t\tresponsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter\n\n\t\tresponsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter\n\n\n\t\tpagination: false, //set pagination type\n\n\t\tpaginationSize: false, //set number of rows to a page\n\n\t\tpaginationButtonCount: 5, // set count of page button\n\n\t\tpaginationSizeSelector: false, //add pagination size selector element\n\n\t\tpaginationElement: false, //element to hold pagination numbers\n\n\t\tpaginationDataSent: {}, //pagination data sent to the server\n\n\t\tpaginationDataReceived: {}, //pagination data received from the server\n\n\t\tpaginationAddRow: \"page\", //add rows on table or page\n\n\n\t\tajaxURL: false, //url for ajax loading\n\n\t\tajaxURLGenerator: false,\n\n\t\tajaxParams: {}, //params for ajax loading\n\n\t\tajaxConfig: \"get\", //ajax request type\n\n\t\tajaxContentType: \"form\", //ajax request type\n\n\t\tajaxRequestFunc: false, //promise function\n\n\t\tajaxLoader: true, //show loader\n\n\t\tajaxLoaderLoading: false, //loader element\n\n\t\tajaxLoaderError: false, //loader element\n\n\t\tajaxFiltering: false,\n\n\t\tajaxSorting: false,\n\n\t\tajaxProgressiveLoad: false, //progressive loading\n\n\t\tajaxProgressiveLoadDelay: 0, //delay between requests\n\n\t\tajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins\n\n\n\t\tgroupBy: false, //enable table grouping and set field to group by\n\n\t\tgroupStartOpen: true, //starting state of group\n\n\t\tgroupValues: false,\n\n\t\tgroupHeader: false, //header generation function\n\n\n\t\thtmlOutputConfig: false, //html outypu config\n\n\n\t\tmovableColumns: false, //enable movable columns\n\n\n\t\tmovableRows: false, //enable movable rows\n\n\t\tmovableRowsConnectedTables: false, //tables for movable rows to be connected to\n\n\t\tmovableRowsSender: false,\n\n\t\tmovableRowsReceiver: \"insert\",\n\n\t\tmovableRowsSendingStart: function movableRowsSendingStart() {},\n\n\t\tmovableRowsSent: function movableRowsSent() {},\n\n\t\tmovableRowsSentFailed: function movableRowsSentFailed() {},\n\n\t\tmovableRowsSendingStop: function movableRowsSendingStop() {},\n\n\t\tmovableRowsReceivingStart: function movableRowsReceivingStart() {},\n\n\t\tmovableRowsReceived: function movableRowsReceived() {},\n\n\t\tmovableRowsReceivedFailed: function movableRowsReceivedFailed() {},\n\n\t\tmovableRowsReceivingStop: function movableRowsReceivingStop() {},\n\n\t\tscrollToRowPosition: \"top\",\n\n\t\tscrollToRowIfVisible: true,\n\n\t\tscrollToColumnPosition: \"left\",\n\n\t\tscrollToColumnIfVisible: true,\n\n\t\trowFormatter: false,\n\n\t\tplaceholder: false,\n\n\t\t//table building callbacks\n\n\t\ttableBuilding: function tableBuilding() {},\n\n\t\ttableBuilt: function tableBuilt() {},\n\n\t\t//render callbacks\n\n\t\trenderStarted: function renderStarted() {},\n\n\t\trenderComplete: function renderComplete() {},\n\n\t\t//row callbacks\n\n\t\trowClick: false,\n\n\t\trowDblClick: false,\n\n\t\trowContext: false,\n\n\t\trowTap: false,\n\n\t\trowDblTap: false,\n\n\t\trowTapHold: false,\n\n\t\trowMouseEnter: false,\n\n\t\trowMouseLeave: false,\n\n\t\trowMouseOver: false,\n\n\t\trowMouseOut: false,\n\n\t\trowMouseMove: false,\n\n\t\trowAdded: function rowAdded() {},\n\n\t\trowDeleted: function rowDeleted() {},\n\n\t\trowMoved: function rowMoved() {},\n\n\t\trowUpdated: function rowUpdated() {},\n\n\t\trowSelectionChanged: function rowSelectionChanged() {},\n\n\t\trowSelected: function rowSelected() {},\n\n\t\trowDeselected: function rowDeselected() {},\n\n\t\trowResized: function rowResized() {},\n\n\t\t//cell callbacks\n\n\t\t//row callbacks\n\n\t\tcellClick: false,\n\n\t\tcellDblClick: false,\n\n\t\tcellContext: false,\n\n\t\tcellTap: false,\n\n\t\tcellDblTap: false,\n\n\t\tcellTapHold: false,\n\n\t\tcellMouseEnter: false,\n\n\t\tcellMouseLeave: false,\n\n\t\tcellMouseOver: false,\n\n\t\tcellMouseOut: false,\n\n\t\tcellMouseMove: false,\n\n\t\tcellEditing: function cellEditing() {},\n\n\t\tcellEdited: function cellEdited() {},\n\n\t\tcellEditCancelled: function cellEditCancelled() {},\n\n\t\t//column callbacks\n\n\t\tcolumnMoved: false,\n\n\t\tcolumnResized: function columnResized() {},\n\n\t\tcolumnTitleChanged: function columnTitleChanged() {},\n\n\t\tcolumnVisibilityChanged: function columnVisibilityChanged() {},\n\n\t\t//HTML iport callbacks\n\n\t\thtmlImporting: function htmlImporting() {},\n\n\t\thtmlImported: function htmlImported() {},\n\n\t\t//data callbacks\n\n\t\tdataLoading: function dataLoading() {},\n\n\t\tdataLoaded: function dataLoaded() {},\n\n\t\tdataEdited: function dataEdited() {},\n\n\t\t//ajax callbacks\n\n\t\tajaxRequesting: function ajaxRequesting() {},\n\n\t\tajaxResponse: false,\n\n\t\tajaxError: function ajaxError() {},\n\n\t\t//filtering callbacks\n\n\t\tdataFiltering: false,\n\n\t\tdataFiltered: false,\n\n\t\t//sorting callbacks\n\n\t\tdataSorting: function dataSorting() {},\n\n\t\tdataSorted: function dataSorted() {},\n\n\t\t//grouping callbacks\n\n\t\tgroupToggleElement: \"arrow\",\n\n\t\tgroupClosedShowCalcs: false,\n\n\t\tdataGrouping: function dataGrouping() {},\n\n\t\tdataGrouped: false,\n\n\t\tgroupVisibilityChanged: function groupVisibilityChanged() {},\n\n\t\tgroupClick: false,\n\n\t\tgroupDblClick: false,\n\n\t\tgroupContext: false,\n\n\t\tgroupTap: false,\n\n\t\tgroupDblTap: false,\n\n\t\tgroupTapHold: false,\n\n\t\tcolumnCalcs: true,\n\n\t\t//pagination callbacks\n\n\t\tpageLoaded: function pageLoaded() {},\n\n\t\t//localization callbacks\n\n\t\tlocalized: function localized() {},\n\n\t\t//validation has failed\n\n\t\tvalidationFailed: function validationFailed() {},\n\n\t\t//history callbacks\n\n\t\thistoryUndo: function historyUndo() {},\n\n\t\thistoryRedo: function historyRedo() {}\n\n\t};\n\n\tTabulator.prototype.initializeOptions = function (options) {\n\n\t\t//warn user if option is not available\n\n\t\tfor (var key in options) {\n\n\t\t\tif (typeof this.defaultOptions[key] === \"undefined\") {\n\n\t\t\t\tconsole.warn(\"Invalid table constructor option:\", key);\n\t\t\t}\n\t\t}\n\n\t\t//assign options to table\n\n\t\tfor (var key in this.defaultOptions) {\n\n\t\t\tif (key in options) {\n\n\t\t\t\tthis.options[key] = options[key];\n\t\t\t} else {\n\n\t\t\t\tif (Array.isArray(this.defaultOptions[key])) {\n\n\t\t\t\t\tthis.options[key] = [];\n\t\t\t\t} else if (_typeof(this.defaultOptions[key]) === \"object\") {\n\n\t\t\t\t\tthis.options[key] = {};\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.options[key] = this.defaultOptions[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.initializeElement = function (element) {\n\n\t\tif (typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement) {\n\n\t\t\tthis.element = element;\n\n\t\t\treturn true;\n\t\t} else if (typeof element === \"string\") {\n\n\t\t\tthis.element = document.querySelector(element);\n\n\t\t\tif (this.element) {\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//convert depricated functionality to new functions\n\n\tTabulator.prototype._mapDepricatedFunctionality = function () {};\n\n\tTabulator.prototype._clearSelection = function () {\n\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\n\t\tif (window.getSelection) {\n\n\t\t\tif (window.getSelection().empty) {\n\t\t\t\t// Chrome\n\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) {\n\t\t\t\t// Firefox\n\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) {\n\t\t\t// IE?\n\n\t\t\tdocument.selection.empty();\n\t\t}\n\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t};\n\n\t//concreate table\n\n\tTabulator.prototype._create = function () {\n\n\t\tthis._clearObjectPointers();\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\tthis.bindModules();\n\n\t\tif (this.element.tagName === \"TABLE\") {\n\n\t\t\tif (this.modExists(\"htmlTableImport\", true)) {\n\n\t\t\t\tthis.modules.htmlTableImport.parseTable();\n\t\t\t}\n\t\t}\n\n\t\tthis.columnManager = new ColumnManager(this);\n\n\t\tthis.rowManager = new RowManager(this);\n\n\t\tthis.footerManager = new FooterManager(this);\n\n\t\tthis.columnManager.setRowManager(this.rowManager);\n\n\t\tthis.rowManager.setColumnManager(this.columnManager);\n\n\t\tthis._buildElement();\n\n\t\tthis._loadInitialData();\n\t};\n\n\t//clear pointers to objects in default config object\n\n\tTabulator.prototype._clearObjectPointers = function () {\n\n\t\tthis.options.columns = this.options.columns.slice(0);\n\n\t\tif (!this.options.reactiveData) {\n\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t};\n\n\t//build tabulator element\n\n\tTabulator.prototype._buildElement = function () {\n\t\tvar _this8 = this;\n\n\t\tvar element = this.element,\n\t\t mod = this.modules,\n\t\t options = this.options;\n\n\t\toptions.tableBuilding.call(this);\n\n\t\telement.classList.add(\"tabulator\");\n\n\t\telement.setAttribute(\"role\", \"grid\");\n\n\t\t//empty element\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t} //set table height\n\n\t\tif (options.height) {\n\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\n\t\t\telement.style.height = options.height;\n\t\t}\n\n\t\tthis.columnManager.initialize();\n\n\t\tthis.rowManager.initialize();\n\n\t\tthis._detectBrowser();\n\n\t\tif (this.modExists(\"layout\", true)) {\n\n\t\t\tmod.layout.initialize(options.layout);\n\t\t}\n\n\t\t//set localization\n\n\t\tif (options.headerFilterPlaceholder !== false) {\n\n\t\t\tmod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor (var locale in options.langs) {\n\n\t\t\tmod.localize.installLang(locale, options.langs[locale]);\n\t\t}\n\n\t\tmod.localize.setLocale(options.locale);\n\n\t\t//configure placeholder element\n\n\t\tif (typeof options.placeholder == \"string\") {\n\n\t\t\tvar el = document.createElement(\"div\");\n\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\n\t\t\tvar span = document.createElement(\"span\");\n\n\t\t\tspan.innerHTML = options.placeholder;\n\n\t\t\tel.appendChild(span);\n\n\t\t\toptions.placeholder = el;\n\t\t}\n\n\t\t//build table elements\n\n\t\telement.appendChild(this.columnManager.getElement());\n\n\t\telement.appendChild(this.rowManager.getElement());\n\n\t\tif (options.footerElement) {\n\n\t\t\tthis.footerManager.activate();\n\t\t}\n\n\t\tif ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists(\"persistence\", true)) {\n\n\t\t\tmod.persistence.initialize(options.persistenceMode, options.persistenceID);\n\t\t}\n\n\t\tif (options.persistentLayout && this.modExists(\"persistence\", true)) {\n\n\t\t\toptions.columns = mod.persistence.load(\"columns\", options.columns);\n\t\t}\n\n\t\tif (options.movableRows && this.modExists(\"moveRow\")) {\n\n\t\t\tmod.moveRow.initialize();\n\t\t}\n\n\t\tif (options.autoColumns && this.options.data) {\n\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\n\t\tif (this.modExists(\"columnCalcs\")) {\n\n\t\t\tmod.columnCalcs.initialize();\n\t\t}\n\n\t\tthis.columnManager.setColumns(options.columns);\n\n\t\tif (options.dataTree && this.modExists(\"dataTree\", true)) {\n\n\t\t\tmod.dataTree.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"frozenRows\")) {\n\n\t\t\tthis.modules.frozenRows.initialize();\n\t\t}\n\n\t\tif ((options.persistentSort || options.initialSort) && this.modExists(\"sort\", true)) {\n\n\t\t\tvar sorters = [];\n\n\t\t\tif (options.persistentSort && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tsorters = mod.persistence.load(\"sort\");\n\n\t\t\t\tif (sorters === false && options.initialSort) {\n\n\t\t\t\t\tsorters = options.initialSort;\n\t\t\t\t}\n\t\t\t} else if (options.initialSort) {\n\n\t\t\t\tsorters = options.initialSort;\n\t\t\t}\n\n\t\t\tmod.sort.setSort(sorters);\n\t\t}\n\n\t\tif ((options.persistentFilter || options.initialFilter) && this.modExists(\"filter\", true)) {\n\n\t\t\tvar filters = [];\n\n\t\t\tif (options.persistentFilter && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tfilters = mod.persistence.load(\"filter\");\n\n\t\t\t\tif (filters === false && options.initialFilter) {\n\n\t\t\t\t\tfilters = options.initialFilter;\n\t\t\t\t}\n\t\t\t} else if (options.initialFilter) {\n\n\t\t\t\tfilters = options.initialFilter;\n\t\t\t}\n\n\t\t\tmod.filter.setFilter(filters);\n\t\t}\n\n\t\tif (options.initialHeaderFilter && this.modExists(\"filter\", true)) {\n\n\t\t\toptions.initialHeaderFilter.forEach(function (item) {\n\n\t\t\t\tvar column = _this8.columnManager.findColumn(item.field);\n\n\t\t\t\tif (column) {\n\n\t\t\t\t\tmod.filter.setHeaderFilterValue(column, item.value);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tmod.ajax.initialize();\n\t\t}\n\n\t\tif (options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\tmod.page.initialize();\n\t\t}\n\n\t\tif (options.groupBy && this.modExists(\"groupRows\", true)) {\n\n\t\t\tmod.groupRows.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tmod.keybindings.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"selectRow\")) {\n\n\t\t\tmod.selectRow.clearSelectionData(true);\n\t\t}\n\n\t\tif (options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tmod.resizeTable.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"clipboard\")) {\n\n\t\t\tmod.clipboard.initialize();\n\t\t}\n\n\t\tif (options.printAsHtml && this.modExists(\"print\")) {\n\n\t\t\tmod.print.initialize();\n\t\t}\n\n\t\toptions.tableBuilt.call(this);\n\t};\n\n\tTabulator.prototype._loadInitialData = function () {\n\n\t\tvar self = this;\n\n\t\tif (self.options.pagination && self.modExists(\"page\")) {\n\n\t\t\tself.modules.page.reset(true);\n\n\t\t\tif (self.options.pagination == \"local\") {\n\n\t\t\t\tif (self.options.data.length) {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t} else {\n\n\t\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (self.options.ajaxURL) {\n\n\t\t\t\t\tself.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData([]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (self.options.data.length) {\n\n\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t} else {\n\n\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//deconstructor\n\n\tTabulator.prototype.destroy = function () {\n\n\t\tvar element = this.element;\n\n\t\tTabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication\n\n\n\t\tif (this.options.reactiveData && this.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.modules.reactiveData.unwatchData();\n\t\t}\n\n\t\t//clear row data\n\n\t\tthis.rowManager.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tthis.rowManager.rows = [];\n\n\t\tthis.rowManager.activeRows = [];\n\n\t\tthis.rowManager.displayRows = [];\n\n\t\t//clear event bindings\n\n\t\tif (this.options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tthis.modules.resizeTable.clearBindings();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tthis.modules.keybindings.clearBindings();\n\t\t}\n\n\t\t//clear DOM\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.classList.remove(\"tabulator\");\n\t};\n\n\tTabulator.prototype._detectBrowser = function () {\n\n\t\tvar ua = navigator.userAgent;\n\n\t\tif (ua.indexOf(\"Trident\") > -1) {\n\n\t\t\tthis.browser = \"ie\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Edge\") > -1) {\n\n\t\t\tthis.browser = \"edge\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Firefox\") > -1) {\n\n\t\t\tthis.browser = \"firefox\";\n\n\t\t\tthis.browserSlow = false;\n\t\t} else {\n\n\t\t\tthis.browser = \"other\";\n\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\t//loca data from local file\n\n\tTabulator.prototype.setDataFromLocalFile = function (extensions) {\n\t\tvar _this9 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar input = document.createElement(\"input\");\n\n\t\t\tinput.type = \"file\";\n\n\t\t\tinput.accept = extensions || \".json,application/json\";\n\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\n\t\t\t\tvar file = input.files[0],\n\t\t\t\t reader = new FileReader(),\n\t\t\t\t data;\n\n\t\t\t\treader.readAsText(file);\n\n\t\t\t\treader.onload = function (e) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\n\t\t\t\t\t} catch (e) {\n\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\n\n\t\t\t\t\t\treject(e);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this9._setData(data).then(function (data) {\n\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\t\tresolve(err);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\treader.onerror = function (e) {\n\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tinput.click();\n\t\t});\n\t};\n\n\t//load data\n\n\tTabulator.prototype.setData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config);\n\t};\n\n\tTabulator.prototype._setData = function (data, params, config, inPosition) {\n\n\t\tvar self = this;\n\n\t\tif (typeof data === \"string\") {\n\n\t\t\tif (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0) {\n\n\t\t\t\t//data is a json encoded string\n\n\t\t\t\treturn self.rowManager.setData(JSON.parse(data), inPosition);\n\t\t\t} else {\n\n\t\t\t\tif (self.modExists(\"ajax\", true)) {\n\n\t\t\t\t\tif (params) {\n\n\t\t\t\t\t\tself.modules.ajax.setParams(params);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config) {\n\n\t\t\t\t\t\tself.modules.ajax.setConfig(config);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.modules.ajax.setUrl(data);\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (data) {\n\n\t\t\t\t//asume data is already an object\n\n\t\t\t\treturn self.rowManager.setData(data, inPosition);\n\t\t\t} else {\n\n\t\t\t\t//no data provided, check if ajaxURL is present;\n\n\t\t\t\tif (self.modExists(\"ajax\") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t//empty data\n\n\t\t\t\t\treturn self.rowManager.setData([], inPosition);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//clear data\n\n\tTabulator.prototype.clearData = function () {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tthis.rowManager.clearData();\n\t};\n\n\t//get table data array\n\n\tTabulator.prototype.getData = function (active) {\n\n\t\treturn this.rowManager.getData(active);\n\t};\n\n\t//get table data array count\n\n\tTabulator.prototype.getDataCount = function (active) {\n\n\t\treturn this.rowManager.getDataCount(active);\n\t};\n\n\t//search for specific row components\n\n\tTabulator.prototype.searchRows = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"rows\", field, type, value);\n\t\t}\n\t};\n\n\t//search for specific data\n\n\tTabulator.prototype.searchData = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"data\", field, type, value);\n\t\t}\n\t};\n\n\t//get table html\n\n\tTabulator.prototype.getHtml = function (visible, style, config) {\n\n\t\tif (this.modExists(\"htmlTableExport\", true)) {\n\n\t\t\treturn this.modules.htmlTableExport.getHtml(visible, style, config);\n\t\t}\n\t};\n\n\t//get print html\n\n\tTabulator.prototype.print = function (visible, style, config) {\n\n\t\tif (this.modExists(\"print\", true)) {\n\n\t\t\treturn this.modules.print.printFullscreen(visible, style, config);\n\t\t}\n\t};\n\n\t//retrieve Ajax URL\n\n\tTabulator.prototype.getAjaxUrl = function () {\n\n\t\tif (this.modExists(\"ajax\", true)) {\n\n\t\t\treturn this.modules.ajax.getUrl();\n\t\t}\n\t};\n\n\t//replace data, keeping table in position with same sort\n\n\tTabulator.prototype.replaceData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config, true);\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateData = function (data) {\n\t\tvar _this10 = this;\n\n\t\tvar self = this;\n\n\t\tvar responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this10.modExists(\"ajax\")) {\n\n\t\t\t\t_this10.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\tresponses++;\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.addData = function (data, pos, index) {\n\t\tvar _this11 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this11.modExists(\"ajax\")) {\n\n\t\t\t\t_this11.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\t_this11.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\trows.forEach(function (row) {\n\n\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(output);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateOrAddData = function (data) {\n\t\tvar _this12 = this;\n\n\t\tvar self = this,\n\t\t rows = [],\n\t\t responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this12.modExists(\"ajax\")) {\n\n\t\t\t\t_this12.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tresponses++;\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(row.getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.addRows(item).then(function (newRows) {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRow = function (index) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRowFromPosition = function (position, active) {\n\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//delete row from table\n\n\tTabulator.prototype.deleteRow = function (index) {\n\t\tvar _this13 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this13.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\trow.delete().then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Delete Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//add row to table\n\n\tTabulator.prototype.addRow = function (data, pos, index) {\n\t\tvar _this14 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\t_this14.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t//recalc column calculations if present\n\n\t\t\t\tif (_this14.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t_this14.modules.columnCalcs.recalc(_this14.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t});\n\t\t});\n\t};\n\n\t//update a row if it exitsts otherwise create it\n\n\tTabulator.prototype.updateOrAddRow = function (index, data) {\n\t\tvar _this15 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this15.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\trow = _this15.rowManager.addRows(data).then(function (rows) {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//update row data\n\n\tTabulator.prototype.updateRow = function (index, data) {\n\t\tvar _this16 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this16.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Update Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//scroll to row in DOM\n\n\tTabulator.prototype.scrollToRow = function (index, position, ifVisible) {\n\t\tvar _this17 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this17.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\t_this17.rowManager.scrollToRow(row, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Scroll Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.moveRow = function (from, to, after) {\n\n\t\tvar fromRow = this.rowManager.findRow(from);\n\n\t\tif (fromRow) {\n\n\t\t\tfromRow.moveToRow(to, after);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t};\n\n\tTabulator.prototype.getRows = function (active) {\n\n\t\treturn this.rowManager.getComponents(active);\n\t};\n\n\t//get position of row in table\n\n\tTabulator.prototype.getRowPosition = function (index, active) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn this.rowManager.getRowPosition(row, active);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//copy table data to clipboard\n\n\tTabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {\n\n\t\tif (this.modExists(\"clipboard\", true)) {\n\n\t\t\tthis.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);\n\t\t}\n\t};\n\n\t/////////////// Column Functions ///////////////\n\n\n\tTabulator.prototype.setColumns = function (definition) {\n\n\t\tthis.columnManager.setColumns(definition);\n\t};\n\n\tTabulator.prototype.getColumns = function (structured) {\n\n\t\treturn this.columnManager.getComponents(structured);\n\t};\n\n\tTabulator.prototype.getColumn = function (field) {\n\n\t\tvar col = this.columnManager.findColumn(field);\n\n\t\tif (col) {\n\n\t\t\treturn col.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getColumnDefinitions = function () {\n\n\t\treturn this.columnManager.getDefinitionTree();\n\t};\n\n\tTabulator.prototype.getColumnLayout = function () {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\treturn this.modules.persistence.parseColumns(this.columnManager.getColumns());\n\t\t}\n\t};\n\n\tTabulator.prototype.setColumnLayout = function (layout) {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\tthis.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.showColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.show();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.hideColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.hide();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t} else {\n\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.addColumn = function (definition, before, field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tthis.columnManager.addColumn(definition, before, column);\n\t};\n\n\tTabulator.prototype.deleteColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.delete();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//scroll to column in DOM\n\n\tTabulator.prototype.scrollToColumn = function (field, position, ifVisible) {\n\t\tvar _this18 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar column = _this18.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\t_this18.columnManager.scrollToColumn(column, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\n\t\t\t\treject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////// Localization Functions ////////////\n\n\tTabulator.prototype.setLocale = function (locale) {\n\n\t\tthis.modules.localize.setLocale(locale);\n\t};\n\n\tTabulator.prototype.getLocale = function () {\n\n\t\treturn this.modules.localize.getLocale();\n\t};\n\n\tTabulator.prototype.getLang = function (locale) {\n\n\t\treturn this.modules.localize.getLang(locale);\n\t};\n\n\t//////////// General Public Functions ////////////\n\n\n\t//redraw list without updating data\n\n\tTabulator.prototype.redraw = function (force) {\n\n\t\tthis.columnManager.redraw(force);\n\n\t\tthis.rowManager.redraw(force);\n\t};\n\n\tTabulator.prototype.setHeight = function (height) {\n\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\n\t\tthis.element.style.height = this.options.height;\n\n\t\tthis.rowManager.redraw();\n\t};\n\n\t///////////////////// Sorting ////////////////////\n\n\n\t//trigger sort\n\n\tTabulator.prototype.setSort = function (sortList, dir) {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.setSort(sortList, dir);\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSorters = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\treturn this.modules.sort.getSort();\n\t\t}\n\t};\n\n\tTabulator.prototype.clearSort = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.clear();\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\n\t//set standard filters\n\n\tTabulator.prototype.setFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.setFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//add filter to array\n\n\tTabulator.prototype.addFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.addFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//get all filters\n\n\tTabulator.prototype.getFilters = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getFilters(all);\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterFocus = function (field) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterFocus(column);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterValue = function (field, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterValue(column, value);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.getHeaderFilters = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getHeaderFilters();\n\t\t}\n\t};\n\n\t//remove filter from array\n\n\tTabulator.prototype.removeFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.removeFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear filters\n\n\tTabulator.prototype.clearFilter = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearFilter(all);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear header filters\n\n\tTabulator.prototype.clearHeaderFilter = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearHeaderFilter();\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\tTabulator.prototype.selectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.selectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.deselectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.deselectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleSelectRow = function (row) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.toggleRow(row);\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedRows = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedRows();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedData = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedData();\n\t\t}\n\t};\n\n\t//////////// Pagination Functions ////////////\n\n\n\tTabulator.prototype.setMaxPage = function (max) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setMaxPage(max);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setPage = function (page) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.setPage(page);\n\t\t} else {\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\treject();\n\t\t\t});\n\t\t}\n\t};\n\n\tTabulator.prototype.setPageToRow = function (row) {\n\t\tvar _this19 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this19.options.pagination && _this19.modExists(\"page\")) {\n\n\t\t\t\trow = _this19.rowManager.findRow(row);\n\n\t\t\t\tif (row) {\n\n\t\t\t\t\t_this19.modules.page.setPageToRow(row).then(function () {\n\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.setPageSize = function (size) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setPageSize(size);\n\n\t\t\tthis.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageSize = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\treturn this.modules.page.getPageSize();\n\t\t}\n\t};\n\n\tTabulator.prototype.previousPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.previousPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.nextPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.nextPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageMax = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPageMax();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t///////////////// Grouping Functions ///////////////\n\n\n\tTabulator.prototype.setGroupBy = function (groups) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupBy = groups;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tthis.rowManager.refreshActiveData(\"display\");\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupStartOpen = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupStartOpen = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupHeader = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupHeader = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getGroups = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.modules.groupRows.getGroups(true);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t// get grouped table data in the same format as getData()\n\n\tTabulator.prototype.getGroupedData = function () {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();\n\t\t}\n\t};\n\n\t///////////////// Column Calculation Functions ///////////////\n\n\tTabulator.prototype.getCalcResults = function () {\n\n\t\tif (this.modExists(\"columnCalcs\", true)) {\n\n\t\t\treturn this.modules.columnCalcs.getResults();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Navigation Management //////////////\n\n\n\tTabulator.prototype.navigatePrev = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().prev();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateNext = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().next();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateLeft = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().left();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateRight = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().right();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateUp = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().up();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateDown = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().down();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/////////////// History Management //////////////\n\n\tTabulator.prototype.undo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.undo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.redo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.redo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryUndoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryUndoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryRedoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryRedoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Download Management //////////////\n\n\n\tTabulator.prototype.download = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options);\n\t\t}\n\t};\n\n\tTabulator.prototype.downloadToTab = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options, true);\n\t\t}\n\t};\n\n\t/////////// Inter Table Communications ///////////\n\n\n\tTabulator.prototype.tableComms = function (table, module, action, data) {\n\n\t\tthis.modules.comms.receive(table, module, action, data);\n\t};\n\n\t////////////// Extension Management //////////////\n\n\n\t//object to hold module\n\n\tTabulator.prototype.moduleBindings = {};\n\n\t//extend module\n\n\tTabulator.prototype.extendModule = function (name, property, values) {\n\n\t\tif (Tabulator.prototype.moduleBindings[name]) {\n\n\t\t\tvar source = Tabulator.prototype.moduleBindings[name].prototype[property];\n\n\t\t\tif (source) {\n\n\t\t\t\tif ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == \"object\") {\n\n\t\t\t\t\tfor (var key in values) {\n\n\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t}\n\t};\n\n\t//add module to tabulator\n\n\tTabulator.prototype.registerModule = function (name, module) {\n\n\t\tvar self = this;\n\n\t\tTabulator.prototype.moduleBindings[name] = module;\n\t};\n\n\t//ensure that module are bound to instantiated function\n\n\tTabulator.prototype.bindModules = function () {\n\n\t\tthis.modules = {};\n\n\t\tfor (var name in Tabulator.prototype.moduleBindings) {\n\n\t\t\tthis.modules[name] = new Tabulator.prototype.moduleBindings[name](this);\n\t\t}\n\t};\n\n\t//Check for module\n\n\tTabulator.prototype.modExists = function (plugin, required) {\n\n\t\tif (this.modules[plugin]) {\n\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\tif (required) {\n\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.helpers = {\n\n\t\telVisible: function elVisible(el) {\n\n\t\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t\t},\n\n\t\telOffset: function elOffset(el) {\n\n\t\t\tvar box = el.getBoundingClientRect();\n\n\t\t\treturn {\n\n\t\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\n\t\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\n\t\t\t};\n\t\t},\n\n\t\tdeepClone: function deepClone(obj) {\n\n\t\t\tvar clone = Array.isArray(obj) ? [] : {};\n\n\t\t\tfor (var i in obj) {\n\n\t\t\t\tif (obj[i] != null && _typeof(obj[i]) === \"object\") {\n\n\t\t\t\t\tif (obj[i] instanceof Date) {\n\n\t\t\t\t\t\tclone[i] = new Date(obj[i]);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tclone[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn clone;\n\t\t}\n\n\t};\n\n\tTabulator.prototype.comms = {\n\n\t\ttables: [],\n\n\t\tregister: function register(table) {\n\n\t\t\tTabulator.prototype.comms.tables.push(table);\n\t\t},\n\n\t\tderegister: function deregister(table) {\n\n\t\t\tvar index = Tabulator.prototype.comms.tables.indexOf(table);\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tTabulator.prototype.comms.tables.splice(index, 1);\n\t\t\t}\n\t\t},\n\n\t\tlookupTable: function lookupTable(query) {\n\n\t\t\tvar results = [],\n\t\t\t matches,\n\t\t\t match;\n\n\t\t\tif (typeof query === \"string\") {\n\n\t\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\t\tif (matches.length) {\n\n\t\t\t\t\tfor (var i = 0; i < matches.length; i++) {\n\n\t\t\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(matches[i]);\n\n\t\t\t\t\t\tif (match) {\n\n\t\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement || query instanceof Tabulator) {\n\n\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(query);\n\n\t\t\t\tif (match) {\n\n\t\t\t\t\tresults.push(match);\n\t\t\t\t}\n\t\t\t} else if (Array.isArray(query)) {\n\n\t\t\t\tquery.forEach(function (item) {\n\n\t\t\t\t\tresults = results.concat(Tabulator.prototype.comms.lookupTable(item));\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\n\t\t\treturn results;\n\t\t},\n\n\t\tmatchElement: function matchElement(element) {\n\n\t\t\treturn Tabulator.prototype.comms.tables.find(function (table) {\n\n\t\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t\t});\n\t\t}\n\n\t};\n\n\tvar Layout = function Layout(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.mode = null;\n\t};\n\n\t//initialize layout system\n\n\n\tLayout.prototype.initialize = function (layout) {\n\n\t\tif (this.modes[layout]) {\n\n\t\t\tthis.mode = layout;\n\t\t} else {\n\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t};\n\n\tLayout.prototype.getMode = function () {\n\n\t\treturn this.mode;\n\t};\n\n\t//trigger table layout\n\n\n\tLayout.prototype.layout = function () {\n\n\t\tthis.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\n\t};\n\n\t//layout render functions\n\n\n\tLayout.prototype.modes = {\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitData\": function fitData(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitDataFill\": function fitDataFill(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit\n\n\n\t\t\"fitColumns\": function fitColumns(columns) {\n\n\t\t\tvar self = this;\n\n\t\t\tvar totalWidth = self.table.element.clientWidth; //table element width\n\n\n\t\t\tvar fixedWidth = 0; //total width of columns with a defined width\n\n\n\t\t\tvar flexWidth = 0; //total width available to flexible columns\n\n\n\t\t\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\n\n\n\t\t\tvar flexColWidth = 0; //desired width of flexible columns\n\n\n\t\t\tvar flexColumns = []; //array of flexible width columns\n\n\n\t\t\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\n\n\t\t\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\n\n\n\t\t\tvar overflowWidth = 0; //horizontal overflow width\n\n\n\t\t\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\n\t\t\tfunction calcWidth(width) {\n\n\t\t\t\tvar colWidth;\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\treturn colWidth;\n\t\t\t}\n\n\t\t\t//ensure columns resize to take up the correct amount of space\n\n\n\t\t\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols) {\n\n\t\t\t\tvar oversizeCols = [],\n\t\t\t\t oversizeSpace = 0,\n\t\t\t\t remainingSpace = 0,\n\t\t\t\t nextColWidth = 0,\n\t\t\t\t gap = 0,\n\t\t\t\t changeUnits = 0,\n\t\t\t\t undersizeCols = [];\n\n\t\t\t\tfunction calcGrow(col) {\n\n\t\t\t\t\treturn colWidth * (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\n\t\t\t\tfunction calcShrink(col) {\n\n\t\t\t\t\treturn calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (col, i) {\n\n\t\t\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\n\t\t\t\t\tif (col.column.minWidth >= width) {\n\n\t\t\t\t\t\toversizeCols.push(col);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tundersizeCols.push(col);\n\n\t\t\t\t\t\tchangeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (oversizeCols.length) {\n\n\t\t\t\t\toversizeCols.forEach(function (col) {\n\n\t\t\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\n\t\t\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t\t\t});\n\n\t\t\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;\n\n\t\t\t\t\tgap = remainingSpace - nextColWidth * changeUnits;\n\n\t\t\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t\t\t} else {\n\n\t\t\t\t\tgap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;\n\n\t\t\t\t\tundersizeCols.forEach(function (column) {\n\n\t\t\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\t//adjust for vertical scrollbar if present\n\n\n\t\t\tif (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {\n\n\t\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t\t}\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tvar width, minWidth, colWidth;\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\twidth = column.definition.width;\n\n\t\t\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\t\t\tif (width) {\n\n\t\t\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\t\t\tif (column.definition.widthShrink) {\n\n\t\t\t\t\t\t\tfixedShrinkColumns.push({\n\n\t\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\t\twidth: colWidth > minWidth ? colWidth : minWidth\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tflexColumns.push({\n\n\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\twidth: 0\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//calculate available space\n\n\n\t\t\tflexWidth = totalWidth - fixedWidth;\n\n\t\t\t//calculate correct column size\n\n\n\t\t\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t\t\t//generate column widths\n\n\n\t\t\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t\t\t//increase width of last column to account for rounding errors\n\n\n\t\t\tif (flexColumns.length && gapFill > 0) {\n\n\t\t\t\tflexColumns[flexColumns.length - 1].width += +gapFill;\n\t\t\t}\n\n\t\t\t//caculate space for columns to be shrunk into\n\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tflexWidth -= col.width;\n\t\t\t});\n\n\t\t\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t\t\t//shrink oversize columns if there is no available space\n\n\n\t\t\tif (overflowWidth > 0 && flexShrinkUnits) {\n\n\t\t\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t\t\t}\n\n\t\t\t//decrease width of last column to account for rounding errors\n\n\n\t\t\tif (fixedShrinkColumns.length) {\n\n\t\t\t\tfixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;\n\t\t\t}\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\n\t\t\tfixedShrinkColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"layout\", Layout);\n\n\tvar Localize = function Localize(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.locale = \"default\"; //current locale\n\n\t\tthis.lang = false; //current language\n\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t};\n\n\t//set header placehoder\n\n\tLocalize.prototype.setHeaderFilterPlaceholder = function (placeholder) {\n\n\t\tthis.langs.default.headerFilters.default = placeholder;\n\t};\n\n\t//set header filter placeholder by column\n\n\tLocalize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {\n\n\t\tthis.langs.default.headerFilters.columns[column] = placeholder;\n\n\t\tif (this.lang && !this.lang.headerFilters.columns[column]) {\n\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\n\t\t}\n\t};\n\n\t//setup a lang description object\n\n\tLocalize.prototype.installLang = function (locale, lang) {\n\n\t\tif (this.langs[locale]) {\n\n\t\t\tthis._setLangProp(this.langs[locale], lang);\n\t\t} else {\n\n\t\t\tthis.langs[locale] = lang;\n\t\t}\n\t};\n\n\tLocalize.prototype._setLangProp = function (lang, values) {\n\n\t\tfor (var key in values) {\n\n\t\t\tif (lang[key] && _typeof(lang[key]) == \"object\") {\n\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t} else {\n\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set current locale\n\n\tLocalize.prototype.setLocale = function (desiredLocale) {\n\n\t\tvar self = this;\n\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching languge values\n\n\t\tfunction traverseLang(trans, path) {\n\n\t\t\tfor (var prop in trans) {\n\n\t\t\t\tif (_typeof(trans[prop]) == \"object\") {\n\n\t\t\t\t\tif (!path[prop]) {\n\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t} else {\n\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determing correct locale to load\n\n\t\tif (desiredLocale === true && navigator.language) {\n\n\t\t\t//get local from system\n\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif (desiredLocale) {\n\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\n\t\t\tif (!self.langs[desiredLocale]) {\n\n\t\t\t\tvar prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif (self.langs[prefix]) {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.locale = desiredLocale;\n\n\t\t//load default lang template\n\n\t\tself.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});\n\n\t\tif (desiredLocale != \"default\") {\n\n\t\t\ttraverseLang(self.langs[desiredLocale], self.lang);\n\t\t}\n\n\t\tself.table.options.localized.call(self.table, self.locale, self.lang);\n\n\t\tself._executeBindings();\n\t};\n\n\t//get current locale\n\n\tLocalize.prototype.getLocale = function (locale) {\n\n\t\treturn self.locale;\n\t};\n\n\t//get lang object for given local or current if none provided\n\n\tLocalize.prototype.getLang = function (locale) {\n\n\t\treturn locale ? this.langs[locale] : this.lang;\n\t};\n\n\t//get text for current locale\n\n\tLocalize.prototype.getText = function (path, value) {\n\n\t\tvar path = value ? path + \"|\" + value : path,\n\t\t pathArray = path.split(\"|\"),\n\t\t text = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\n\t\t// }\n\n\n\t\treturn text || \"\";\n\t};\n\n\t//traverse langs object and find localized copy\n\n\tLocalize.prototype._getLangElement = function (path, locale) {\n\n\t\tvar self = this;\n\n\t\tvar root = self.lang;\n\n\t\tpath.forEach(function (level) {\n\n\t\t\tvar rootPath;\n\n\t\t\tif (root) {\n\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif (typeof rootPath != \"undefined\") {\n\n\t\t\t\t\troot = rootPath;\n\t\t\t\t} else {\n\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t};\n\n\t//set update binding\n\n\tLocalize.prototype.bind = function (path, callback) {\n\n\t\tif (!this.bindings[path]) {\n\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t};\n\n\t//itterate through bindings and trigger updates\n\n\tLocalize.prototype._executeBindings = function () {\n\n\t\tvar self = this;\n\n\t\tvar _loop = function _loop(path) {\n\n\t\t\tself.bindings[path].forEach(function (binding) {\n\n\t\t\t\tbinding(self.getText(path), self.lang);\n\t\t\t});\n\t\t};\n\n\t\tfor (var path in self.bindings) {\n\t\t\t_loop(path);\n\t\t}\n\t};\n\n\t//Localized text listings\n\n\tLocalize.prototype.langs = {\n\n\t\t\"default\": { //hold default locale text\n\n\t\t\t\"groups\": {\n\n\t\t\t\t\"item\": \"item\",\n\n\t\t\t\t\"items\": \"items\"\n\n\t\t\t},\n\n\t\t\t\"columns\": {},\n\n\t\t\t\"ajax\": {\n\n\t\t\t\t\"loading\": \"Loading\",\n\n\t\t\t\t\"error\": \"Error\"\n\n\t\t\t},\n\n\t\t\t\"pagination\": {\n\n\t\t\t\t\"page_size\": \"Page Size\",\n\n\t\t\t\t\"first\": \"First\",\n\n\t\t\t\t\"first_title\": \"First Page\",\n\n\t\t\t\t\"last\": \"Last\",\n\n\t\t\t\t\"last_title\": \"Last Page\",\n\n\t\t\t\t\"prev\": \"Prev\",\n\n\t\t\t\t\"prev_title\": \"Prev Page\",\n\n\t\t\t\t\"next\": \"Next\",\n\n\t\t\t\t\"next_title\": \"Next Page\"\n\n\t\t\t},\n\n\t\t\t\"headerFilters\": {\n\n\t\t\t\t\"default\": \"filter column...\",\n\n\t\t\t\t\"columns\": {}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"localize\", Localize);\n\n\tvar Comms = function Comms(table) {\n\n\t\tthis.table = table;\n\t};\n\n\tComms.prototype.getConnections = function (selectors) {\n\n\t\tvar self = this,\n\t\t connections = [],\n\t\t connection;\n\n\t\tconnection = Tabulator.prototype.comms.lookupTable(selectors);\n\n\t\tconnection.forEach(function (con) {\n\n\t\t\tif (self.table !== con) {\n\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t};\n\n\tComms.prototype.send = function (selectors, module, action, data) {\n\n\t\tvar self = this,\n\t\t connections = this.getConnections(selectors);\n\n\t\tconnections.forEach(function (connection) {\n\n\t\t\tconnection.tableComms(self.table.element, module, action, data);\n\t\t});\n\n\t\tif (!connections.length && selectors) {\n\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t};\n\n\tComms.prototype.receive = function (table, module, action, data) {\n\n\t\tif (this.table.modExists(module)) {\n\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"comms\", Comms);\n\n\tvar Accessor = function Accessor(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\"]; //list of accessor types\n\t};\n\n\t//initialize column accessor\n\tAccessor.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t accessor;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\taccessor = self.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor: accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}, Accessor.prototype.lookupAccessor = function (value) {\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.accessors[value]) {\n\t\t\t\t\taccessor = this.accessors[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t};\n\n\t//apply accessor to row\n\tAccessor.prototype.transformRow = function (dataIn, type) {\n\t\tvar self = this,\n\t\t key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1));\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Tabulator.prototype.helpers.deepClone(dataIn || {});\n\n\t\tself.table.columnManager.traverse(function (column) {\n\t\t\tvar value, accessor, params, component;\n\n\t\t\tif (column.modules.accessor) {\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif (value != \"undefined\") {\n\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, component) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, component));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t},\n\n\t//default accessors\n\tAccessor.prototype.accessors = {};\n\n\tTabulator.prototype.registerModule(\"accessor\", Accessor);\n\tvar Ajax = function Ajax(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = false; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\n\t\tthis.msgElement = this.createMsgElement(); //message element\n\t\tthis.loadingElement = false;\n\t\tthis.errorElement = false;\n\t\tthis.loaderPromise = false;\n\n\t\tthis.progressiveLoad = false;\n\t\tthis.loading = false;\n\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\n\t};\n\n\t//initialize setup options\n\tAjax.prototype.initialize = function () {\n\t\tvar template;\n\n\t\tthis.loaderElement.appendChild(this.msgElement);\n\n\t\tif (this.table.options.ajaxLoaderLoading) {\n\t\t\tif (typeof this.table.options.ajaxLoaderLoading == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderLoading.trim();\n\t\t\t\tthis.loadingElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.loadingElement = this.table.options.ajaxLoaderLoading;\n\t\t\t}\n\t\t}\n\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;\n\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;\n\n\t\tif (this.table.options.ajaxLoaderError) {\n\t\t\tif (typeof this.table.options.ajaxLoaderError == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderError.trim();\n\t\t\t\tthis.errorElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.errorElement = this.table.options.ajaxLoaderError;\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.options.ajaxParams) {\n\t\t\tthis.setParams(this.table.options.ajaxParams);\n\t\t}\n\n\t\tif (this.table.options.ajaxConfig) {\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\n\t\t}\n\n\t\tif (this.table.options.ajaxURL) {\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\t\tif (this.table.options.ajaxProgressiveLoad) {\n\t\t\tif (this.table.options.pagination) {\n\t\t\t\tthis.progressiveLoad = false;\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t} else {\n\t\t\t\tif (this.table.modExists(\"page\")) {\n\t\t\t\t\tthis.progressiveLoad = this.table.options.ajaxProgressiveLoad;\n\t\t\t\t\tthis.table.modules.page.initializeProgressive(this.progressiveLoad);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"Pagination plugin is required for progressive ajax loading\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.createLoaderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-loader\");\n\t\treturn el;\n\t};\n\n\tAjax.prototype.createMsgElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-loader-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\n\t\treturn el;\n\t};\n\n\t//set ajax params\n\tAjax.prototype.setParams = function (params, update) {\n\t\tif (update) {\n\t\t\tthis.params = this.params || {};\n\n\t\t\tfor (var key in params) {\n\t\t\t\tthis.params[key] = params[key];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.params = params;\n\t\t}\n\t};\n\n\tAjax.prototype.getParams = function () {\n\t\treturn this.params || {};\n\t};\n\n\t//load config object\n\tAjax.prototype.setConfig = function (config) {\n\t\tthis._loadDefaultConfig();\n\n\t\tif (typeof config == \"string\") {\n\t\t\tthis.config.method = config;\n\t\t} else {\n\t\t\tfor (var key in config) {\n\t\t\t\tthis.config[key] = config[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//create config object from default\n\tAjax.prototype._loadDefaultConfig = function (force) {\n\t\tvar self = this;\n\t\tif (!self.config || force) {\n\n\t\t\tself.config = {};\n\n\t\t\t//load base config from defaults\n\t\t\tfor (var key in self.defaultConfig) {\n\t\t\t\tself.config[key] = self.defaultConfig[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set request url\n\tAjax.prototype.setUrl = function (url) {\n\t\tthis.url = url;\n\t};\n\n\t//get request url\n\tAjax.prototype.getUrl = function () {\n\t\treturn this.url;\n\t};\n\n\t//lstandard loading function\n\tAjax.prototype.loadData = function (inPosition) {\n\t\tvar self = this;\n\n\t\tif (this.progressiveLoad) {\n\t\t\treturn this._loadDataProgressive();\n\t\t} else {\n\t\t\treturn this._loadDataStandard(inPosition);\n\t\t}\n\t};\n\n\tAjax.prototype.nextPage = function (diff) {\n\t\tvar margin;\n\n\t\tif (!this.loading) {\n\n\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;\n\n\t\t\tif (diff < margin) {\n\t\t\t\tthis.table.modules.page.nextPage().then(function () {}).catch(function () {});\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.blockActiveRequest = function () {\n\t\tthis.requestOrder++;\n\t};\n\n\tAjax.prototype._loadDataProgressive = function () {\n\t\tthis.table.rowManager.setData([]);\n\t\treturn this.table.modules.page.setPage(1);\n\t};\n\n\tAjax.prototype._loadDataStandard = function (inPosition) {\n\t\tvar _this20 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\t_this20.sendRequest(inPosition).then(function (data) {\n\t\t\t\t_this20.table.rowManager.setData(data, inPosition).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (e) {\n\t\t\t\t\treject(e);\n\t\t\t\t});\n\t\t\t}).catch(function (e) {\n\t\t\t\treject(e);\n\t\t\t});\n\t\t});\n\t};\n\n\tAjax.prototype.generateParamsList = function (data, prefix) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tprefix = prefix || \"\";\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (item, i) {\n\t\t\t\toutput = output.concat(self.generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t\t});\n\t\t} else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === \"object\") {\n\t\t\tfor (var key in data) {\n\t\t\t\toutput = output.concat(self.generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push({ key: prefix, value: data });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tAjax.prototype.serializeParams = function (params) {\n\t\tvar output = this.generateParamsList(params),\n\t\t encoded = [];\n\n\t\toutput.forEach(function (item) {\n\t\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t\t});\n\n\t\treturn encoded.join(\"&\");\n\t};\n\n\t//send ajax request\n\tAjax.prototype.sendRequest = function (silent) {\n\t\tvar _this21 = this;\n\n\t\tvar self = this,\n\t\t url = self.url,\n\t\t requestNo,\n\t\t esc,\n\t\t query;\n\n\t\tself.requestOrder++;\n\t\trequestNo = self.requestOrder;\n\n\t\tself._loadDefaultConfig();\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (self.table.options.ajaxRequesting.call(_this21.table, self.url, self.params) !== false) {\n\n\t\t\t\tself.loading = true;\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.showLoader();\n\t\t\t\t}\n\n\t\t\t\t_this21.loaderPromise(url, self.config, self.params).then(function (data) {\n\t\t\t\t\tif (requestNo === self.requestOrder) {\n\t\t\t\t\t\tif (self.table.options.ajaxResponse) {\n\t\t\t\t\t\t\tdata = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\n\t\t\t\t\tself.hideLoader();\n\n\t\t\t\t\tself.loading = false;\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error: \", error);\n\t\t\t\t\tself.table.options.ajaxError.call(self.table, error);\n\n\t\t\t\t\tself.showError();\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tself.hideLoader();\n\t\t\t\t\t}, 3000);\n\n\t\t\t\t\tself.loading = false;\n\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.showLoader = function () {\n\t\tvar shouldLoad = typeof this.table.options.ajaxLoader === \"function\" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;\n\n\t\tif (shouldLoad) {\n\n\t\t\tthis.hideLoader();\n\n\t\t\twhile (this.msgElement.firstChild) {\n\t\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t\t}this.msgElement.classList.remove(\"tabulator-error\");\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\n\n\t\t\tif (this.loadingElement) {\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\n\t\t\t} else {\n\t\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|loading\");\n\t\t\t}\n\n\t\t\tthis.table.element.appendChild(this.loaderElement);\n\t\t}\n\t};\n\n\tAjax.prototype.showError = function () {\n\t\tthis.hideLoader();\n\n\t\twhile (this.msgElement.firstChild) {\n\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t}this.msgElement.classList.remove(\"tabulator-loading\");\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\n\n\t\tif (this.errorElement) {\n\t\t\tthis.msgElement.appendChild(this.errorElement);\n\t\t} else {\n\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|error\");\n\t\t}\n\n\t\tthis.table.element.appendChild(this.loaderElement);\n\t};\n\n\tAjax.prototype.hideLoader = function () {\n\t\tif (this.loaderElement.parentNode) {\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\n\t\t}\n\t};\n\n\t//default ajax config object\n\tAjax.prototype.defaultConfig = {\n\t\tmethod: \"GET\"\n\t};\n\n\tAjax.prototype.defaultURLGenerator = function (url, config, params) {\n\n\t\tif (url) {\n\t\t\tif (params && Object.keys(params).length) {\n\t\t\t\tif (!config.method || config.method.toLowerCase() == \"get\") {\n\t\t\t\t\tconfig.method = \"get\";\n\t\t\t\t\turl += \"?\" + this.serializeParams(params);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn url;\n\t};\n\n\tAjax.prototype.defaultLoaderPromise = function (url, config, params) {\n\t\tvar self = this,\n\t\t contentType;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t//set url\n\t\t\turl = self.urlGenerator(url, config, params);\n\n\t\t\t//set body content if not GET request\n\t\t\tif (config.method.toUpperCase() != \"GET\") {\n\t\t\t\tcontentType = _typeof(self.table.options.ajaxContentType) === \"object\" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];\n\t\t\t\tif (contentType) {\n\n\t\t\t\t\tfor (var key in contentType.headers) {\n\t\t\t\t\t\tif (!config.headers) {\n\t\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof config.headers[key] === \"undefined\") {\n\t\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconfig.body = contentType.body.call(self, url, config, params);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", self.table.options.ajaxContentType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (url) {\n\n\t\t\t\t//configure headers\n\t\t\t\tif (typeof config.headers === \"undefined\") {\n\t\t\t\t\tconfig.headers = {};\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers.Accept === \"undefined\") {\n\t\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers[\"X-Requested-With\"] === \"undefined\") {\n\t\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.mode === \"undefined\") {\n\t\t\t\t\tconfig.mode = \"cors\";\n\t\t\t\t}\n\n\t\t\t\tif (config.mode == \"cors\") {\n\n\t\t\t\t\tif (typeof config.headers[\"Access-Control-Allow-Origin\"] === \"undefined\") {\n\t\t\t\t\t\tconfig.headers[\"Access-Control-Allow-Origin\"] = window.location.origin;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//send request\n\t\t\t\tfetch(url, config).then(function (response) {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\tresponse.json().then(function (data) {\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\t\tresolve([]);\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.contentTypeFormatters = {\n\t\t\"json\": {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\treturn JSON.stringify(params);\n\t\t\t}\n\t\t},\n\t\t\"form\": {\n\t\t\theaders: {},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\tvar output = this.generateParamsList(params),\n\t\t\t\t form = new FormData();\n\n\t\t\t\toutput.forEach(function (item) {\n\t\t\t\t\tform.append(item.key, item.value);\n\t\t\t\t});\n\n\t\t\t\treturn form;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"ajax\", Ajax);\n\n\tvar ColumnCalcs = function ColumnCalcs(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\n\t\tthis.initialize();\n\t};\n\n\tColumnCalcs.prototype.createElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t};\n\n\tColumnCalcs.prototype.initialize = function () {\n\t\tthis.genColumn = new Column({ field: \"value\" }, this);\n\t};\n\n\t//dummy functions to handle being mock column manager\n\tColumnCalcs.prototype.registerColumnField = function () {};\n\n\t//initialize column calcs\n\tColumnCalcs.prototype.initializeColumn = function (column) {\n\t\tvar def = column.definition;\n\n\t\tvar config = {\n\t\t\ttopCalcParams: def.topCalcParams || {},\n\t\t\tbotCalcParams: def.bottomCalcParams || {}\n\t\t};\n\n\t\tif (def.topCalc) {\n\n\t\t\tswitch (_typeof(def.topCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.topCalc]) {\n\t\t\t\t\t\tconfig.topCalc = this.calculations[def.topCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.topCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (def.bottomCalc) {\n\t\t\tswitch (_typeof(def.bottomCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.bottomCalc]) {\n\t\t\t\t\t\tconfig.botCalc = this.calculations[def.bottomCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.botCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.removeCalcs = function () {\n\t\tvar changed = false;\n\n\t\tif (this.topInitialized) {\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.table.footerManager.remove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (changed) {\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeTopRow = function () {\n\t\tif (!this.topInitialized) {\n\t\t\t// this.table.columnManager.headersElement.after(this.topElement);\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeBottomRow = function () {\n\t\tif (!this.botInitialized) {\n\t\t\tthis.table.footerManager.prepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.scrollHorizontal = function (left) {\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botRow.getElement().style.marginLeft = -left + \"px\";\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalc = function (rows) {\n\t\tvar data, row;\n\n\t\tif (this.topInitialized || this.botInitialized) {\n\t\t\tdata = this.rowsToData(rows);\n\n\t\t\tif (this.topInitialized) {\n\t\t\t\tif (this.topRow) {\n\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows));\n\t\t\t\tthis.topRow = row;\n\t\t\t\twhile (this.topElement.firstChild) {\n\t\t\t\t\tthis.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t}this.topElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tif (this.botInitialized) {\n\t\t\t\tif (this.botRow) {\n\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows));\n\t\t\t\tthis.botRow = row;\n\t\t\t\twhile (this.botElement.firstChild) {\n\t\t\t\t\tthis.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t}this.botElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\t//set resizable handles\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalcRowGroup = function (row) {\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t};\n\n\tColumnCalcs.prototype.recalcGroup = function (group) {\n\t\tvar data, rowData;\n\n\t\tif (group) {\n\t\t\tif (group.calcs) {\n\t\t\t\tif (group.calcs.bottom) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t}\n\n\t\t\t\tif (group.calcs.top) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate top stats row\n\tColumnCalcs.prototype.generateTopRow = function (rows) {\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t};\n\t//generate bottom stats row\n\tColumnCalcs.prototype.generateBottomRow = function (rows) {\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t};\n\n\tColumnCalcs.prototype.rowsToData = function (rows) {\n\t\tvar data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRow = function (pos, data) {\n\t\tvar self = this,\n\t\t rowData = this.generateRowData(pos, data),\n\t\t row;\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.disable();\n\t\t}\n\n\t\trow = new Row(rowData, this);\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.enable();\n\t\t}\n\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\trow.type = \"calc\";\n\n\t\trow.generateCells = function () {\n\n\t\t\tvar cells = [];\n\n\t\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\t\t//set field name of mock column\n\t\t\t\tself.genColumn.setField(column.getField());\n\t\t\t\tself.genColumn.hozAlign = column.hozAlign;\n\n\t\t\t\tif (column.definition[pos + \"CalcFormatter\"] && self.table.modExists(\"format\")) {\n\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"]\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams: {}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//ensure css class defintion is replicated to calculation cell\n\t\t\t\tself.genColumn.definition.cssClass = column.definition.cssClass;\n\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(self.genColumn, row);\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\n\t\t\t\tif (!column.visible) {\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cells = cells;\n\t\t};\n\n\t\treturn row;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRowData = function (pos, data) {\n\t\tvar rowData = {},\n\t\t calcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\t type = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\t params,\n\t\t paramKey;\n\n\t\tcalcs.forEach(function (column) {\n\t\t\tvar values = [];\n\n\t\t\tif (column.modules.columnCalcs && column.modules.columnCalcs[type]) {\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t};\n\n\tColumnCalcs.prototype.hasTopCalcs = function () {\n\t\treturn !!this.topCalcs.length;\n\t}, ColumnCalcs.prototype.hasBottomCalcs = function () {\n\t\treturn !!this.botCalcs.length;\n\t},\n\n\t//handle table redraw\n\tColumnCalcs.prototype.redraw = function () {\n\t\tif (this.topRow) {\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif (this.botRow) {\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t};\n\n\t//return the calculated\n\tColumnCalcs.prototype.getResults = function () {\n\t\tvar self = this,\n\t\t results = {},\n\t\t groups;\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tresults[group.getKey()] = self.getGroupResults(group);\n\t\t\t});\n\t\t} else {\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {}\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t};\n\n\t//get results from a group\n\tColumnCalcs.prototype.getGroupResults = function (group) {\n\t\tvar self = this,\n\t\t groupObj = group._getSelf(),\n\t\t subGroups = group.getSubGroups(),\n\t\t subGroupResults = {},\n\t\t results = {};\n\n\t\tsubGroups.forEach(function (subgroup) {\n\t\t\tsubGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);\n\t\t});\n\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults\n\t\t};\n\n\t\treturn results;\n\t};\n\n\t//default calculations\n\tColumnCalcs.prototype.calculations = {\n\t\t\"avg\": function avg(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t\treturn sum + value;\n\t\t\t\t});\n\n\t\t\t\toutput = output / values.length;\n\n\t\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t\t}\n\n\t\t\treturn parseFloat(output).toString();\n\t\t},\n\t\t\"max\": function max(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value > output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"min\": function min(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value < output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"sum\": function sum(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tvalue = Number(value);\n\n\t\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t\t},\n\t\t\"concat\": function concat(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\treturn String(sum) + String(value);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\t\t\"count\": function count(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\toutput++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"columnCalcs\", ColumnCalcs);\n\n\tvar Clipboard = function Clipboard(table) {\n\t\tthis.table = table;\n\t\tthis.mode = true;\n\t\tthis.copySelector = false;\n\t\tthis.copySelectorParams = {};\n\t\tthis.copyFormatter = false;\n\t\tthis.copyFormatterParams = {};\n\t\tthis.pasteParser = function () {};\n\t\tthis.pasteAction = function () {};\n\t\tthis.htmlElement = false;\n\t\tthis.config = {};\n\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\t};\n\n\tClipboard.prototype.initialize = function () {\n\t\tvar self = this;\n\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\t\t\tthis.table.element.addEventListener(\"copy\", function (e) {\n\t\t\t\tvar data;\n\n\t\t\t\tself.processConfig();\n\n\t\t\t\tif (!self.blocked) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tdata = self.generateContent();\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', data);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.options.clipboardCopied.call(this.table, data);\n\n\t\t\t\t\tself.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.mode === true || this.mode === \"paste\") {\n\t\t\tthis.table.element.addEventListener(\"paste\", function (e) {\n\t\t\t\tself.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\t};\n\n\tClipboard.prototype.processConfig = function () {\n\t\tvar config = {\n\t\t\tcolumnHeaders: \"groups\",\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (typeof this.table.options.clipboardCopyHeader !== \"undefined\") {\n\t\t\tconfig.columnHeaders = this.table.options.clipboardCopyHeader;\n\t\t\tconsole.warn(\"DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option\");\n\t\t}\n\n\t\tif (this.table.options.clipboardCopyConfig) {\n\t\t\tfor (var key in this.table.options.clipboardCopyConfig) {\n\t\t\t\tconfig[key] = this.table.options.clipboardCopyConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnHeaders) {\n\t\t\tif ((config.columnHeaders === \"groups\" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\t\tthis.config.columnHeaders = \"groups\";\n\t\t\t} else {\n\t\t\t\tthis.config.columnHeaders = \"columns\";\n\t\t\t}\n\t\t} else {\n\t\t\tthis.config.columnHeaders = false;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tClipboard.prototype.reset = function () {\n\t\tthis.blocked = false;\n\t\tthis.originalSelectionText = \"\";\n\t};\n\n\tClipboard.prototype.setPasteAction = function (action) {\n\n\t\tswitch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = this.pasteActions[action];\n\n\t\t\t\tif (!this.pasteAction) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setPasteParser = function (parser) {\n\t\tswitch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = this.pasteParsers[parser];\n\n\t\t\t\tif (!this.pasteParser) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.paste = function (e) {\n\t\tvar data, rowData, rows;\n\n\t\tif (this.checkPaseOrigin(e)) {\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif (rowData) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (this.table.modExists(\"mutator\")) {\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\t\t\t\tthis.table.options.clipboardPasted.call(this.table, data, rowData, rows);\n\t\t\t} else {\n\t\t\t\tthis.table.options.clipboardPasteError.call(this.table, data);\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.mutateData = function (data) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (row) {\n\t\t\t\toutput.push(self.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t} else {\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.checkPaseOrigin = function (e) {\n\t\tvar valid = true;\n\n\t\tif (e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t};\n\n\tClipboard.prototype.getPasteData = function (e) {\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {\n\t\tvar range, sel, textRange;\n\t\tthis.blocked = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tselector = \"userSelection\";\n\t\t\t\t\tformatter = \"raw\";\n\t\t\t\t\tselectorParams = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tthis.setSelector(selector);\n\t\t\tthis.copySelectorParams = typeof selectorParams != \"undefined\" && selectorParams != null ? selectorParams : this.config.columnHeaders;\n\t\t\tthis.setFormatter(formatter);\n\t\t\tthis.copyFormatterParams = typeof formatterParams != \"undefined\" && formatterParams != null ? formatterParams : {};\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.setSelector = function (selector) {\n\t\tselector = selector || this.table.options.clipboardCopySelector;\n\n\t\tswitch (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copySelectors[selector]) {\n\t\t\t\t\tthis.copySelector = this.copySelectors[selector];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such selector found:\", selector);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copySelector = selector;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setFormatter = function (formatter) {\n\n\t\tformatter = formatter || this.table.options.clipboardCopyFormatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copyFormatters[formatter]) {\n\t\t\t\t\tthis.copyFormatter = this.copyFormatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such formatter found:\", formatter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copyFormatter = formatter;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.generateContent = function () {\n\t\tvar data;\n\n\t\tthis.htmlElement = false;\n\t\tdata = this.copySelector.call(this, this.config, this.copySelectorParams);\n\n\t\treturn this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);\n\t};\n\n\tClipboard.prototype.generateSimpleHeaders = function (columns) {\n\t\tvar headers = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\theaders.push(column.definition.title);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.generateColumnGroupHeaders = function (columns) {\n\t\tvar _this22 = this;\n\n\t\tvar output = [];\n\n\t\tthis.table.columnManager.columns.forEach(function (column) {\n\t\t\tvar colData = _this22.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processColumnGroup = function (column) {\n\t\tvar _this23 = this;\n\n\t\tvar subGroups = column.columns;\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this23.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.visible) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [];\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push(column.title);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpadColumnheaders();\n\t\t\t}\n\t\t}\n\n\t\tfunction padColumnheaders() {\n\t\t\tvar max = 0;\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len > max) {\n\t\t\t\t\tmax = len;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len < max) {\n\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.rowsToData = function (rows, config, params) {\n\t\tvar columns = this.table.columnManager.columnsByIndex,\n\t\t data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowArray = [],\n\t\t\t rowData = row instanceof RowComponent ? row.getData(\"clipboard\") : row;\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\trowArray.push(value);\n\t\t\t});\n\n\t\t\tdata.push(rowArray);\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.buildComplexRows = function (config) {\n\t\tvar _this24 = this;\n\n\t\tvar output = [],\n\t\t groups = this.table.modules.groupRows.getGroups();\n\n\t\tgroups.forEach(function (group) {\n\t\t\toutput.push(_this24.processGroupData(group));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processGroupData = function (group) {\n\t\tvar _this25 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this25.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getRows(true);\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.getCalcRow = function (calcs, selector, pos) {\n\t\tvar calcData = calcs[selector];\n\n\t\tif (calcData) {\n\t\t\tif (pos) {\n\t\t\t\tcalcData = calcData[pos];\n\t\t\t}\n\n\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\treturn this.rowsToData([calcData]);\n\t\t\t}\n\t\t}\n\n\t\treturn [];\n\t};\n\n\tClipboard.prototype.buildOutput = function (rows, config, params) {\n\t\tvar _this26 = this;\n\n\t\tvar output = [],\n\t\t calcs,\n\t\t columns = this.table.columnManager.columnsByIndex;\n\n\t\tif (config.columnHeaders) {\n\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns = this.generateColumnGroupHeaders(this.table.columnManager.columns);\n\n\t\t\t\toutput = output.concat(this.groupHeadersToRows(columns));\n\t\t\t} else {\n\t\t\t\toutput.push(this.generateSimpleHeaders(columns));\n\t\t\t}\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\t\t}\n\n\t\t//generate styled content\n\t\tif (this.table.options.clipboardCopyStyled) {\n\t\t\tthis.generateHTML(rows, columns, calcs, config, params);\n\t\t}\n\n\t\t//generate unstyled content\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (row) {\n\t\t\t\toutput = output.concat(_this26.parseRowGroupData(row, config, params, calcs || {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"top\"));\n\t\t\t}\n\n\t\t\toutput = output.concat(this.rowsToData(rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.parseRowGroupData = function (group, config, params, calcObj) {\n\t\tvar _this27 = this;\n\n\t\tvar groupData = [];\n\n\t\tgroupData.push([group.key]);\n\n\t\tif (group.subGroups) {\n\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData = groupData.concat(_this27.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"top\"));\n\t\t\t}\n\n\t\t\tgroupData = groupData.concat(this.rowsToData(group.rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {\n\t\tvar self = this,\n\t\t data = [],\n\t\t headers = [],\n\t\t body,\n\t\t oddRow,\n\t\t evenRow,\n\t\t calcRow,\n\t\t firstRow,\n\t\t firstCell,\n\t\t firstGroup,\n\t\t lastCell,\n\t\t styleCells;\n\n\t\t//create table element\n\t\tthis.htmlElement = document.createElement(\"table\");\n\t\tself.mapElementStyles(this.table.element, this.htmlElement, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\tfunction generateSimpleHeaders() {\n\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar columnEl = document.createElement(\"th\");\n\t\t\t\tcolumnEl.innerHTML = column.definition.title;\n\n\t\t\t\tself.mapElementStyles(column.getElement(), columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t});\n\n\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\tself.htmlElement.appendChild(document.createElement(\"thead\").appendChild(headerEl));\n\t\t}\n\n\t\tfunction generateHeaders(headers) {\n\n\t\t\tvar headerHolderEl = document.createElement(\"thead\");\n\n\t\t\theaders.forEach(function (columns) {\n\t\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tvar columnEl = document.createElement(\"th\");\n\n\t\t\t\t\tif (column.width > 1) {\n\t\t\t\t\t\tcolumnEl.colSpan = column.width;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.height > 1) {\n\t\t\t\t\t\tcolumnEl.rowSpan = column.height;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolumnEl.innerHTML = column.title;\n\n\t\t\t\t\tself.mapElementStyles(column.element, columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t\t});\n\n\t\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderHolderEl.appendChild(headerEl);\n\t\t\t});\n\n\t\t\tself.htmlElement.appendChild(headerHolderEl);\n\t\t}\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push({\n\t\t\t\ttitle: column.title,\n\t\t\t\twidth: column.width,\n\t\t\t\theight: 1,\n\t\t\t\tchildren: !!column.subGroups,\n\t\t\t\telement: column.column.getElement()\n\t\t\t});\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction padVerticalColumnheaders() {\n\t\t\theaders.forEach(function (row, index) {\n\t\t\t\trow.forEach(function (header) {\n\t\t\t\t\tif (!header.children) {\n\t\t\t\t\t\theader.height = headers.length - index;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\tvar calcData = calcs[selector];\n\n\t\t\tif (calcData) {\n\t\t\t\tif (pos) {\n\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t// calcRowIndexs.push(body.length);\n\t\t\t\t\tprocessRows([calcData]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//create headers if needed\n\t\tif (config.columnHeaders) {\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\n\t\t\t\tpadVerticalColumnheaders();\n\t\t\t\tgenerateHeaders(headers);\n\t\t\t} else {\n\t\t\t\tgenerateSimpleHeaders();\n\t\t\t}\n\t\t}\n\n\t\tcolumns = this.table.columnManager.columnsByIndex;\n\n\t\t//create table body\n\t\tbody = document.createElement(\"tbody\");\n\n\t\t//lookup row styles\n\t\tif (window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tfunction processRows(rowArray) {\n\t\t\t//add rows to table\n\t\t\trowArray.forEach(function (row, i) {\n\t\t\t\tvar rowEl = document.createElement(\"tr\"),\n\t\t\t\t styleRow = firstRow,\n\t\t\t\t isCalc = false,\n\t\t\t\t rowData;\n\n\t\t\t\tif (row instanceof RowComponent) {\n\t\t\t\t\trowData = row.getData(\"clipboard\");\n\t\t\t\t} else {\n\t\t\t\t\trowData = row;\n\t\t\t\t\tisCalc = true;\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column, j) {\n\t\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\t\t value = column.getFieldValue(rowData);\n\n\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcellEl.innerHTML = value;\n\n\t\t\t\t\tif (column.definition.align) {\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (j < columns.length - 1) {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t});\n\n\t\t\t\tif (isCalc) {\n\t\t\t\t\tstyleRow = calcRow;\n\t\t\t\t} else {\n\t\t\t\t\tif (!(i % 2) && oddRow) {\n\t\t\t\t\t\tstyleRow = oddRow;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i % 2 && evenRow) {\n\t\t\t\t\t\tstyleRow = evenRow;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (styleRow) {\n\t\t\t\t\tself.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t}\n\n\t\t\t\tbody.appendChild(rowEl);\n\t\t\t});\n\t\t}\n\n\t\tfunction processGroup(group, calcObj) {\n\t\t\tvar groupEl = document.createElement(\"tr\"),\n\t\t\t groupCellEl = document.createElement(\"td\");\n\n\t\t\tgroupCellEl.colSpan = columns.length;\n\n\t\t\tgroupCellEl.innerHTML = group.key;\n\n\t\t\tgroupEl.appendChild(groupCellEl);\n\t\t\tbody.appendChild(groupEl);\n\n\t\t\tself.mapElementStyles(firstGroup, groupEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\n\t\t\tif (group.subGroups) {\n\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tprocessGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t}\n\n\t\t\t\tprocessRows(group.rows);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (group) {\n\t\t\t\tprocessGroup(group, calcs || {});\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t}\n\n\t\t\tprocessRows(rows);\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t}\n\t\t}\n\n\t\tthis.htmlElement.appendChild(body);\n\t};\n\n\tClipboard.prototype.mapElementStyles = function (from, to, props) {\n\n\t\tvar lookup = {\n\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\"color\": \"fontColor\",\n\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\"border-bottom\": \"borderBottom\"\n\t\t};\n\n\t\tif (window.getComputedStyle) {\n\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\tprops.forEach(function (prop) {\n\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t});\n\t\t}\n\n\t\t// return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];\n\t};\n\n\tClipboard.prototype.copySelectors = {\n\t\tuserSelection: function userSelection(config, params) {\n\t\t\treturn params;\n\t\t},\n\t\tselected: function selected(config, params) {\n\t\t\tvar rows = [];\n\n\t\t\tif (this.table.modExists(\"selectRow\", true)) {\n\t\t\t\trows = this.table.modules.selectRow.getSelectedRows();\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - select coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t},\n\t\ttable: function table(config, params) {\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - table coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(this.table.rowManager.getComponents(), config, params);\n\t\t},\n\t\tactive: function active(config, params) {\n\t\t\tvar rows;\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\trows = this.buildComplexRows(config);\n\t\t\t} else {\n\t\t\t\trows = this.table.rowManager.getComponents(true);\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t}\n\t};\n\n\tClipboard.prototype.copyFormatters = {\n\t\traw: function raw(data, params) {\n\t\t\treturn data;\n\t\t},\n\t\ttable: function table(data, params) {\n\t\t\tvar output = [];\n\n\t\t\tdata.forEach(function (row) {\n\t\t\t\trow.forEach(function (value) {\n\t\t\t\t\tif (typeof value == \"undefined\") {\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = typeof value == \"undefined\" || value === null ? \"\" : value.toString();\n\n\t\t\t\t\tif (value.match(/\\r|\\n/)) {\n\t\t\t\t\t\tvalue = value.split('\"').join('\"\"');\n\t\t\t\t\t\tvalue = '\"' + value + '\"';\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\toutput.push(row.join(\"\\t\"));\n\t\t\t});\n\n\t\t\treturn output.join(\"\\n\");\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteParsers = {\n\t\ttable: function table(clipboard) {\n\t\t\tvar data = [],\n\t\t\t success = false,\n\t\t\t headerFindSuccess = true,\n\t\t\t columns = this.table.columnManager.columns,\n\t\t\t columnMap = [],\n\t\t\t rows = [];\n\n\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\t\tclipboard.forEach(function (row) {\n\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t});\n\n\t\t\tif (data.length && !(data.length === 1 && data[0].length < 2)) {\n\t\t\t\tsuccess = true;\n\n\t\t\t\t//check if headers are present by title\n\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (column) {\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//check if column headers are present by field\n\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\theaderFindSuccess = true;\n\t\t\t\t\tcolumnMap = [];\n\n\t\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (column) {\n\t\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//remove header row if found\n\t\t\t\tif (headerFindSuccess) {\n\t\t\t\t\tdata.shift();\n\t\t\t\t}\n\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvar row = {};\n\n\t\t\t\t\titem.forEach(function (value, i) {\n\t\t\t\t\t\tif (columnMap[i]) {\n\t\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\treturn rows;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteActions = {\n\t\treplace: function replace(rows) {\n\t\t\treturn this.table.setData(rows);\n\t\t},\n\t\tupdate: function update(rows) {\n\t\t\treturn this.table.updateOrAddData(rows);\n\t\t},\n\t\tinsert: function insert(rows) {\n\t\t\treturn this.table.addData(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"clipboard\", Clipboard);\n\n\tvar DataTree = function DataTree(table) {\n\t\tthis.table = table;\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function () {};\n\n\t\tthis.displayIndex = 0;\n\t};\n\n\tDataTree.prototype.initialize = function () {\n\t\tvar dummyEl = null,\n\t\t firstCol = this.table.columnManager.getFirstVisibileColumn(),\n\t\t options = this.table.options;\n\n\t\tthis.field = options.dataTreeChildField;\n\t\tthis.indent = options.dataTreeChildIndent;\n\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\n\t\tif (options.dataTreeBranchElement) {\n\n\t\t\tif (options.dataTreeBranchElement === true) {\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t} else {\n\t\t\t\tif (typeof options.dataTreeBranchElement === \"string\") {\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t} else {\n\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.dataTreeCollapseElement) {\n\t\t\tif (typeof options.dataTreeCollapseElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.collapseEl.innerHTML = \"<div class='tabulator-data-tree-control-collapse'></div>\";\n\t\t}\n\n\t\tif (options.dataTreeExpandElement) {\n\t\t\tif (typeof options.dataTreeExpandElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.expandEl.innerHTML = \"<div class='tabulator-data-tree-control-expand'></div>\";\n\t\t}\n\n\t\tswitch (_typeof(options.dataTreeStartExpanded)) {\n\t\t\tcase \"boolean\":\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tDataTree.prototype.initializeRow = function (row) {\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === \"object\" && childArray !== null;\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: 0,\n\t\t\topen: children ? this.startOpen(row.getComponent(), 0) : false,\n\t\t\tcontrolEl: false,\n\t\t\tbranchEl: false,\n\t\t\tparent: false,\n\t\t\tchildren: children\n\t\t};\n\t};\n\n\tDataTree.prototype.layoutRow = function (row) {\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\t el = cell.getElement(),\n\t\t config = row.modules.dataTree;\n\n\t\tif (config.branchEl) {\n\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\tif (config.index) {\n\t\t\tif (this.branchEl) {\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\t\t\t\tconfig.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + \"px\";\n\t\t\t} else {\n\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + \"px\";\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.generateControlElement = function (row, el) {\n\t\tvar _this28 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t el = el || row.getCells()[0].getElement(),\n\t\t oldControl = config.controlEl;\n\n\t\tif (config.children !== false) {\n\n\t\t\tif (config.open) {\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.collapseRow(row);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif (oldControl && oldControl.parentNode === el) {\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl, oldControl);\n\t\t\t} else {\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tDataTree.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tDataTree.prototype.getRows = function (rows) {\n\t\tvar _this29 = this;\n\n\t\tvar output = [];\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif (row instanceof Row) {\n\n\t\t\t\tconfig = row.modules.dataTree.children;\n\n\t\t\t\tif (!config.index && config.children !== false) {\n\t\t\t\t\tchildren = _this29.getChildren(row);\n\n\t\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.getChildren = function (row) {\n\t\tvar _this30 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t children = [],\n\t\t output = [];\n\n\t\tif (config.children !== false && config.open) {\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"filter\")) {\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t} else {\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"sort\")) {\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach(function (child) {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = _this30.getChildren(child);\n\n\t\t\t\tsubChildren.forEach(function (sub) {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.generateChildren = function (row) {\n\t\tvar _this31 = this;\n\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif (!Array.isArray(childArray)) {\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach(function (childData) {\n\t\t\tvar childRow = new Row(childData || {}, _this31.table.rowManager);\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\t\t\tif (childRow.modules.dataTree.children) {\n\t\t\t\tchildRow.modules.dataTree.open = _this31.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t};\n\n\tDataTree.prototype.expandRow = function (row, silent) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.collapseRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.toggleRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tif (config.open) {\n\t\t\t\tthis.collapseRow(row);\n\t\t\t} else {\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getTreeParent = function (row) {\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t};\n\n\tDataTree.prototype.getTreeChildren = function (row) {\n\t\tvar config = row.modules.dataTree,\n\t\t output = [];\n\n\t\tif (config.children) {\n\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach(function (childRow) {\n\t\t\t\tif (childRow instanceof Row) {\n\t\t\t\t\toutput.push(childRow.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.checkForRestyle = function (cell) {\n\t\tif (!cell.row.cells.indexOf(cell)) {\n\t\t\tif (cell.row.modules.dataTree.children !== false) {\n\t\t\t\tcell.row.reinitialize();\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getChildField = function () {\n\t\treturn this.field;\n\t};\n\n\tTabulator.prototype.registerModule(\"dataTree\", DataTree);\n\tvar Download = function Download(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fields = {}; //hold filed multi dimension arrays\n\t\tthis.columnsByIndex = []; //hold columns in their order in the table\n\t\tthis.columnsByField = {}; //hold columns with lookup by field name\n\t\tthis.config = {};\n\t};\n\n\t//trigger file download\n\tDownload.prototype.download = function (type, filename, options, interceptCallback) {\n\t\tvar self = this,\n\t\t downloadFunc = false;\n\t\tthis.processConfig();\n\n\t\tfunction buildLink(data, mime) {\n\t\t\tif (interceptCallback) {\n\t\t\t\tif (interceptCallback === true) {\n\t\t\t\t\tself.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t} else {\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof type == \"function\") {\n\t\t\tdownloadFunc = type;\n\t\t} else {\n\t\t\tif (self.downloaders[type]) {\n\t\t\t\tdownloadFunc = self.downloaders[type];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tthis.processColumns();\n\n\t\tif (downloadFunc) {\n\t\t\tdownloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);\n\t\t}\n\t};\n\n\tDownload.prototype.processConfig = function () {\n\t\tvar config = { //download config\n\t\t\tcolumnGroups: true,\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (this.table.options.downloadConfig) {\n\t\t\tfor (var key in this.table.options.downloadConfig) {\n\t\t\t\tconfig[key] = this.table.options.downloadConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\tthis.config.columnGroups = true;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tDownload.prototype.processColumns = function () {\n\t\tvar self = this;\n\n\t\tself.columnsByIndex = [];\n\t\tself.columnsByField = {};\n\n\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tself.columnsByIndex.push(column);\n\t\t\t\tself.columnsByField[column.field] = column;\n\t\t\t}\n\t\t});\n\t};\n\n\tDownload.prototype.processDefinitions = function () {\n\t\tvar self = this,\n\t\t processedDefinitions = [];\n\n\t\tif (this.config.columnGroups) {\n\t\t\tself.table.columnManager.columns.forEach(function (column) {\n\t\t\t\tvar colData = self.processColumnGroup(column);\n\n\t\t\t\tif (colData) {\n\t\t\t\t\tprocessedDefinitions.push(colData);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tself.columnsByIndex.forEach(function (column) {\n\t\t\t\tif (column.download !== false) {\n\t\t\t\t\t//isolate definiton from defintion object\n\t\t\t\t\tprocessedDefinitions.push(self.processDefinition(column));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn processedDefinitions;\n\t};\n\n\tDownload.prototype.processColumnGroup = function (column) {\n\t\tvar _this32 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\t\tvar processedColumn = this.processDefinition(column);\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: processedColumn.title,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this32.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t}\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t\tgroupData.definition = processedColumn;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.processDefinition = function (column) {\n\t\tvar def = {};\n\n\t\tfor (var key in column.definition) {\n\t\t\tdef[key] = column.definition[key];\n\t\t}\n\n\t\tif (typeof column.definition.downloadTitle != \"undefined\") {\n\t\t\tdef.title = column.definition.downloadTitle;\n\t\t}\n\n\t\treturn def;\n\t};\n\n\tDownload.prototype.processData = function () {\n\t\tvar _this33 = this;\n\n\t\tvar self = this,\n\t\t data = [],\n\t\t groups = [],\n\t\t calcs = {};\n\n\t\tif (this.config.rowGroups) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups();\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tdata.push(_this33.processGroupData(group));\n\t\t\t});\n\t\t} else {\n\t\t\tdata = self.table.rowManager.getData(true, \"download\");\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\n\t\t\tdata = {\n\t\t\t\tcalcs: calcs,\n\t\t\t\tdata: data\n\t\t\t};\n\t\t}\n\n\t\t//bulk data processing\n\t\tif (typeof self.table.options.downloadDataFormatter == \"function\") {\n\t\t\tdata = self.table.options.downloadDataFormatter(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tDownload.prototype.processGroupData = function (group) {\n\t\tvar _this34 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this34.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getData(true, \"download\");\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.triggerDownload = function (data, mime, type, filename, newTab) {\n\t\tvar element = document.createElement('a'),\n\t\t blob = new Blob([data], { type: mime }),\n\t\t filename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\n\t\tblob = this.table.options.downloadReady.call(this.table, data, blob);\n\n\t\tif (blob) {\n\n\t\t\tif (newTab) {\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t} else {\n\t\t\t\tif (navigator.msSaveOrOpenBlob) {\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.table.options.downloadComplete) {\n\t\t\t\tthis.table.options.downloadComplete();\n\t\t\t}\n\t\t}\n\t};\n\n\t//nested field lookup\n\tDownload.prototype.getFieldValue = function (field, data) {\n\t\tvar column = this.columnsByField[field];\n\n\t\tif (column) {\n\t\t\treturn column.getFieldValue(data);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tDownload.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//downloaders\n\tDownload.prototype.downloaders = {\n\t\tcsv: function csv(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t titles = [],\n\t\t\t fields = [],\n\t\t\t delimiter = options && options.delimiter ? options.delimiter : \",\",\n\t\t\t fileContents,\n\t\t\t output;\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.field);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column groups\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\t//generate header row\n\t\t\tfileContents = [titles.join(delimiter)];\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//generate each row of the table\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\n\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//escape quotation marks\n\t\t\t\t\t\trowData.push('\"' + String(value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t});\n\n\t\t\t\t\tfileContents.push(rowData.join(delimiter));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseGroup(group) {\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseRows(group.rows);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseRows(data);\n\t\t\t}\n\n\t\t\toutput = fileContents.join(\"\\n\");\n\n\t\t\tif (options.bom) {\n\t\t\t\toutput = '\\uFEFF' + output;\n\t\t\t}\n\n\t\t\tsetFileContents(output, \"text/csv\");\n\t\t},\n\n\t\tjson: function json(columns, data, options, setFileContents, config) {\n\t\t\tvar fileContents;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfileContents = JSON.stringify(data, null, '\\t');\n\n\t\t\tsetFileContents(fileContents, \"application/json\");\n\t\t},\n\n\t\tpdf: function pdf(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t fields = [],\n\t\t\t header = [],\n\t\t\t body = [],\n\t\t\t calcs = {},\n\t\t\t headerDepth = 1,\n\t\t\t table = \"\",\n\t\t\t autoTableParams = {},\n\t\t\t rowGroupStyles = options.rowGroupStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tcellPadding: 6,\n\t\t\t\tfillColor: 220\n\t\t\t},\n\t\t\t rowCalcStyles = options.rowCalcStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 10,\n\t\t\t\tcellPadding: 4,\n\t\t\t\tfillColor: 232\n\t\t\t},\n\t\t\t jsPDFParams = options.jsPDF || {},\n\t\t\t title = options && options.title ? options.title : \"\";\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.orientation) {\n\t\t\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.unit) {\n\t\t\t\tjsPDFParams.unit = \"pt\";\n\t\t\t}\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.field) {\n\t\t\t\t\t\theader.push(column.title || \"\");\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\theader = [header];\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tvar colSpan = column.width,\n\t\t\t\t rowSpan = 1,\n\t\t\t\t col = {\n\t\t\t\t\tcontent: column.title || \"\"\n\t\t\t\t};\n\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t\trowSpan = 1;\n\t\t\t\t} else {\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\trowSpan = headerDepth - level;\n\t\t\t\t}\n\n\t\t\t\tcol.rowSpan = rowSpan;\n\t\t\t\t// col.colSpan = colSpan;\n\n\t\t\t\theader[level].push(col);\n\n\t\t\t\tcolSpan--;\n\n\t\t\t\tif (rowSpan > 1) {\n\t\t\t\t\tfor (var i = level + 1; i < headerDepth; i++) {\n\t\t\t\t\t\theader[i].push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < colSpan; i++) {\n\t\t\t\t\theader[level].push(\"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.depth > headerDepth) {\n\t\t\t\t\t\theaderDepth = column.depth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfor (var i = 0; i < headerDepth; i++) {\n\t\t\t\t\theader.push([]);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\tfunction parseValue(value) {\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//build table rows\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tbody.push(parseRow(row));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseRow(row, styles) {\n\t\t\t\tvar rowData = [];\n\n\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\tvalue = parseValue(value);\n\n\t\t\t\t\tif (styles) {\n\t\t\t\t\t\trowData.push({\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t\tstyles: styles\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowData.push(value);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn rowData;\n\t\t\t}\n\n\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\tvar groupData = [];\n\n\t\t\t\tgroupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });\n\n\t\t\t\tbody.push(groupData);\n\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\tif (calcData) {\n\t\t\t\t\tif (pos) {\n\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\tbody.push(parseRow(calcData, rowCalcStyles));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t}\n\n\t\t\t\tparseRows(data);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\t\t\tif (options && options.autoTable) {\n\t\t\t\tif (typeof options.autoTable === \"function\") {\n\t\t\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t\t\t} else {\n\t\t\t\t\tautoTableParams = options.autoTable;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (title) {\n\t\t\t\tautoTableParams.addPageContent = function (data) {\n\t\t\t\t\tdoc.text(title, 40, 30);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tautoTableParams.head = header;\n\t\t\tautoTableParams.body = body;\n\n\t\t\tdoc.autoTable(autoTableParams);\n\n\t\t\tif (options && options.documentProcessing) {\n\t\t\t\toptions.documentProcessing(doc);\n\t\t\t}\n\n\t\t\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n\t\t},\n\n\t\txlsx: function xlsx(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t sheetName = options.sheetName || \"Sheet1\",\n\t\t\t workbook = { SheetNames: [], Sheets: {} },\n\t\t\t calcs = {},\n\t\t\t groupRowIndexs = [],\n\t\t\t groupColumnIndexs = [],\n\t\t\t calcRowIndexs = [],\n\t\t\t output;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfunction generateSheet() {\n\t\t\t\tvar titles = [],\n\t\t\t\t fields = [],\n\t\t\t\t rows = [],\n\t\t\t\t worksheet;\n\n\t\t\t\t//convert rows to worksheet\n\t\t\t\tfunction rowsToSheet() {\n\t\t\t\t\tvar sheet = {};\n\t\t\t\t\tvar range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };\n\n\t\t\t\t\tXLSX.utils.sheet_add_aoa(sheet, rows);\n\n\t\t\t\t\tsheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\t\t\t\tvar merges = generateMerges();\n\n\t\t\t\t\tif (merges.length) {\n\t\t\t\t\t\tsheet[\"!merges\"] = merges;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn sheet;\n\t\t\t\t}\n\n\t\t\t\tfunction parseSimpleTitles() {\n\t\t\t\t\t//get field lists\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\ttitles.push(column.title);\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(titles);\n\t\t\t\t}\n\n\t\t\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\t\t\tif (typeof titles[level] === \"undefined\") {\n\t\t\t\t\t\ttitles[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof groupColumnIndexs[level] === \"undefined\") {\n\t\t\t\t\t\tgroupColumnIndexs[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.width > 1) {\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"hoz\",\n\t\t\t\t\t\t\tstart: titles[level].length,\n\t\t\t\t\t\t\tend: titles[level].length + column.width - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\ttitles[level].push(column.title);\n\n\t\t\t\t\tif (column.subGroups) {\n\t\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\t\tpadColumnTitles(fields.length - 1, level);\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"vert\",\n\t\t\t\t\t\t\tstart: fields.length - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction padColumnTitles() {\n\t\t\t\t\tvar max = 0;\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len > max) {\n\t\t\t\t\t\t\tmax = len;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len < max) {\n\t\t\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (config.columnGroups) {\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\trows.push(title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseSimpleTitles();\n\t\t\t\t}\n\n\t\t\t\tfunction generateMerges() {\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\tgroupRowIndexs.forEach(function (index) {\n\t\t\t\t\t\toutput.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });\n\t\t\t\t\t});\n\n\t\t\t\t\tgroupColumnIndexs.forEach(function (merges, level) {\n\t\t\t\t\t\tmerges.forEach(function (merge) {\n\t\t\t\t\t\t\tif (merge.type === \"hoz\") {\n\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (level != titles.length - 1) {\n\t\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\n\t\t\t\t//generate each row of the table\n\t\t\t\tfunction parseRows(data) {\n\t\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\t\trows.push(parseRow(row));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction parseRow(row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\t\trowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\" ? JSON.stringify(value) : value);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn rowData;\n\t\t\t\t}\n\n\t\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\t\tif (calcData) {\n\t\t\t\t\t\tif (pos) {\n\t\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\t\tcalcRowIndexs.push(rows.length);\n\t\t\t\t\t\t\trows.push(parseRow(calcData));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\t\tvar groupData = [];\n\n\t\t\t\t\tgroupData.push(group.key);\n\n\t\t\t\t\tgroupRowIndexs.push(rows.length);\n\n\t\t\t\t\trows.push(groupData);\n\n\t\t\t\t\tif (group.subGroups) {\n\t\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (config.rowGroups) {\n\t\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(data);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tworksheet = rowsToSheet();\n\n\t\t\t\treturn worksheet;\n\t\t\t}\n\n\t\t\tif (options.sheetOnly) {\n\t\t\t\tsetFileContents(generateSheet());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.sheets) {\n\t\t\t\tfor (var sheet in options.sheets) {\n\n\t\t\t\t\tif (options.sheets[sheet] === true) {\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\t\t\tthis.table.modules.comms.send(options.sheets[sheet], \"download\", \"intercept\", {\n\t\t\t\t\t\t\ttype: \"xlsx\",\n\t\t\t\t\t\t\toptions: { sheetOnly: true },\n\t\t\t\t\t\t\tintercept: function intercept(data) {\n\t\t\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tworkbook.SheetNames.push(sheetName);\n\t\t\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t\t\t}\n\n\t\t\t//convert workbook to binary array\n\t\t\tfunction s2ab(s) {\n\t\t\t\tvar buf = new ArrayBuffer(s.length);\n\t\t\t\tvar view = new Uint8Array(buf);\n\t\t\t\tfor (var i = 0; i != s.length; ++i) {\n\t\t\t\t\tview[i] = s.charCodeAt(i) & 0xFF;\n\t\t\t\t}return buf;\n\t\t\t}\n\n\t\t\toutput = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n\t\t\tsetFileContents(s2ab(output), \"application/octet-stream\");\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"download\", Download);\n\n\tvar Edit = function Edit(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t};\n\n\t//initialize column editor\n\tEdit.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {\n\t\t\teditor: false,\n\t\t\tblocked: false,\n\t\t\tcheck: column.definition.editable,\n\t\t\tparams: column.definition.editorParams || {}\n\t\t};\n\n\t\t//set column editor\n\t\tswitch (_typeof(column.definition.editor)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.editor === \"tick\") {\n\t\t\t\t\tcolumn.definition.editor = \"tickCross\";\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t}\n\n\t\t\t\tif (self.editors[column.definition.editor]) {\n\t\t\t\t\tconfig.editor = self.editors[column.definition.editor];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\n\t\t\t\tif (column.definition.editor === true) {\n\n\t\t\t\t\tif (typeof column.definition.formatter !== \"function\") {\n\n\t\t\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\t\t\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (self.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\tconfig.editor = self.editors[column.definition.formatter];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconfig.editor = self.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (config.editor) {\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t};\n\n\tEdit.prototype.getCurrentCell = function () {\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t};\n\n\tEdit.prototype.clearEditor = function () {\n\t\tvar cell = this.currentCell,\n\t\t cellEl;\n\n\t\tthis.invalidEdit = false;\n\n\t\tif (cell) {\n\t\t\tthis.currentCell = false;\n\n\t\t\tcellEl = cell.getElement();\n\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\twhile (cellEl.firstChild) {\n\t\t\t\tcellEl.removeChild(cellEl.firstChild);\n\t\t\t}cell.row.getElement().classList.remove(\"tabulator-row-editing\");\n\t\t}\n\t};\n\n\tEdit.prototype.cancelEdit = function () {\n\n\t\tif (this.currentCell) {\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\n\t\t\tthis.clearEditor();\n\t\t\tcell.setValueActual(cell.getValue());\n\n\t\t\tif (cell.column.cellEvents.cellEditCancelled) {\n\t\t\t\tcell.column.cellEvents.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEditCancelled.call(this.table, component);\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tEdit.prototype.bindEditor = function (cell) {\n\t\tvar self = this,\n\t\t element = cell.getElement();\n\n\t\telement.setAttribute(\"tabindex\", 0);\n\n\t\telement.addEventListener(\"click\", function (e) {\n\t\t\tif (!element.classList.contains(\"tabulator-editing\")) {\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\tself.mouseClick = true;\n\t\t});\n\n\t\telement.addEventListener(\"focus\", function (e) {\n\t\t\tif (!self.recursionBlock) {\n\t\t\t\tself.edit(cell, e, false);\n\t\t\t}\n\t\t});\n\t};\n\n\tEdit.prototype.focusCellNoEvent = function (cell) {\n\t\tthis.recursionBlock = true;\n\t\tif (this.table.browser !== \"ie\") {\n\t\t\tcell.getElement().focus();\n\t\t}\n\t\tthis.recursionBlock = false;\n\t};\n\n\tEdit.prototype.editCell = function (cell, forceEdit) {\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t};\n\n\tEdit.prototype.edit = function (cell, e, forceEdit) {\n\t\tvar self = this,\n\t\t allowEdit = true,\n\t\t rendered = function rendered() {},\n\t\t element = cell.getElement(),\n\t\t cellEditor,\n\t\t component,\n\t\t params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\tif (this.currentCell) {\n\t\t\tif (!this.invalidEdit) {\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tvar valid = true;\n\n\t\t\t\tif (cell.column.modules.validate && self.table.modExists(\"validate\")) {\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);\n\t\t\t\t}\n\n\t\t\t\tif (valid === true) {\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\n\t\t\t\t\tself.focusCellNoEvent(cell);\n\t\t\t\t\trendered();\n\t\t\t\t\tself.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\tfunction onRendered(callback) {\n\t\t\trendered = callback;\n\t\t}\n\n\t\tif (!cell.column.modules.edit.blocked) {\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tswitch (_typeof(cell.column.modules.edit.check)) {\n\t\t\t\tcase \"function\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (allowEdit || forceEdit) {\n\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tself.currentCell = cell;\n\n\t\t\t\tcomponent = cell.getComponent();\n\n\t\t\t\tif (this.mouseClick) {\n\t\t\t\t\tthis.mouseClick = false;\n\n\t\t\t\t\tif (cell.column.cellEvents.cellClick) {\n\t\t\t\t\t\tcell.column.cellEvents.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (cell.column.cellEvents.cellEditing) {\n\t\t\t\t\tcell.column.cellEvents.cellEditing.call(this.table, component);\n\t\t\t\t}\n\n\t\t\t\tself.table.options.cellEditing.call(this.table, component);\n\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif (cellEditor !== false) {\n\n\t\t\t\t\tif (cellEditor instanceof Node) {\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\n\t\t\t\t\t\twhile (element.firstChild) {\n\t\t\t\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t\t\t\t}element.appendChild(cellEditor);\n\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function (e) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//default data editors\n\tEdit.prototype.editors = {\n\n\t\t//input element\n\t\tinput: function input(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\t//create and style input\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//resizable text area element\n\t\ttextarea: function textarea(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellValue = cell.getValue(),\n\t\t\t value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\t\t\t count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\n\t\t\t input = document.createElement(\"textarea\"),\n\t\t\t scrollHeight = 0;\n\n\t\t\t//create and style input\n\t\t\tinput.style.display = \"block\";\n\t\t\tinput.style.padding = \"2px\";\n\t\t\tinput.style.height = \"100%\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.whiteSpace = \"pre-wrap\";\n\t\t\tinput.style.resize = \"none\";\n\n\t\t\tinput.value = value;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t\t}, 300);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\tinput.addEventListener(\"keyup\", function () {\n\n\t\t\t\tinput.style.height = \"\";\n\n\t\t\t\tvar heightNow = input.scrollHeight;\n\n\t\t\t\tinput.style.height = heightNow + \"px\";\n\n\t\t\t\tif (heightNow != scrollHeight) {\n\t\t\t\t\tscrollHeight = heightNow;\n\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\tnumber: function number(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"number\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tvar blurFunc = function blurFunc(e) {\n\t\t\t\tonChange();\n\t\t\t};\n\n\t\t\tonRendered(function () {\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\trange: function range(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"range\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tonChange();\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//select\n\t\tselect: function select(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t dataItems = [],\n\t\t\t displayItems = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tif (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === \"object\" && !editorParams.values) {\n\t\t\t\tconsole.warn(\"DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\n\t\t\t\teditorParams = { values: editorParams };\n\t\t\t}\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar dataList = [];\n\t\t\t\tvar displayList = [];\n\n\t\t\t\tfunction processComplexListItem(item) {\n\t\t\t\t\tvar item = {\n\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,\n\t\t\t\t\t\tvalue: item.value,\n\t\t\t\t\t\telement: false\n\t\t\t\t\t};\n\n\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tdataList.push(item);\n\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\n\t\t\t\tif (typeof inputValues == \"function\") {\n\t\t\t\t\tinputValues = inputValues(cell);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item;\n\n\t\t\t\t\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\") {\n\n\t\t\t\t\t\t\tif (value.options) {\n\t\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\t\tlabel: value.label,\n\t\t\t\t\t\t\t\t\tgroup: true,\n\t\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\t\t\t\tvalue.options.forEach(function (item) {\n\t\t\t\t\t\t\t\t\tprocessComplexListItem(item);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tprocessComplexListItem(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataItems = dataList;\n\t\t\t\tdisplayItems = displayList;\n\n\t\t\t\tfillList();\n\t\t\t}\n\n\t\t\tfunction fillList() {\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\n\t\t\t\t\t\tif (item.group) {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\n\t\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\t\tel.classList.add(\"active\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item) {\n\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\t\t\t\tinput.value = item.label === \" \" ? \"\" : item.label;\n\n\t\t\t\tif (item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\n\t\t\t\t\tif (editorParams.values === true) {\n\t\t\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.readOnly = this.currentCell != false;\n\n\t\t\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\n\t\t\tif (editorParams.values === true) {\n\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t} else {\n\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t}\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(dataItems[index - 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < dataItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tcancelItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tshowList();\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//autocomplete\n\t\tautocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t allItems = [],\n\t\t\t displayItems = [],\n\t\t\t values = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar itemList = [];\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (editorParams.searchFunc) {\n\t\t\t\t\titemList.forEach(function (item) {\n\t\t\t\t\t\titem.search = {\n\t\t\t\t\t\t\ttitle: item.title,\n\t\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tallItems = itemList;\n\t\t\t}\n\n\t\t\tfunction filterList(term, intialLoad) {\n\t\t\t\tvar matches = [],\n\t\t\t\t searchObjs = [],\n\t\t\t\t searchResults = [];\n\n\t\t\t\tif (editorParams.searchFunc) {\n\n\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\tsearchObjs.push(item.search);\n\t\t\t\t\t});\n\n\t\t\t\t\tsearchResults = editorParams.searchFunc(term, searchObjs);\n\n\t\t\t\t\tsearchResults.forEach(function (result) {\n\t\t\t\t\t\tvar match = allItems.find(function (item) {\n\t\t\t\t\t\t\treturn item.search === result;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tmatches.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (term === \"\") {\n\n\t\t\t\t\t\tif (editorParams.showListOnEmpty) {\n\t\t\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tallItems.forEach(function (item) {\n\n\t\t\t\t\t\t\tif (item.value !== null || typeof item.value !== \"undefined\") {\n\t\t\t\t\t\t\t\tif (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {\n\t\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdisplayItems = matches;\n\n\t\t\t\tfillList(intialLoad);\n\t\t\t}\n\n\t\t\tfunction fillList(intialLoad) {\n\t\t\t\tvar current = false;\n\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\tel.innerHTML = item.title;\n\n\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\n\t\t\t\t\t\tif (intialLoad && item.value == initialValue) {\n\t\t\t\t\t\t\tinput.value = item.title;\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\n\t\t\t\tif (!current) {\n\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item, showInputValue) {\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\n\t\t\t\tif (item && item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (currentItem) {\n\t\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\t\tinput.value = currentItem.title;\n\t\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (editorParams.freetext) {\n\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (editorParams.allowEmpty && input.value === \"\") {\n\t\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\t\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t\t}if (editorParams.values === true) {\n\t\t\t\t\t\tvalues = getUniqueColumnValues();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = editorParams.values || [];\n\t\t\t\t\t}\n\n\t\t\t\t\tparseItems(values, initialValue);\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"search\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < displayItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 36: //home\n\t\t\t\t\tcase 35:\n\t\t\t\t\t\t//end\n\t\t\t\t\t\t//prevent table navigation while using input element\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keyup\", function (e) {\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38: //up arrow\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39: //up arrow\n\t\t\t\t\tcase 40: //right arrow\n\t\t\t\t\tcase 13: //enter\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tfilterList(input.value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"search\", function (e) {\n\t\t\t\tfilterList(input.value);\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tchooseItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tvar value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\t\t\t\tshowList();\n\t\t\t\tinput.value = value;\n\t\t\t\tfilterList(value, true);\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//start rating\n\t\tstar: function star(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t element = cell.getElement(),\n\t\t\t value = cell.getValue(),\n\t\t\t maxStars = element.getElementsByTagName(\"svg\").length || 5,\n\t\t\t size = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\t\t\t stars = [],\n\t\t\t starsHolder = document.createElement(\"div\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\t\t\t//change star type\n\t\t\tfunction starChange(val) {\n\t\t\t\tstars.forEach(function (star, i) {\n\t\t\t\t\tif (i < val) {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#488CE9\" stroke=\"#014AAE\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#010155\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//build stars\n\t\t\tfunction buildStar(i) {\n\n\t\t\t\tvar starHolder = document.createElement(\"span\");\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\n\t\t\t\tstars.push(nextStar);\n\n\t\t\t\tstarHolder.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tstarChange(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tsuccess(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.appendChild(nextStar);\n\t\t\t\tstarsHolder.appendChild(starHolder);\n\t\t\t}\n\n\t\t\t//handle keyboard navigation value change\n\t\t\tfunction changeValue(val) {\n\t\t\t\tvalue = val;\n\t\t\t\tstarChange(val);\n\t\t\t}\n\n\t\t\t//style cell\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\t//style holding element\n\t\t\tstarsHolder.style.verticalAlign = \"middle\";\n\t\t\tstarsHolder.style.display = \"inline-block\";\n\t\t\tstarsHolder.style.padding = \"4px\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", size);\n\t\t\tstar.setAttribute(\"height\", size);\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\t//create correct number of stars\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tbuildStar(i);\n\t\t\t}\n\n\t\t\t//ensure value does not exceed number of stars\n\t\t\tvalue = Math.min(parseInt(value), maxStars);\n\n\t\t\t// set initial styling of stars\n\t\t\tstarChange(value);\n\n\t\t\tstarsHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tstarChange(0);\n\t\t\t});\n\n\t\t\tstarsHolder.addEventListener(\"click\", function (e) {\n\t\t\t\tsuccess(0);\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function (e) {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tchangeValue(value + 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tchangeValue(value - 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tsuccess(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn starsHolder;\n\t\t},\n\n\t\t//draggable progress bar\n\t\tprogress: function progress(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar element = cell.getElement(),\n\t\t\t max = typeof editorParams.max === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100 : editorParams.max,\n\t\t\t min = typeof editorParams.min === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0 : editorParams.min,\n\t\t\t percent = (max - min) / 100,\n\t\t\t value = cell.getValue() || 0,\n\t\t\t handle = document.createElement(\"div\"),\n\t\t\t bar = document.createElement(\"div\"),\n\t\t\t mouseDrag,\n\t\t\t mouseDragWidth;\n\n\t\t\t//set new value\n\t\t\tfunction updateValue() {\n\t\t\t\tvar calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;\n\t\t\t\tsuccess(calcVal);\n\t\t\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\t\t\telement.setAttribute(\"aria-label\", value);\n\t\t\t}\n\n\t\t\t//style handle\n\t\t\thandle.style.position = \"absolute\";\n\t\t\thandle.style.right = \"0\";\n\t\t\thandle.style.top = \"0\";\n\t\t\thandle.style.bottom = \"0\";\n\t\t\thandle.style.width = \"5px\";\n\t\t\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t\t\t//style bar\n\t\t\tbar.style.display = \"inline-block\";\n\t\t\tbar.style.position = \"relative\";\n\t\t\t// bar.style.top = \"8px\";\n\t\t\t// bar.style.bottom = \"8px\";\n\t\t\t// bar.style.left = \"4px\";\n\t\t\t// bar.style.marginRight = \"4px\";\n\t\t\tbar.style.height = \"100%\";\n\t\t\tbar.style.backgroundColor = \"#488CE9\";\n\t\t\tbar.style.maxWidth = \"100%\";\n\t\t\tbar.style.minWidth = \"0%\";\n\n\t\t\t//style cell\n\t\t\telement.style.padding = \"4px 4px\";\n\n\t\t\t//make sure value is in range\n\t\t\tvalue = Math.min(parseFloat(value), max);\n\t\t\tvalue = Math.max(parseFloat(value), min);\n\n\t\t\t//workout percentage\n\t\t\tvalue = Math.round((value - min) / percent);\n\t\t\t// bar.style.right = value + \"%\";\n\t\t\tbar.style.width = value + \"%\";\n\n\t\t\telement.setAttribute(\"aria-valuemin\", min);\n\t\t\telement.setAttribute(\"aria-valuemax\", max);\n\n\t\t\tbar.appendChild(handle);\n\n\t\t\thandle.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tmouseDrag = e.screenX;\n\t\t\t\tmouseDragWidth = bar.offsetWidth;\n\t\t\t});\n\n\t\t\thandle.addEventListener(\"mouseover\", function () {\n\t\t\t\thandle.style.cursor = \"ew-resize\";\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\tbar.style.width = mouseDragWidth + e.screenX - mouseDrag + \"px\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tmouseDrag = false;\n\t\t\t\t\tmouseDragWidth = false;\n\n\t\t\t\t\tupdateValue();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth + element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth - element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tupdateValue();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function () {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\treturn bar;\n\t\t},\n\n\t\t//checkbox\n\t\ttickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t tristate = editorParams.tristate,\n\t\t\t indetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\t\t\t indetermState = false;\n\n\t\t\tinput.setAttribute(\"type\", \"checkbox\");\n\t\t\tinput.style.marginTop = \"5px\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = value;\n\n\t\t\tif (tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")) {\n\t\t\t\tindetermState = true;\n\t\t\t\tinput.indeterminate = true;\n\t\t\t}\n\n\t\t\tif (this.table.browser != \"firefox\") {\n\t\t\t\t//prevent blur issue on mac firefox\n\t\t\t\tonRendered(function () {\n\t\t\t\t\tinput.focus();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\n\n\t\t\tfunction setValue(blur) {\n\t\t\t\tif (tristate) {\n\t\t\t\t\tif (!blur) {\n\t\t\t\t\t\tif (input.checked && !indetermState) {\n\t\t\t\t\t\t\tinput.checked = false;\n\t\t\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\t\t\tindetermState = true;\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindetermState = false;\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (indetermState) {\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn input.checked;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\t\t\t\tsuccess(setValue());\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tsuccess(setValue(true));\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 13) {\n\t\t\t\t\tsuccess(setValue());\n\t\t\t\t}\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"edit\", Edit);\n\n\tvar Filter = function Filter(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterElements = []; //hold header filter elements for manipulation\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t};\n\n\t//initialize column header filter\n\tFilter.prototype.initializeColumn = function (column, value) {\n\t\tvar self = this,\n\t\t field = column.getField(),\n\t\t prevSuccess,\n\t\t params;\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\t\t\tvar filterType = column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\" || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\t type = \"\",\n\t\t\t filterFunc;\n\n\t\t\tif (typeof prevSuccess === \"undefined\" || prevSuccess !== value) {\n\n\t\t\t\tprevSuccess = value;\n\n\t\t\t\tif (!column.modules.filter.emptyFunc(value)) {\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch (_typeof(column.definition.headerFilterFunc)) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif (self.filters[column.definition.headerFilterFunc]) {\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!filterFunc) {\n\t\t\t\t\t\tswitch (filterType) {\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif (typeof colVal !== 'undefined' && colVal !== null) {\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = { value: value, func: filterFunc, type: type };\n\t\t\t\t} else {\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tself.changed = true;\n\n\t\t\t\tself.table.rowManager.filterRefresh();\n\t\t\t}\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess: success,\n\t\t\tattrType: false,\n\t\t\ttagType: false,\n\t\t\temptyFunc: false\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t};\n\n\tFilter.prototype.generateHeaderFilterElement = function (column, initialValue) {\n\t\tvar _this35 = this;\n\n\t\tvar self = this,\n\t\t success = column.modules.filter.success,\n\t\t field = column.getField(),\n\t\t filterElement,\n\t\t editor,\n\t\t editorElement,\n\t\t cellWrapper,\n\t\t typingTimer,\n\t\t searchTrigger,\n\t\t params;\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {}\n\n\t\tif (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {\n\t\t\tvar oldFilterElement = column.modules.filter.headerElement.parentNode;\n\t\t\tvar oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);\n\t\t\tif (oldFilterElementIndex >= 0) {\n\t\t\t\tself.headerFilterElements.splice(oldFilterElementIndex, 1);\n\t\t\t}\n\n\t\t\tvar oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);\n\t\t\tif (oldColumnIndex >= 0) {\n\t\t\t\tself.headerFilterColumns.splice(oldColumnIndex, 1);\n\t\t\t}\n\n\t\t\tcolumn.contentElement.removeChild(oldFilterElement);\n\t\t}\n\n\t\tif (field) {\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {\n\t\t\t\treturn !value && value !== \"0\";\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch (_typeof(column.definition.headerFilter)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (self.table.modules.edit.editors[column.definition.headerFilter]) {\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif ((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif (column.modules.edit && column.modules.edit.editor) {\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif ((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (editor) {\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);\n\n\t\t\t\tif (!editorElement) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!(editorElement instanceof Node)) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tif (field) {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|columns|\" + column.definition.field, function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.table.modules.localize.getText(\"headerFilters|default\"));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|default\", function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof self.column.definition.headerFilterPlaceholder !== \"undefined\" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", function (e) {\n\t\t\t\t\tvar left = _this35.table.columnManager.element.scrollLeft;\n\n\t\t\t\t\tif (left !== _this35.table.rowManager.element.scrollLeft) {\n\t\t\t\t\t\t_this35.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\t_this35.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function searchTrigger(e) {\n\t\t\t\t\tif (typingTimer) {\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function () {\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t}, 300);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\";\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif (column.definition.headerFilterLiveFilter !== false) {\n\n\t\t\t\t\tif (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"number\") {\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function (e) {\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\") {\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\n\t\t\t\t\tif (column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\") {\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tself.headerFilterElements.push(editorElement);\n\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t};\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.hideHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = 'none';\n\t\t});\n\t};\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.showHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = '';\n\t\t});\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterFocus = function (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterValue = function (column, value) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, value);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\tFilter.prototype.reloadHeaderFilter = function (column) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\t//check if the filters has changed since last use\n\tFilter.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//set standard filters\n\tFilter.prototype.setFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tself.filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tself.addFilter(field);\n\t};\n\n\t//add filter to array\n\tFilter.prototype.addFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tself.filterList.push(filter);\n\n\t\t\t\tself.changed = true;\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\tFilter.prototype.findFilter = function (filter) {\n\t\tvar self = this,\n\t\t column;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif (typeof filter.field == \"function\") {\n\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\treturn filter.field(data, filter.type || {}); // pass params to custom filter function\n\t\t\t};\n\t\t} else {\n\n\t\t\tif (self.filters[filter.type]) {\n\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, column.getFieldValue(data));\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, data[filter.field]);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t};\n\n\tFilter.prototype.findSubFilters = function (filters) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfilters.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getFilters = function (all, ajax) {\n\t\tvar output = [];\n\n\t\tif (all) {\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif (ajax) {\n\t\t\toutput.forEach(function (item) {\n\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t};\n\n\t//filter to Object\n\tFilter.prototype.filtersToArray = function (filterList, ajax) {\n\t\tvar _this36 = this;\n\n\t\tvar output = [];\n\n\t\tfilterList.forEach(function (filter) {\n\t\t\tvar item;\n\n\t\t\tif (Array.isArray(filter)) {\n\t\t\t\toutput.push(_this36.filtersToArray(filter, ajax));\n\t\t\t} else {\n\t\t\t\titem = { field: filter.field, type: filter.type, value: filter.value };\n\n\t\t\t\tif (ajax) {\n\t\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getHeaderFilters = function () {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfor (var key in this.headerFilters) {\n\t\t\toutput.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//remove filter from array\n\tFilter.prototype.removeFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tvar index = -1;\n\n\t\t\tif (_typeof(filter.field) == \"object\") {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (index > -1) {\n\t\t\t\tself.filterList.splice(index, 1);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear filters\n\tFilter.prototype.clearFilter = function (all) {\n\t\tthis.filterList = [];\n\n\t\tif (all) {\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.changed = true;\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear header filters\n\tFilter.prototype.clearHeaderFilter = function () {\n\t\tvar self = this;\n\n\t\tthis.headerFilters = {};\n\n\t\tthis.headerFilterColumns.forEach(function (column) {\n\t\t\tcolumn.modules.filter.value = null;\n\t\t\tself.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.changed = true;\n\t};\n\n\t//search data and return matching rows\n\tFilter.prototype.search = function (searchType, field, type, value) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach(function (filter) {\n\t\t\t\tif (!self.filterRecurse(filter, row.getData())) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\t\t});\n\n\t\treturn activeRows;\n\t};\n\n\t//filter row array\n\tFilter.prototype.filter = function (rowList, filters) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t activeRowComponents = [];\n\n\t\tif (self.table.options.dataFiltering) {\n\t\t\tself.table.options.dataFiltering.call(self.table, self.getFilters());\n\t\t}\n\n\t\tif (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {\n\n\t\t\trowList.forEach(function (row) {\n\t\t\t\tif (self.filterRow(row)) {\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif (self.table.options.dataFiltered) {\n\n\t\t\tactiveRows.forEach(function (row) {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tself.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t};\n\n\t//filter individual row\n\tFilter.prototype.filterRow = function (row, filters) {\n\t\tvar self = this,\n\t\t match = true,\n\t\t data = row.getData();\n\n\t\tself.filterList.forEach(function (filter) {\n\t\t\tif (!self.filterRecurse(filter, data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\t\tfor (var field in self.headerFilters) {\n\t\t\tif (!self.headerFilters[field].func(data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tFilter.prototype.filterRecurse = function (filter, data) {\n\t\tvar self = this,\n\t\t match = false;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\tfilter.forEach(function (subFilter) {\n\t\t\t\tif (self.filterRecurse(subFilter, data)) {\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t};\n\n\t//list of available filters\n\tFilter.prototype.filters = {\n\n\t\t//equal to\n\t\t\"=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal == filterVal ? true : false;\n\t\t},\n\n\t\t//less than\n\t\t\"<\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal < filterVal ? true : false;\n\t\t},\n\n\t\t//less than or equal to\n\t\t\"<=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal <= filterVal ? true : false;\n\t\t},\n\n\t\t//greater than\n\t\t\">\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal > filterVal ? true : false;\n\t\t},\n\n\t\t//greater than or equal to\n\t\t\">=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal >= filterVal ? true : false;\n\t\t},\n\n\t\t//not equal to\n\t\t\"!=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal != filterVal ? true : false;\n\t\t},\n\n\t\t\"regex\": function regex(filterVal, rowVal, rowData, filterParams) {\n\n\t\t\tif (typeof filterVal == \"string\") {\n\t\t\t\tfilterVal = new RegExp(filterVal);\n\t\t\t}\n\n\t\t\treturn filterVal.test(rowVal);\n\t\t},\n\n\t\t//contains the string\n\t\t\"like\": function like(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\t\treturn rowVal === filterVal ? true : false;\n\t\t\t} else {\n\t\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//in array\n\t\t\"in\": function _in(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (Array.isArray(filterVal)) {\n\t\t\t\treturn filterVal.indexOf(rowVal) > -1;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"filter\", Filter);\n\tvar Format = function Format(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t};\n\n\t//initialize column formatter\n\tFormat.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = { params: column.definition.formatterParams || {} };\n\n\t\t//set column formatter\n\t\tswitch (_typeof(column.definition.formatter)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\n\t\t\t\t\tif (typeof config.params.crossElement == \"undefined\") {\n\t\t\t\t\t\tconfig.params.crossElement = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false\");\n\t\t\t\t}\n\n\t\t\t\tif (self.formatters[column.definition.formatter]) {\n\t\t\t\t\tconfig.formatter = self.formatters[column.definition.formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", column.definition.formatter);\n\t\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = column.definition.formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.format = config;\n\t};\n\n\tFormat.prototype.cellRendered = function (cell) {\n\t\tif (cell.column.modules.format.renderedCallback) {\n\t\t\tcell.column.modules.format.renderedCallback();\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tFormat.prototype.formatValue = function (cell) {\n\t\tvar component = cell.getComponent(),\n\t\t params = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\n\t\tfunction onRendered(callback) {\n\t\t\tcell.column.modules.format.renderedCallback = callback;\n\t\t}\n\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t};\n\n\tFormat.prototype.sanitizeHTML = function (value) {\n\t\tif (value) {\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tFormat.prototype.emptyToSpace = function (value) {\n\t\treturn value === null || typeof value === \"undefined\" ? \" \" : value;\n\t};\n\n\t//get formatter for cell\n\tFormat.prototype.getFormatter = function (formatter) {\n\t\tvar formatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.formatters[formatter]) {\n\t\t\t\t\tformatter = this.formatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tformatter = formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn formatter;\n\t};\n\n\t//default data formatters\n\tFormat.prototype.formatters = {\n\t\t//plain text value\n\t\tplaintext: function plaintext(cell, formatterParams, onRendered) {\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//html text value\n\t\thtml: function html(cell, formatterParams, onRendered) {\n\t\t\treturn cell.getValue();\n\t\t},\n\n\t\t//multiline text area\n\t\ttextarea: function textarea(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//currency formatting\n\t\tmoney: function money(cell, formatterParams, onRendered) {\n\t\t\tvar floatVal = parseFloat(cell.getValue()),\n\t\t\t number,\n\t\t\t integer,\n\t\t\t decimal,\n\t\t\t rgx;\n\n\t\t\tvar decimalSym = formatterParams.decimal || \".\";\n\t\t\tvar thousandSym = formatterParams.thousand || \",\";\n\t\t\tvar symbol = formatterParams.symbol || \"\";\n\t\t\tvar after = !!formatterParams.symbolAfter;\n\t\t\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\t\t\tif (isNaN(floatVal)) {\n\t\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t\t}\n\n\t\t\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\t\t\tnumber = String(number).split(\".\");\n\n\t\t\tinteger = number[0];\n\t\t\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\t\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\t\twhile (rgx.test(integer)) {\n\t\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t\t}\n\n\t\t\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\n\t\t},\n\n\t\t//clickable anchor tag\n\t\tlink: function link(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t urlPrefix = formatterParams.urlPrefix || \"\",\n\t\t\t label = this.emptyToSpace(value),\n\t\t\t el = document.createElement(\"a\"),\n\t\t\t data;\n\n\t\t\tif (formatterParams.labelField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tlabel = data[formatterParams.labelField];\n\t\t\t}\n\n\t\t\tif (formatterParams.label) {\n\t\t\t\tswitch (_typeof(formatterParams.label)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlabel = formatterParams.label;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (formatterParams.urlField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tvalue = data[formatterParams.urlField];\n\t\t\t}\n\n\t\t\tif (formatterParams.url) {\n\t\t\t\tswitch (_typeof(formatterParams.url)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\t\tif (formatterParams.target) {\n\t\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t\t}\n\n\t\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//image element\n\t\timage: function image(cell, formatterParams, onRendered) {\n\t\t\tvar el = document.createElement(\"img\");\n\t\t\tel.setAttribute(\"src\", cell.getValue());\n\n\t\t\tswitch (_typeof(formatterParams.height)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.height = formatterParams.height;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch (_typeof(formatterParams.width)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.width = formatterParams.width;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"load\", function () {\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t});\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//tick or cross\n\t\ttickCross: function tickCross(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t empty = formatterParams.allowEmpty,\n\t\t\t truthy = formatterParams.allowTruthy,\n\t\t\t tick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>',\n\t\t\t cross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\n\t\t\tif (truthy && value || value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\") {\n\t\t\t\telement.setAttribute(\"aria-checked\", true);\n\t\t\t\treturn tick || \"\";\n\t\t\t} else {\n\t\t\t\tif (empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")) {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\t\t\treturn \"\";\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\t\t\treturn cross || \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetime: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar outputFormat = formatterParams.outputFormat || \"DD/MM/YYYY hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\treturn newDatetime.format(outputFormat);\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetimediff: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\t\t\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : undefined;\n\t\t\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\t\t\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : moment();\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\tif (humanize) {\n\t\t\t\t\treturn moment.duration(newDatetime.diff(date)).humanize(suffix);\n\t\t\t\t} else {\n\t\t\t\t\treturn newDatetime.diff(date, unit) + (suffix ? \" \" + suffix : \"\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//select\n\t\tlookup: function lookup(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue();\n\n\t\t\tif (typeof formatterParams[value] === \"undefined\") {\n\t\t\t\tconsole.warn('Missing display value for ' + value);\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn formatterParams[value];\n\t\t},\n\n\t\t//star rating\n\t\tstar: function star(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\t\t\t stars = document.createElement(\"span\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\t\t\t starActive = '<polygon fill=\"#FFEA00\" stroke=\"#C1AB60\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>',\n\t\t\t starInactive = '<polygon fill=\"#D2D2D2\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\n\t\t\t//style stars holder\n\t\t\tstars.style.verticalAlign = \"middle\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", \"14\");\n\t\t\tstar.setAttribute(\"height\", \"14\");\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\tvalue = parseInt(value) < maxStars ? parseInt(value) : maxStars;\n\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\t\t\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\t\t\tstars.appendChild(nextStar);\n\t\t\t}\n\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\telement.setAttribute(\"aria-label\", value);\n\n\t\t\treturn stars;\n\t\t},\n\n\t\ttraffic: function traffic(cell, formatterParams, onRendered) {\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t el = document.createElement(\"span\"),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t colors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\t\t\t color = \"#666666\",\n\t\t\t percent,\n\t\t\t percentValue;\n\n\t\t\tif (isNaN(value) || typeof cell.getValue() === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-traffic-light\");\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set color\n\t\t\tswitch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = colors;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = colors(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(colors)) {\n\t\t\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = colors[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.style.backgroundColor = color;\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//progress bar\n\t\tprogress: function progress(cell, formatterParams, onRendered) {\n\t\t\t//progress bar\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t element = cell.getElement(),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\t\t\t percent,\n\t\t\t percentValue,\n\t\t\t color,\n\t\t\t legend,\n\t\t\t legendColor,\n\t\t\t top,\n\t\t\t left,\n\t\t\t right,\n\t\t\t bottom;\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set bar color\n\t\t\tswitch (_typeof(formatterParams.color)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = formatterParams.color;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = formatterParams.color(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.color)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.color.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tcolor = \"#2DC214\";\n\t\t\t}\n\n\t\t\t//generate legend\n\t\t\tswitch (_typeof(formatterParams.legend)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegend = formatterParams.legend;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegend = formatterParams.legend(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tlegend = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegend = false;\n\t\t\t}\n\n\t\t\t//set legend color\n\t\t\tswitch (_typeof(formatterParams.legendColor)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.legendColor)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.legendColor.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegendColor = \"#000\";\n\t\t\t}\n\n\t\t\telement.style.minWidth = \"30px\";\n\t\t\telement.style.position = \"relative\";\n\n\t\t\telement.setAttribute(\"aria-label\", percentValue);\n\n\t\t\treturn \"<div style='position:realtive; height:100%;' data-max='\" + max + \"' data-min='\" + min + \"'><div style='position:relative; height:100%; width:calc(\" + percentValue + \"%); background-color:\" + color + \"; display:inline-block;'></div></div>\" + (legend ? \"<div style='position:absolute; top:4px; left:0; text-align:\" + legendAlign + \"; width:100%; color:\" + legendColor + \";'>\" + legend + \"</div>\" : \"\");\n\t\t},\n\n\t\t//background color\n\t\tcolor: function color(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\t\t\treturn \"\";\n\t\t},\n\n\t\t//tick icon\n\t\tbuttonTick: function buttonTick(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>';\n\t\t},\n\n\t\t//cross icon\n\t\tbuttonCross: function buttonCross(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\t\t},\n\n\t\t//current row number\n\t\trownum: function rownum(cell, formatterParams, onRendered) {\n\t\t\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\n\t\t},\n\n\t\t//row handle\n\t\thandle: function handle(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\t\t\treturn \"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>\";\n\t\t},\n\n\t\tresponsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {\n\t\t\tvar self = this,\n\t\t\t open = false,\n\t\t\t el = document.createElement(\"div\");\n\n\t\t\tfunction toggleList(isOpen) {\n\t\t\t\tvar collapse = cell.getRow().getElement().getElementsByClassName(\"tabulator-responsive-collapse\")[0];\n\n\t\t\t\topen = isOpen;\n\n\t\t\t\tif (open) {\n\t\t\t\t\tel.classList.add(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = '';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\t\tel.innerHTML = \"<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>\";\n\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\t\t\tif (self.table.options.responsiveLayoutCollapseStartOpen) {\n\t\t\t\topen = true;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\ttoggleList(!open);\n\t\t\t});\n\n\t\t\ttoggleList(open);\n\n\t\t\treturn el;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"format\", Format);\n\n\tvar FrozenColumns = function FrozenColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightPadding = 0;\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.scrollEndTimer = false;\n\t};\n\n\t//reset initial state\n\tFrozenColumns.prototype.reset = function () {\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.active = false;\n\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\n\t};\n\n\t//initialize specific column\n\tFrozenColumns.prototype.initializeColumn = function (column) {\n\t\tvar config = { margin: 0, edge: false };\n\n\t\tif (column.definition.frozen) {\n\n\t\t\tif (!column.parent.isGroup) {\n\n\t\t\t\tif (!column.isGroup) {\n\t\t\t\t\tconfig.position = this.initializationMode;\n\n\t\t\t\t\tif (this.initializationMode == \"left\") {\n\t\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.active = true;\n\n\t\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Frozen Column Error - Column Groups cannot be frozen\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Frozen Column Error - Grouped columns cannot be frozen\");\n\t\t\t}\n\t\t} else {\n\t\t\tthis.initializationMode = \"right\";\n\t\t}\n\t};\n\n\t//quick layout to smooth horizontal scrolling\n\tFrozenColumns.prototype.scrollHorizontal = function () {\n\t\tvar _this37 = this;\n\n\t\tvar rows;\n\n\t\tif (this.active) {\n\t\t\tclearTimeout(this.scrollEndTimer);\n\n\t\t\t//layout all rows after scroll is complete\n\t\t\tthis.scrollEndTimer = setTimeout(function () {\n\t\t\t\t_this37.layout();\n\t\t\t}, 100);\n\n\t\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\t\tthis.calcMargins();\n\n\t\t\tthis.layoutColumnPosition();\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\t_this37.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\t//calculate margins for rows\n\tFrozenColumns.prototype.calcMargins = function () {\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\n\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\n\n\t\t//calculate right frozen columns\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\n\t};\n\n\t//layout calculation rows\n\tFrozenColumns.prototype.layoutCalcRows = function () {\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\t\t\tif (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\tif (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t};\n\n\t//calculate column positions and layout headers\n\tFrozenColumns.prototype.layoutColumnPosition = function (allCells) {\n\t\tvar _this38 = this;\n\n\t\tthis.leftColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38._calcSpace(_this38.leftColumns, i) + _this38.table.columnManager.scrollLeft + \"px\";\n\n\t\t\tif (i == _this38.leftColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38.rightPadding - _this38._calcSpace(_this38.rightColumns, i + 1) + \"px\";\n\n\t\t\tif (i == _this38.rightColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//layout columns appropropriatly\n\tFrozenColumns.prototype.layout = function () {\n\t\tvar self = this,\n\t\t rightMargin = 0;\n\n\t\tif (self.active) {\n\n\t\t\t//calculate row padding\n\t\t\tthis.calcMargins();\n\n\t\t\t// self.table.rowManager.activeRows.forEach(function(row){\n\t\t\t// \tself.layoutRow(row);\n\t\t\t// });\n\n\t\t\t// if(self.table.options.dataTree){\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\tself.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// }\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition(true);\n\n\t\t\t// if(tableHolder.scrollHeight > tableHolder.clientHeight){\n\t\t\t// \trightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;\n\t\t\t// }\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\tFrozenColumns.prototype.layoutRow = function (row) {\n\t\tvar _this39 = this;\n\n\t\tvar rowEl = row.getElement();\n\n\t\trowEl.style.paddingLeft = this.leftMargin;\n\t\t// rowEl.style.paddingRight = this.rightMargin + \"px\";\n\n\t\tthis.leftColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\t};\n\n\tFrozenColumns.prototype.layoutElement = function (element, column) {\n\n\t\tif (column.modules.frozen) {\n\t\t\telement.style.position = \"absolute\";\n\t\t\telement.style.left = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\n\t\t\tif (column.modules.frozen.edge) {\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t};\n\n\tFrozenColumns.prototype._calcSpace = function (columns, index) {\n\t\tvar width = 0;\n\n\t\tfor (var i = 0; i < index; i++) {\n\t\t\tif (columns[i].visible) {\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenColumns\", FrozenColumns);\n\tvar FrozenRows = function FrozenRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\tFrozenRows.prototype.initialize = function () {\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t};\n\n\tFrozenRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tFrozenRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tFrozenRows.prototype.isFrozen = function () {\n\t\treturn !!this.rows.length;\n\t};\n\n\t//filter frozen rows out of display data\n\tFrozenRows.prototype.getRows = function (rows) {\n\t\tvar self = this,\n\t\t frozen = [],\n\t\t output = rows.slice(0);\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tFrozenRows.prototype.freezeRow = function (row) {\n\t\tif (!row.modules.frozen) {\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tthis.styleRows();\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.unfreezeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif (row.modules.frozen) {\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tvar rowEl = row.getElement();\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.splice(index, 1);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tif (this.rows.length) {\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.styleRows = function (row) {\n\t\tvar self = this;\n\n\t\tthis.rows.forEach(function (row, i) {\n\t\t\tself.table.rowManager.styleRow(row, i);\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenRows\", FrozenRows);\n\n\t//public group object\n\tvar GroupComponent = function GroupComponent(group) {\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\t};\n\n\tGroupComponent.prototype.getKey = function () {\n\t\treturn this._group.key;\n\t};\n\n\tGroupComponent.prototype.getElement = function () {\n\t\treturn this._group.element;\n\t};\n\n\tGroupComponent.prototype.getRows = function () {\n\t\treturn this._group.getRows(true);\n\t};\n\n\tGroupComponent.prototype.getSubGroups = function () {\n\t\treturn this._group.getSubGroups(true);\n\t};\n\n\tGroupComponent.prototype.getParentGroup = function () {\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t};\n\n\tGroupComponent.prototype.getVisibility = function () {\n\t\treturn this._group.visible;\n\t};\n\n\tGroupComponent.prototype.show = function () {\n\t\tthis._group.show();\n\t};\n\n\tGroupComponent.prototype.hide = function () {\n\t\tthis._group.hide();\n\t};\n\n\tGroupComponent.prototype.toggle = function () {\n\t\tthis._group.toggleVisibility();\n\t};\n\n\tGroupComponent.prototype._getSelf = function () {\n\t\treturn this._group;\n\t};\n\n\tGroupComponent.prototype.getTable = function () {\n\t\treturn this._group.groupManager.table;\n\t};\n\n\t//////////////////////////////////////////////////\n\t//////////////// Group Functions /////////////////\n\t//////////////////////////////////////////////////\n\n\tvar Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {\n\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < groupManager.groupIDLookups.length - 1;\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\n\t\tthis.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0];\n\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\n\t\tthis.createValueGroups();\n\t};\n\n\tGroup.prototype.wipe = function () {\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element = false;\n\t\t\tthis.arrowElement = false;\n\t\t\tthis.elementContents = false;\n\t\t}\n\t};\n\n\tGroup.prototype.createElements = function () {\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-arrow\");\n\n\t\t//setup movable rows\n\t\tif (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")) {\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t};\n\n\tGroup.prototype.createValueGroups = function () {\n\t\tvar _this40 = this;\n\n\t\tvar level = this.level + 1;\n\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\tthis.groupManager.allowedValues[level].forEach(function (value) {\n\t\t\t\t_this40._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype.addBindings = function () {\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap,\n\t\t toggleElement;\n\n\t\t//handle group click events\n\t\tif (self.groupManager.table.options.groupClick) {\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblClick) {\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupContext) {\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tif (tap) {\n\t\t\t\t\tself.groupManager.table.options.groupTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.groupManager.table.options.groupDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\t\t\t\t\tclearTimeout(tapHold);\n\t\t\t\t\ttapHold = null;\n\t\t\t\t\ttap = false;\n\t\t\t\t\tself.groupManager.table.options.groupTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupToggleElement) {\n\t\t\ttoggleElement = self.groupManager.table.options.groupToggleElement == \"arrow\" ? self.arrowElement : self.element;\n\n\t\t\ttoggleElement.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tself.toggleVisibility();\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype._createGroup = function (groupID, level) {\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroup.prototype._addRowToGroup = function (row) {\n\n\t\tvar level = this.level + 1;\n\n\t\tif (this.hasSubGroups) {\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\t groupKey = level + \"_\" + groupID;\n\n\t\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\t\tif (this.groups[groupKey]) {\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.groups[groupKey]) {\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype._addRow = function (row) {\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t};\n\n\tGroup.prototype.insertRow = function (row, to, after) {\n\t\tvar data = this.conformRowData({});\n\n\t\trow.updateData(data);\n\n\t\tvar toIndex = this.rows.indexOf(to);\n\n\t\tif (toIndex > -1) {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.splice(toIndex + 1, 0, row);\n\t\t\t} else {\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t} else {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.push(row);\n\t\t\t} else {\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\n\t\trow.modules.group = this;\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\n\t\tthis.groupManager.updateGroupRows(true);\n\t};\n\n\tGroup.prototype.scrollHeader = function (left) {\n\t\tthis.arrowElement.style.marginLeft = left;\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\tchild.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroup.prototype.getRowIndex = function (row) {};\n\n\t//update row data to match grouping contraints\n\tGroup.prototype.conformRowData = function (data) {\n\t\tif (this.field) {\n\t\t\tdata[this.field] = this.key;\n\t\t} else {\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tGroup.prototype.removeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\n\t\tif (index > -1) {\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\n\t\tif (!this.groupManager.table.options.groupValues && !this.rows.length) {\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t} else {\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\n\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t} else {\n\n\t\t\tif (el.parentNode) {\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\n\t\t\tthis.generateGroupHeaderContents();\n\n\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (!this.groupList.length) {\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t} else {\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.getHeadersAndRows = function (noCalc) {\n\t\tvar output = [];\n\n\t\toutput.push(this);\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\n\t\t\t\toutput = output.concat(this.rows);\n\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\") {\n\n\t\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getData = function (visible, transform) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tthis._visSet();\n\n\t\tif (!visible || visible && this.visible) {\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t// Group.prototype.getRows = function(){\n\t// \tthis._visSet();\n\n\t// \treturn this.visible ? this.rows : [];\n\t// };\n\n\tGroup.prototype.getRowCount = function () {\n\t\tvar count = 0;\n\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t} else {\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t};\n\n\tGroup.prototype.toggleVisibility = function () {\n\t\tif (this.visible) {\n\t\t\tthis.hide();\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tGroup.prototype.hide = function () {\n\t\tthis.visible = false;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);\n\t};\n\n\tGroup.prototype.show = function () {\n\t\tvar self = this;\n\n\t\tself.visible = true;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\n\t\t\tvar prev = self.getElement();\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);\n\t};\n\n\tGroup.prototype._visSet = function () {\n\t\tvar data = [];\n\n\t\tif (typeof this.visible == \"function\") {\n\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t};\n\n\tGroup.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\t\tif (result) {\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.rows.find(function (item) {\n\t\t\t\treturn item === row;\n\t\t\t})) {\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tGroup.prototype.getSubGroups = function (component) {\n\t\tvar output = [];\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getRows = function (compoment) {\n\t\tvar output = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\toutput.push(compoment ? row.getComponent() : row);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.generateGroupHeaderContents = function () {\n\t\tvar data = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}if (typeof this.elementContents === \"string\") {\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t} else {\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t};\n\n\t////////////// Standard Row Functions //////////////\n\n\tGroup.prototype.getElement = function () {\n\t\tthis.addBindingsd = false;\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t} else {\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\n\t\tfor (var i = 0; i < this.element.childNodes.length; ++i) {\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\t// this.addBindings();\n\n\t\treturn this.element;\n\t};\n\n\tGroup.prototype.detachElement = function () {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\t//normalize the height of elements in the row\n\tGroup.prototype.normalizeHeight = function () {\n\t\tthis.setHeight(this.element.clientHeight);\n\t};\n\n\tGroup.prototype.initialize = function (force) {\n\t\tif (!this.initialized || force) {\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t};\n\n\tGroup.prototype.reinitialize = function () {\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\n\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\tGroup.prototype.setHeight = function (height) {\n\t\tif (this.height != height) {\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\tGroup.prototype.getHeight = function () {\n\t\treturn this.outerHeight;\n\t};\n\n\tGroup.prototype.getGroup = function () {\n\t\treturn this;\n\t};\n\n\tGroup.prototype.reinitializeHeight = function () {};\n\tGroup.prototype.calcHeight = function () {};\n\tGroup.prototype.setCellHeight = function () {};\n\tGroup.prototype.clearCellHeight = function () {};\n\n\t//////////////// Object Generation /////////////////\n\tGroup.prototype.getComponent = function () {\n\t\treturn new GroupComponent(this);\n\t};\n\n\t//////////////////////////////////////////////////\n\t////////////// Group Row Extension ///////////////\n\t//////////////////////////////////////////////////\n\n\tvar GroupRows = function GroupRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\t\tthis.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\t//initialize group configuration\n\tGroupRows.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t groupBy = self.table.options.groupBy,\n\t\t startOpen = self.table.options.groupStartOpen,\n\t\t groupHeader = self.table.options.groupHeader;\n\n\t\tthis.allowedValues = self.table.options.groupValues;\n\n\t\tself.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\n\t\tself.table.modules.localize.bind(\"groups|item\", function (langValue, lang) {\n\t\t\tself.headerGenerator[0] = function (value, count, data) {\n\t\t\t\t//header layout function\n\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"<span>(\" + count + \" \" + (count === 1 ? langValue : lang.groups.items) + \")</span>\";\n\t\t\t};\n\t\t});\n\n\t\tthis.groupIDLookups = [];\n\n\t\tif (Array.isArray(groupBy) || groupBy) {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\") {\n\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\") {\n\n\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\n\t\t\t\tcols.forEach(function (col) {\n\t\t\t\t\tif (col.definition.topCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (col.definition.bottomCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!Array.isArray(groupBy)) {\n\t\t\tgroupBy = [groupBy];\n\t\t}\n\n\t\tgroupBy.forEach(function (group, i) {\n\t\t\tvar lookupFunc, column;\n\n\t\t\tif (typeof group == \"function\") {\n\t\t\t\tlookupFunc = group;\n\t\t\t} else {\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(group);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.groupIDLookups.push({\n\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\tfunc: lookupFunc,\n\t\t\t\tvalues: self.allowedValues ? self.allowedValues[i] : false\n\t\t\t});\n\t\t});\n\n\t\tif (startOpen) {\n\n\t\t\tif (!Array.isArray(startOpen)) {\n\t\t\t\tstartOpen = [startOpen];\n\t\t\t}\n\n\t\t\tstartOpen.forEach(function (level) {\n\t\t\t\tlevel = typeof level == \"function\" ? level : function () {\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tself.startOpen = startOpen;\n\t\t}\n\n\t\tif (groupHeader) {\n\t\t\tself.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t}\n\n\t\tthis.initialized = true;\n\t};\n\n\tGroupRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tGroupRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//return appropriate rows with group headers\n\tGroupRows.prototype.getRows = function (rows) {\n\t\tif (this.groupIDLookups.length) {\n\n\t\t\tthis.table.options.dataGrouping.call(this.table);\n\n\t\t\tthis.generateGroups(rows);\n\n\t\t\tif (this.table.options.dataGrouped) {\n\t\t\t\tthis.table.options.dataGrouped.call(this.table, this.getGroups(true));\n\t\t\t}\n\n\t\t\treturn this.updateGroupRows();\n\t\t} else {\n\t\t\treturn rows.slice(0);\n\t\t}\n\t};\n\n\tGroupRows.prototype.getGroups = function (compoment) {\n\t\tvar groupComponents = [];\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroupComponents.push(compoment ? group.getComponent() : group);\n\t\t});\n\n\t\treturn groupComponents;\n\t};\n\n\tGroupRows.prototype.wipe = function () {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.wipe();\n\t\t});\n\t};\n\n\tGroupRows.prototype.pullGroupListData = function (groupList) {\n\t\tvar self = this;\n\t\tvar groupListData = [];\n\n\t\tgroupList.forEach(function (group) {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = self.pullGroupListData(group.groupList);\n\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t} else {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\n\t\t\t\tgroupListData.push(groupHeader);\n\n\t\t\t\tgroup.getRows().forEach(function (row) {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn groupListData;\n\t};\n\n\tGroupRows.prototype.getGroupedData = function () {\n\n\t\treturn this.pullGroupListData(this.groupList);\n\t};\n\n\tGroupRows.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\tif (result) {\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tGroupRows.prototype.countGroups = function () {\n\t\treturn this.groupList.length;\n\t};\n\n\tGroupRows.prototype.generateGroups = function (rows) {\n\t\tvar self = this,\n\t\t oldGroups = self.groups;\n\n\t\tself.groups = {};\n\t\tself.groupList = [];\n\n\t\tif (this.allowedValues && this.allowedValues[0]) {\n\t\t\tthis.allowedValues[0].forEach(function (value) {\n\t\t\t\tself.createGroup(value, 0, oldGroups);\n\t\t\t});\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroupRows.prototype.createGroup = function (groupID, level, oldGroups) {\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\t group;\n\n\t\toldGroups = oldGroups || [];\n\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (!this.groups[groupKey]) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[groupKey].addRow(row);\n\t};\n\n\tGroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t newGroupNeeded = !this.groups[\"0_\" + groupID];\n\n\t\tif (newGroupNeeded) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\n\t\treturn !newGroupNeeded;\n\t};\n\n\tGroupRows.prototype.updateGroupRows = function (force) {\n\t\tvar self = this,\n\t\t output = [],\n\t\t oldRowCount;\n\n\t\tself.groupList.forEach(function (group) {\n\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t});\n\n\t\t//force update of table display\n\t\tif (force) {\n\n\t\t\tvar displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());\n\n\t\t\tif (displayIndex !== true) {\n\t\t\t\tthis.setDisplayIndex(displayIndex);\n\t\t\t}\n\n\t\t\tself.table.rowManager.refreshActiveData(\"group\", true, true);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroupRows.prototype.scrollHeaders = function (left) {\n\t\tleft = left + \"px\";\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroupRows.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"groupRows\", GroupRows);\n\tvar History = function History(table) {\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.clear = function () {\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.action = function (type, component, data) {\n\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype: type,\n\t\t\tcomponent: component,\n\t\t\tdata: data\n\t\t});\n\n\t\tthis.index++;\n\t};\n\n\tHistory.prototype.getHistoryUndoSize = function () {\n\t\treturn this.index + 1;\n\t};\n\n\tHistory.prototype.getHistoryRedoSize = function () {\n\t\treturn this.history.length - (this.index + 1);\n\t};\n\n\tHistory.prototype.undo = function () {\n\n\t\tif (this.index > -1) {\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.redo = function () {\n\t\tif (this.history.length - 1 > this.index) {\n\n\t\t\tthis.index++;\n\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.redoers[action.type].call(this, action);\n\n\t\t\tthis.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.undoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\tHistory.prototype.redoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.newValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\t//rebind rows to new element after deletion\n\tHistory.prototype._rebindRow = function (oldRow, newRow) {\n\t\tthis.history.forEach(function (action) {\n\t\t\tif (action.component instanceof Row) {\n\t\t\t\tif (action.component === oldRow) {\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t} else if (action.component instanceof Cell) {\n\t\t\t\tif (action.component.row === oldRow) {\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif (field) {\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"history\", History);\n\tvar HtmlTableImport = function HtmlTableImport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t};\n\n\tHtmlTableImport.prototype.parseTable = function () {\n\t\tvar self = this,\n\t\t element = self.table.element,\n\t\t options = self.table.options,\n\t\t columns = options.columns,\n\t\t headers = element.getElementsByTagName(\"th\"),\n\t\t rows = element.getElementsByTagName(\"tbody\")[0],\n\t\t data = [],\n\t\t newTable;\n\n\t\tself.hasIndex = false;\n\n\t\tself.table.options.htmlImporting.call(this.table);\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for tablator inline options\n\t\tself._extractOptions(element, options);\n\n\t\tif (headers.length) {\n\t\t\tself._extractHeaders(headers, rows);\n\t\t} else {\n\t\t\tself._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor (var index = 0; index < rows.length; index++) {\n\t\t\tvar row = rows[index],\n\t\t\t cells = row.getElementsByTagName(\"td\"),\n\t\t\t item = {};\n\n\t\t\t//create index if the dont exist in table\n\t\t\tif (!self.hasIndex) {\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif (typeof this.fieldIndex[i] !== \"undefined\") {\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\t//create new element\n\t\tvar newElement = document.createElement(\"div\");\n\n\t\t//transfer attributes to new element\n\t\tvar attributes = element.attributes;\n\n\t\t// loop through attributes and apply them on div\n\n\t\tfor (var i in attributes) {\n\t\t\tif (_typeof(attributes[i]) == \"object\") {\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t}\n\t\t}\n\n\t\t// replace table with div element\n\t\telement.parentNode.replaceChild(newElement, element);\n\n\t\toptions.data = data;\n\n\t\tself.table.options.htmlImported.call(this.table);\n\n\t\t// // newElement.tabulator(options);\n\n\t\tthis.table.element = newElement;\n\t};\n\n\t//extract tabulator attribute options\n\tHtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach(function (item) {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor (var index in attributes) {\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif (typeof optionsList[name] !== \"undefined\") {\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//get value of attribute\n\tHtmlTableImport.prototype._attribValue = function (value) {\n\t\tif (value === \"true\") {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === \"false\") {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t//find column if it has already been defined\n\tHtmlTableImport.prototype._findCol = function (title) {\n\t\tvar match = this.table.options.columns.find(function (column) {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\t//extract column from headers\n\tHtmlTableImport.prototype._extractHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t exists = false,\n\t\t\t col = this._findCol(header.textContent),\n\t\t\t width,\n\t\t\t attributes;\n\n\t\t\tif (col) {\n\t\t\t\texists = true;\n\t\t\t} else {\n\t\t\t\tcol = { title: header.textContent.trim() };\n\t\t\t}\n\n\t\t\tif (!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif (width && !col.width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for tablator inline options\n\t\t\tattributes = header.attributes;\n\n\t\t\t// //check for tablator inline options\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\n\n\t\t\tfor (var i in attributes) {\n\t\t\t\tvar attrib = attributes[i],\n\t\t\t\t name;\n\n\t\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\n\t\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\t\tcol[name] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif (col.field == this.table.options.index) {\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif (!exists) {\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate blank headers\n\tHtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t col = { title: \"\", field: \"col\" + index };\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif (width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableImport\", HtmlTableImport);\n\tvar HtmlTableExport = function HtmlTableExport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t};\n\n\tHtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers = this.generateHeaderElements();\n\t\tvar body = this.generateBodyElements(visible);\n\n\t\tvar table = document.createElement(\"table\");\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\ttable.appendChild(headers);\n\t\ttable.appendChild(body);\n\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\treturn table;\n\t};\n\n\tHtmlTableExport.prototype.generateColumnGroupHeaders = function () {\n\t\tvar _this41 = this;\n\n\t\tvar output = [];\n\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar colData = _this41.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tHtmlTableExport.prototype.processColumnGroup = function (column) {\n\t\tvar _this42 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\n\t\tvar groupData = {\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this42.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\n\t\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && this.columnVisCheck(column)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tHtmlTableExport.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [],\n\t\t headerDepth = 0;\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tvar depth = headerDepth - level;\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\tcolumn.height = column.subGroups ? 1 : depth - column.depth + 1;\n\n\t\t\theaders[level].push(column);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//calculate maximum header debth\n\t\tcolumns.forEach(function (column) {\n\t\t\tif (column.depth > headerDepth) {\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tHtmlTableExport.prototype.generateHeaderElements = function () {\n\t\tvar _this43 = this;\n\n\t\tvar headerEl = document.createElement(\"thead\");\n\n\t\tvar rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\n\t\t\t_this43.mapElementStyles(_this43.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\trow.forEach(function (column) {\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\n\t\t\t\tcellEl.innerHTML = column.column.definition.title;\n\n\t\t\t\tif (_this43.cloneTableStyle) {\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\n\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t_this43.mapElementStyles(column.column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\n\t\t\t\tif (column.column.visible) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"width\"]);\n\t\t\t\t} else {\n\t\t\t\t\tif (column.column.definition.width) {\n\t\t\t\t\t\tcellEl.style.width = column.column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (column.column.parent) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t});\n\n\t\t\theaderEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn headerEl;\n\t};\n\n\tHtmlTableExport.prototype.generateBodyElements = function (visible) {\n\t\tvar _this44 = this;\n\n\t\tvar oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;\n\n\t\t//lookup row styles\n\t\tif (this.cloneTableStyle && window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tvar bodyEl = document.createElement(\"tbody\");\n\n\t\tvar rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();\n\t\tvar columns = [];\n\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (_this44.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column);\n\t\t\t}\n\t\t});\n\n\t\trows = rows.filter(function (row) {\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn _this44.config.rowGroups !== false;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn _this44.config.columnCalcs !== false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tif (rows.length > 1000) {\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar rowData = row.getData();\n\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\t\t\t\t\tcellEl.colSpan = columns.length;\n\t\t\t\t\tcellEl.innerHTML = row.key;\n\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\n\t\t\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\t\t\tvar cellWrapper = {\n\t\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetComponent: function getComponent() {\n\t\t\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcolumn: column\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (_this44.table.modExists(\"format\")) {\n\t\t\t\t\t\t\tvalue = _this44.table.modules.format.formatValue(cellWrapper);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value instanceof Node) {\n\t\t\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\t_this44.mapElementStyles(firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\t});\n\n\t\t\t\t\tstyleRow = row.type == \"calc\" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;\n\n\t\t\t\t\t_this44.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbodyEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn bodyEl;\n\t};\n\n\tHtmlTableExport.prototype.columnVisCheck = function (column) {\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);\n\t};\n\n\tHtmlTableExport.prototype.getHtml = function (visible, style, config) {\n\t\tvar holder = document.createElement(\"div\");\n\n\t\tholder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, \"htmlOutput\"));\n\n\t\treturn holder.innerHTML;\n\t};\n\n\tHtmlTableExport.prototype.mapElementStyles = function (from, to, props) {\n\t\tif (this.cloneTableStyle && from && to) {\n\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\t\"color\": \"fontColor\",\n\t\t\t\t\"width\": \"width\",\n\t\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\t\"text-align\": \"textAlign\",\n\t\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\t\"border-bottom\": \"borderBottom\",\n\t\t\t\t\"padding-top\": \"paddingTop\",\n\t\t\t\t\"padding-left\": \"paddingLeft\",\n\t\t\t\t\"padding-right\": \"paddingRight\",\n\t\t\t\t\"padding-bottom\": \"paddingBottom\"\n\t\t\t};\n\n\t\t\tif (window.getComputedStyle) {\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\t\tprops.forEach(function (prop) {\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableExport\", HtmlTableExport);\n\tvar Keybindings = function Keybindings(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\t};\n\n\tKeybindings.prototype.initialize = function () {\n\t\tvar bindings = this.table.options.keybindings,\n\t\t mergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif (bindings !== false) {\n\n\t\t\tfor (var key in this.bindings) {\n\t\t\t\tmergedBindings[key] = this.bindings[key];\n\t\t\t}\n\n\t\t\tif (Object.keys(bindings).length) {\n\n\t\t\t\tfor (var _key in bindings) {\n\t\t\t\t\tmergedBindings[_key] = bindings[_key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBindings = function (bindings) {\n\t\tvar _this45 = this;\n\n\t\tvar self = this;\n\n\t\tvar _loop2 = function _loop2(key) {\n\n\t\t\tif (_this45.actions[key]) {\n\n\t\t\t\tif (bindings[key]) {\n\n\t\t\t\t\tif (_typeof(bindings[key]) !== \"object\") {\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach(function (binding) {\n\t\t\t\t\t\tself.mapBinding(key, binding);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t};\n\n\t\tfor (var key in bindings) {\n\t\t\t_loop2(key);\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBinding = function (action, symbolsList) {\n\t\tvar self = this;\n\n\t\tvar binding = {\n\t\t\taction: this.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach(function (symbol) {\n\t\t\tswitch (symbol) {\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif (!self.watchKeys[symbol]) {\n\t\t\t\t\t\tself.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tself.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t};\n\n\tKeybindings.prototype.bindEvents = function () {\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function (binding) {\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t};\n\n\tKeybindings.prototype.clearBindings = function () {\n\t\tif (this.keyupBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif (this.keydownBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t};\n\n\tKeybindings.prototype.checkBinding = function (e, binding) {\n\t\tvar self = this,\n\t\t match = true;\n\n\t\tif (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {\n\t\t\tbinding.keys.forEach(function (key) {\n\t\t\t\tvar index = self.pressedKeys.indexOf(key);\n\n\t\t\t\tif (index == -1) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tbinding.action.call(self, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t//default bindings\n\tKeybindings.prototype.bindings = {\n\t\tnavPrev: \"shift + 9\",\n\t\tnavNext: 9,\n\t\tnavUp: 38,\n\t\tnavDown: 40,\n\t\tscrollPageUp: 33,\n\t\tscrollPageDown: 34,\n\t\tscrollToStart: 36,\n\t\tscrollToEnd: 35,\n\t\tundo: \"ctrl + 90\",\n\t\tredo: \"ctrl + 89\",\n\t\tcopyToClipboard: \"ctrl + 67\"\n\t};\n\n\t//default actions\n\tKeybindings.prototype.actions = {\n\t\tkeyBlock: function keyBlock(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t\tscrollPageUp: function scrollPageUp(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop - rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos >= 0) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollPageDown: function scrollPageDown(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop + rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos <= scrollMax) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToStart: function scrollToStart(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToEnd: function scrollToEnd(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tnavPrev: function navPrev(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().prev();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavNext: function navNext(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().next();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavLeft: function navLeft(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().left();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavRight: function navRight(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().right();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavUp: function navUp(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().up();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavDown: function navDown(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().down();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tundo: function undo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.undo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tredo: function redo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.redo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcopyToClipboard: function copyToClipboard(e) {\n\t\t\tif (!this.table.modules.edit.currentCell) {\n\t\t\t\tif (this.table.modExists(\"clipboard\", true)) {\n\t\t\t\t\tthis.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == \"highlight\" ? \"active\" : \"selected\", null, null, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"keybindings\", Keybindings);\n\tvar MoveColumns = function MoveColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t};\n\n\tMoveColumns.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveColumns.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t colEl;\n\n\t\tif (!column.modules.frozen) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tconfig.mousemove = function (e) {\n\t\t\t\tif (column.parent === self.moving.parent) {\n\t\t\t\t\tif ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {\n\t\t\t\t\t\tif (self.toCol !== column || !self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.toCol !== column || self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\n\t\t\tcolEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcolEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\n\t\tcolumn.modules.moveColumn = config;\n\t};\n\n\tMoveColumns.prototype.bindTouchEvents = function (column) {\n\t\tvar self = this,\n\t\t colEl = column.getElement(),\n\t\t startXMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentCol,\n\t\t nextCol,\n\t\t prevCol,\n\t\t nextColWidth,\n\t\t prevColWidth,\n\t\t nextColWidthLast,\n\t\t prevColWidthLast;\n\n\t\tcolEl.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentCol = column;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\n\t\t\t\tself.startMove(e, column);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchmove\", function (e) {\n\t\t\tvar halfCol, diff, moveToCol;\n\n\t\t\tif (self.moving) {\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startXMove) {\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextCol && diff - nextColWidthLast > nextColWidth) {\n\t\t\t\t\t\tmoveToCol = nextCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevCol && -diff - prevColWidthLast > prevColWidth) {\n\t\t\t\t\t\tmoveToCol = prevCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToCol) {\n\t\t\t\t\tcurrentCol = moveToCol;\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.startMove = function (e, column) {\n\t\tvar element = column.getElement();\n\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\n\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = \"0\";\n\n\t\tif (!this.touchMove) {\n\t\t\tthis._bindMouseMove();\n\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveColumns.prototype._bindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype._unbindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.moveColumn = function (column, after) {\n\t\tvar movingCells = this.moving.getCells();\n\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\n\t\tif (after) {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t});\n\t\t} else {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t});\n\t\t}\n\t};\n\n\tMoveColumns.prototype.endMove = function (e) {\n\t\tif (e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toCol) {\n\t\t\t\tthis.table.columnManager.moveColumn(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\n\t\t\tif (!this.touchMove) {\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveColumns.prototype.moveHover = function (e) {\n\t\tvar self = this,\n\t\t columnHolder = self.table.columnManager.getElement(),\n\t\t scrollLeft = columnHolder.scrollLeft,\n\t\t xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,\n\t\t scrollPos;\n\n\t\tself.hoverElement.style.left = xPos - self.startX + \"px\";\n\n\t\tif (xPos - scrollLeft < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.max(0, scrollLeft - 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\n\t\tif (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveColumn\", MoveColumns);\n\tvar MoveRows = function MoveRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\t};\n\n\tMoveRows.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveRows.prototype.initialize = function (handle) {\n\t\tthis.connection = this.table.options.movableRowsConnectedTables;\n\t};\n\n\tMoveRows.prototype.setHandle = function (handle) {\n\t\tthis.hasHandle = handle;\n\t};\n\n\tMoveRows.prototype.initializeGroupHeader = function (group) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== group || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== group || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\tif (rowEl.previousSibling) {\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== row || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== row || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tif (!this.hasHandle) {\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeCell = function (cell) {\n\t\tvar self = this,\n\t\t cellEl = cell.getElement();\n\n\t\tcellEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t}, self.checkPeriod);\n\t\t\t}\n\t\t});\n\n\t\tcellEl.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.bindTouchEvents(cell.row, cell.getElement());\n\t};\n\n\tMoveRows.prototype.bindTouchEvents = function (row, element) {\n\t\tvar self = this,\n\t\t startYMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentRow,\n\t\t nextRow,\n\t\t prevRow,\n\t\t nextRowHeight,\n\t\t prevRowHeight,\n\t\t nextRowHeightLast,\n\t\t prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentRow = row;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tself.startMove(e, row);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", function (e) {\n\n\t\t\tvar halfCol, diff, moveToRow;\n\n\t\t\tif (self.moving) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startYMove) {\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextRow && diff - nextRowHeightLast > nextRowHeight) {\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevRow && -diff - prevRowHeightLast > prevRowHeight) {\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tself.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToRow) {\n\t\t\t\t\tcurrentRow = moveToRow;\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t\tself.touchMove = false;\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._bindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._unbindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype.startMove = function (e, row) {\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif (!this.connection) {\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t} else {\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif (this.connection) {\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t} else {\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveRows.prototype.setStartPosition = function (e, row) {\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\t pageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\t element,\n\t\t position;\n\n\t\telement = row.getElement();\n\t\tif (this.connection) {\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t} else {\n\t\t\tthis.startY = pageY - element.getBoundingClientRect().top;\n\t\t}\n\t};\n\n\tMoveRows.prototype.endMove = function (e) {\n\t\tif (!e || e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif (!this.connection) {\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toRow) {\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif (this.connection) {\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveRow = function (row, after) {\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t};\n\n\tMoveRows.prototype.moveHover = function (e) {\n\t\tif (this.connection) {\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t} else {\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveHoverTable = function (e) {\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\t scrollTop = rowHolder.scrollTop,\n\t\t yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,\n\t\t scrollPos;\n\n\t\tthis.hoverElement.style.top = yPos - this.startY + \"px\";\n\t};\n\n\tMoveRows.prototype.moveHoverConnections = function (e) {\n\t\tthis.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + \"px\";\n\t\tthis.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + \"px\";\n\t};\n\n\t//establish connection with other tables\n\tMoveRows.prototype.connectToTables = function (row) {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStart.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"connect\", {\n\t\t\trow: row\n\t\t});\n\t};\n\n\t//disconnect from other tables\n\tMoveRows.prototype.disconnectFromTables = function () {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStop.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"disconnect\");\n\t};\n\n\t//accept incomming connection\n\tMoveRows.prototype.connect = function (table, row) {\n\t\tvar self = this;\n\t\tif (!this.connectedTable) {\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.tableRowDropEvent = self.tableRowDrop.bind(self);\n\n\t\t\tself.table.element.addEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStart.call(this.table, row, table);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//close incomming connection\n\tMoveRows.prototype.disconnect = function (table) {\n\t\tvar self = this;\n\t\tif (table === this.connectedTable) {\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.element.removeEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStop.call(this.table, table);\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t};\n\n\tMoveRows.prototype.dropComplete = function (table, row, success) {\n\t\tvar sender = false;\n\n\t\tif (success) {\n\n\t\t\tswitch (_typeof(this.table.options.movableRowsSender)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (sender) {\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t\t} else {\n\t\t\t\tif (this.table.options.movableRowsSender) {\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t};\n\n\tMoveRows.prototype.tableRowDrop = function (e, row) {\n\t\tvar receiver = false,\n\t\t success = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch (_typeof(this.table.options.movableRowsReceiver)) {\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (receiver) {\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif (success) {\n\t\t\tthis.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.table.modules.comms.send(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow: row,\n\t\t\tsuccess: success\n\t\t});\n\t};\n\n\tMoveRows.prototype.receivers = {\n\t\tinsert: function insert(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\treturn true;\n\t\t},\n\n\t\tadd: function add(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData());\n\t\t\treturn true;\n\t\t},\n\n\t\tupdate: function update(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\ttoRow.update(fromRow.getData());\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\treplace: function replace(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\t\ttoRow.delete();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tMoveRows.prototype.senders = {\n\t\tdelete: function _delete(fromRow, toRow, toTable) {\n\t\t\tfromRow.delete();\n\t\t}\n\t};\n\n\tMoveRows.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\t\t\t\tbreak;\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\t\t\t\tbreak;\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveRow\", MoveRows);\n\tvar Mutator = function Mutator(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\n\t\tthis.enabled = true;\n\t};\n\n\t//initialize column mutator\n\tMutator.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t mutator;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\tmutator = self.lookupMutator(column.definition[key]);\n\n\t\t\t\tif (mutator) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator: mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t};\n\n\tMutator.prototype.lookupMutator = function (value) {\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.mutators[value]) {\n\t\t\t\t\tmutator = this.mutators[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t};\n\n\t//apply mutator to row\n\tMutator.prototype.transformRow = function (data, type, update) {\n\t\tvar self = this,\n\t\t key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t value;\n\n\t\tif (this.enabled) {\n\n\t\t\tself.table.columnManager.traverse(function (column) {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif (column.modules.mutate) {\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif (mutator) {\n\t\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\t\tif (!update || update && typeof value !== \"undefined\") {\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//apply mutator to new cell value\n\tMutator.prototype.transformCell = function (cell, value) {\n\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;\n\n\t\tif (mutator) {\n\t\t\treturn mutator.mutator(value, cell.row.getData(), \"edit\", mutator.params, cell.getComponent());\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tMutator.prototype.enable = function () {\n\t\tthis.enabled = true;\n\t};\n\n\tMutator.prototype.disable = function () {\n\t\tthis.enabled = false;\n\t};\n\n\t//default mutators\n\tMutator.prototype.mutators = {};\n\n\tTabulator.prototype.registerModule(\"mutator\", Mutator);\n\tvar Page = function Page(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.displayIndex = 0; //index in display pipeline\n\n\t\tthis.pageSizes = [];\n\n\t\tthis.createElements();\n\t};\n\n\tPage.prototype.createElements = function () {\n\n\t\tvar button;\n\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\n\t\tif (this.table.options.paginationSizeSelector) {\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t};\n\n\tPage.prototype.generatePageSizeSelectList = function () {\n\t\tvar _this46 = this;\n\n\t\tvar pageSizes = [];\n\n\t\tif (this.pageSizeSelect) {\n\n\t\t\tif (Array.isArray(this.table.options.paginationSizeSelector)) {\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes = [];\n\n\t\t\t\t\tfor (var i = 1; i < 5; i++) {\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t} else {\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile (this.pageSizeSelect.firstChild) {\n\t\t\t\tthis.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t}pageSizes.forEach(function (item) {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\titemEl.innerHTML = item;\n\n\t\t\t\t_this46.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t};\n\n\t//setup pageination\n\tPage.prototype.initialize = function (hidden) {\n\t\tvar self = this,\n\t\t pageSelectLabel;\n\n\t\t//update param names\n\t\tfor (var key in self.table.options.paginationDataSent) {\n\t\t\tself.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];\n\t\t}\n\n\t\tfor (var _key2 in self.table.options.paginationDataReceived) {\n\t\t\tself.paginationDataReceivedNames[_key2] = self.table.options.paginationDataReceived[_key2];\n\t\t}\n\n\t\t//build pagination element\n\n\t\t//bind localizations\n\t\tself.table.modules.localize.bind(\"pagination|first\", function (value) {\n\t\t\tself.firstBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|first_title\", function (value) {\n\t\t\tself.firstBut.setAttribute(\"aria-label\", value);\n\t\t\tself.firstBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev\", function (value) {\n\t\t\tself.prevBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev_title\", function (value) {\n\t\t\tself.prevBut.setAttribute(\"aria-label\", value);\n\t\t\tself.prevBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next\", function (value) {\n\t\t\tself.nextBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next_title\", function (value) {\n\t\t\tself.nextBut.setAttribute(\"aria-label\", value);\n\t\t\tself.nextBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last\", function (value) {\n\t\t\tself.lastBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last_title\", function (value) {\n\t\t\tself.lastBut.setAttribute(\"aria-label\", value);\n\t\t\tself.lastBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\t//click bindings\n\t\tself.firstBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(1);\n\t\t});\n\n\t\tself.prevBut.addEventListener(\"click\", function () {\n\t\t\tself.previousPage();\n\t\t});\n\n\t\tself.nextBut.addEventListener(\"click\", function () {\n\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t});\n\n\t\tself.lastBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(self.max);\n\t\t});\n\n\t\tif (self.table.options.paginationElement) {\n\t\t\tself.element = self.table.options.paginationElement;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\tpageSelectLabel = document.createElement(\"label\");\n\n\t\t\tself.table.modules.localize.bind(\"pagination|page_size\", function (value) {\n\t\t\t\tself.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\tself.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t});\n\n\t\t\tself.element.appendChild(pageSelectLabel);\n\t\t\tself.element.appendChild(self.pageSizeSelect);\n\n\t\t\tself.pageSizeSelect.addEventListener(\"change\", function (e) {\n\t\t\t\tself.setPageSize(self.pageSizeSelect.value);\n\t\t\t\tself.setPage(1).then(function () {}).catch(function () {});\n\t\t\t});\n\t\t}\n\n\t\t//append to DOM\n\t\tself.element.appendChild(self.firstBut);\n\t\tself.element.appendChild(self.prevBut);\n\t\tself.element.appendChild(self.pagesElement);\n\t\tself.element.appendChild(self.nextBut);\n\t\tself.element.appendChild(self.lastBut);\n\n\t\tif (!self.table.options.paginationElement && !hidden) {\n\t\t\tself.table.footerManager.append(self.element, self);\n\t\t}\n\n\t\t//set default values\n\t\tself.mode = self.table.options.pagination;\n\t\tself.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);\n\t\tself.count = self.table.options.paginationButtonCount;\n\n\t\tself.generatePageSizeSelectList();\n\t};\n\n\tPage.prototype.initializeProgressive = function (mode) {\n\t\tthis.initialize(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t};\n\n\tPage.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tPage.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//calculate maximum page from number of rows\n\tPage.prototype.setMaxRows = function (rowCount) {\n\t\tif (!rowCount) {\n\t\t\tthis.max = 1;\n\t\t} else {\n\t\t\tthis.max = Math.ceil(rowCount / this.size);\n\t\t}\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t}\n\t};\n\n\t//reset to first page without triggering action\n\tPage.prototype.reset = function (force) {\n\t\tif (this.mode == \"local\" || force) {\n\t\t\tthis.page = 1;\n\t\t}\n\t\treturn true;\n\t};\n\n\t//set the maxmum page\n\tPage.prototype.setMaxPage = function (max) {\n\n\t\tmax = parseInt(max);\n\n\t\tthis.max = max || 1;\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t};\n\n\t//set current page number\n\tPage.prototype.setPage = function (page) {\n\t\tvar _this47 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpage = parseInt(page);\n\n\t\t\tif (page > 0 && page <= _this47.max) {\n\t\t\t\t_this47.page = page;\n\t\t\t\t_this47.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + _this47.max + \":\", page);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageToRow = function (row) {\n\t\tvar _this48 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar rows = _this48.table.rowManager.getDisplayRows(_this48.displayIndex - 1);\n\t\t\tvar index = rows.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\tvar page = Math.ceil((index + 1) / _this48.size);\n\n\t\t\t\t_this48.setPage(page).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageSize = function (size) {\n\t\tsize = parseInt(size);\n\n\t\tif (size > 0) {\n\t\t\tthis.size = size;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t};\n\n\t//setup the pagination buttons\n\tPage.prototype._setPageButtons = function () {\n\t\tvar self = this;\n\n\t\tvar leftSize = Math.floor((this.count - 1) / 2);\n\t\tvar rightSize = Math.ceil((this.count - 1) / 2);\n\t\tvar min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);\n\t\tvar max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);\n\n\t\twhile (self.pagesElement.firstChild) {\n\t\t\tself.pagesElement.removeChild(self.pagesElement.firstChild);\n\t\t}if (self.page == 1) {\n\t\t\tself.firstBut.disabled = true;\n\t\t\tself.prevBut.disabled = true;\n\t\t} else {\n\t\t\tself.firstBut.disabled = false;\n\t\t\tself.prevBut.disabled = false;\n\t\t}\n\n\t\tif (self.page == self.max) {\n\t\t\tself.lastBut.disabled = true;\n\t\t\tself.nextBut.disabled = true;\n\t\t} else {\n\t\t\tself.lastBut.disabled = false;\n\t\t\tself.nextBut.disabled = false;\n\t\t}\n\n\t\tfor (var i = min; i <= max; i++) {\n\t\t\tif (i > 0 && i <= self.max) {\n\t\t\t\tself.pagesElement.appendChild(self._generatePageButton(i));\n\t\t\t}\n\t\t}\n\n\t\tthis.footerRedraw();\n\t};\n\n\tPage.prototype._generatePageButton = function (page) {\n\t\tvar self = this,\n\t\t button = document.createElement(\"button\");\n\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif (page == self.page) {\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"title\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\n\t\tbutton.addEventListener(\"click\", function (e) {\n\t\t\tself.setPage(page);\n\t\t});\n\n\t\treturn button;\n\t};\n\n\t//previous page\n\tPage.prototype.previousPage = function () {\n\t\tvar _this49 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this49.page > 1) {\n\t\t\t\t_this49.page--;\n\t\t\t\t_this49.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//next page\n\tPage.prototype.nextPage = function () {\n\t\tvar _this50 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this50.page < _this50.max) {\n\t\t\t\t_this50.page++;\n\t\t\t\t_this50.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!_this50.progressiveLoad) {\n\t\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + _this50.max + \":\", _this50.max + 1);\n\t\t\t\t}\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//return current page number\n\tPage.prototype.getPage = function () {\n\t\treturn this.page;\n\t};\n\n\t//return max page number\n\tPage.prototype.getPageMax = function () {\n\t\treturn this.max;\n\t};\n\n\tPage.prototype.getPageSize = function (size) {\n\t\treturn this.size;\n\t};\n\n\tPage.prototype.getMode = function () {\n\t\treturn this.mode;\n\t};\n\n\t//return appropriate rows for current page\n\tPage.prototype.getRows = function (data) {\n\t\tvar output, start, end;\n\n\t\tif (this.mode == \"local\") {\n\t\t\toutput = [];\n\t\t\tstart = this.size * (this.page - 1);\n\t\t\tend = start + parseInt(this.size);\n\n\t\t\tthis._setPageButtons();\n\n\t\t\tfor (var i = start; i < end; i++) {\n\t\t\t\tif (data[i]) {\n\t\t\t\t\toutput.push(data[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn output;\n\t\t} else {\n\n\t\t\tthis._setPageButtons();\n\n\t\t\treturn data.slice(0);\n\t\t}\n\t};\n\n\tPage.prototype.trigger = function () {\n\t\tvar _this51 = this;\n\n\t\tvar left;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tswitch (_this51.mode) {\n\t\t\t\tcase \"local\":\n\t\t\t\t\tleft = _this51.table.rowManager.scrollLeft;\n\n\t\t\t\t\t_this51.table.rowManager.refreshActiveData(\"page\");\n\t\t\t\t\t_this51.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t\t_this51.table.options.pageLoaded.call(_this51.table, _this51.getPage());\n\t\t\t\t\tresolve();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"remote\":\n\t\t\t\tcase \"progressive_load\":\n\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t_this51.table.modules.ajax.blockActiveRequest();\n\t\t\t\t\t_this51._getRemotePage().then(function () {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", _this51.mode);\n\t\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype._getRemotePage = function () {\n\t\tvar _this52 = this;\n\n\t\tvar self = this,\n\t\t oldParams,\n\t\t pageParams;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (!self.table.modExists(\"ajax\", true)) {\n\t\t\t\treject();\n\t\t\t}\n\n\t\t\t//record old params and restore after request has been made\n\t\t\toldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});\n\t\t\tpageParams = self.table.modules.ajax.getParams();\n\n\t\t\t//configure request params\n\t\t\tpageParams[_this52.paginationDataSentNames.page] = self.page;\n\n\t\t\t//set page size if defined\n\t\t\tif (_this52.size) {\n\t\t\t\tpageParams[_this52.paginationDataSentNames.size] = _this52.size;\n\t\t\t}\n\n\t\t\t//set sort data if defined\n\t\t\tif (_this52.table.options.ajaxSorting && _this52.table.modExists(\"sort\")) {\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tpageParams[_this52.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\t\t\tif (_this52.table.options.ajaxFiltering && _this52.table.modExists(\"filter\")) {\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\t\t\t\tpageParams[_this52.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(pageParams);\n\n\t\t\tself.table.modules.ajax.sendRequest(_this52.progressiveLoad).then(function (data) {\n\t\t\t\tself._parseRemoteData(data);\n\t\t\t\tresolve();\n\t\t\t}).catch(function (e) {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tself.table.modules.ajax.setParams(oldParams);\n\t\t});\n\t};\n\n\tPage.prototype._parseRemoteData = function (data) {\n\t\tvar self = this,\n\t\t left,\n\t\t data,\n\t\t margin;\n\n\t\tif (typeof data[this.paginationDataReceivedNames.last_page] === \"undefined\") {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.last_page + \"' property\");\n\t\t}\n\n\t\tif (data[this.paginationDataReceivedNames.data]) {\n\t\t\tthis.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;\n\n\t\t\tif (this.progressiveLoad) {\n\t\t\t\tswitch (this.mode) {\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\tthis.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);\n\t\t\t\t\t\tif (this.page < this.max) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t\t}, self.table.options.ajaxProgressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\t\t\tthis.table.rowManager.setData(data, true);\n\n\t\t\t\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;\n\n\t\t\t\t\t\tif (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {\n\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\n\t\t\t\tthis.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.options.pageLoaded.call(this.table, this.getPage());\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.data + \"' property\");\n\t\t}\n\t};\n\n\t//handle the footer element being redrawn\n\tPage.prototype.footerRedraw = function () {\n\t\tvar footer = this.table.footerManager.element;\n\n\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t} else {\n\t\t\tthis.pagesElement.style.display = '';\n\n\t\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t};\n\n\t//set the paramter names for pagination requests\n\tPage.prototype.paginationDataSentNames = {\n\t\t\"page\": \"page\",\n\t\t\"size\": \"size\",\n\t\t\"sorters\": \"sorters\",\n\t\t// \"sort_dir\":\"sort_dir\",\n\t\t\"filters\": \"filters\"\n\t\t// \"filter_value\":\"filter_value\",\n\t\t// \"filter_type\":\"filter_type\",\n\t};\n\n\t//set the property names for pagination responses\n\tPage.prototype.paginationDataReceivedNames = {\n\t\t\"current_page\": \"current_page\",\n\t\t\"last_page\": \"last_page\",\n\t\t\"data\": \"data\"\n\t};\n\n\tTabulator.prototype.registerModule(\"page\", Page);\n\n\tvar Persistence = function Persistence(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\tthis.persistProps = [\"field\", \"width\", \"visible\"];\n\t};\n\n\t//setup parameters\n\tPersistence.prototype.initialize = function (mode, id) {\n\t\t//determine persistent layout storage type\n\t\tthis.mode = mode !== true ? mode : typeof window.localStorage !== 'undefined' ? \"local\" : \"cookie\";\n\n\t\t//set storage tag\n\t\tthis.id = \"tabulator-\" + (id || this.table.element.getAttribute(\"id\") || \"\");\n\t};\n\n\t//load saved definitions\n\tPersistence.prototype.load = function (type, current) {\n\n\t\tvar data = this.retreiveData(type);\n\n\t\tif (current) {\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//retreive data from memory\n\tPersistence.prototype.retreiveData = function (type) {\n\t\tvar data = \"\",\n\t\t id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tdata = localStorage.getItem(id);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\n\t\t\t\t//find cookie\n\t\t\t\tvar cookie = document.cookie,\n\t\t\t\t cookiePos = cookie.indexOf(id + \"=\"),\n\t\t\t\t end = void 0;\n\n\t\t\t\t//if cookie exists, decode and load column data into tabulator\n\t\t\t\tif (cookiePos > -1) {\n\t\t\t\t\tcookie = cookie.substr(cookiePos);\n\n\t\t\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\t\t\tif (end > -1) {\n\t\t\t\t\t\tcookie = cookie.substr(0, end);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata = cookie.replace(id + \"=\", \"\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Load Error - invalid mode selected\", this.mode);\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t};\n\n\t//merge old and new column defintions\n\tPersistence.prototype.mergeDefinition = function (oldCols, newCols) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\t// oldCols = oldCols || [];\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach(function (column, to) {\n\n\t\t\tvar from = self._findColumn(oldCols, column);\n\n\t\t\tif (from) {\n\n\t\t\t\tfrom.width = column.width;\n\t\t\t\tfrom.visible = column.visible;\n\n\t\t\t\tif (from.columns) {\n\t\t\t\t\tfrom.columns = self.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\t\toldCols.forEach(function (column, i) {\n\t\t\tvar from = self._findColumn(newCols, column);\n\t\t\tif (!from) {\n\t\t\t\tif (output.length > i) {\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//find matching columns\n\tPersistence.prototype._findColumn = function (columns, subject) {\n\t\tvar type = subject.columns ? \"group\" : subject.field ? \"field\" : \"object\";\n\n\t\treturn columns.find(function (col) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t};\n\n\t//save data\n\tPersistence.prototype.save = function (type) {\n\t\tvar data = {};\n\n\t\tswitch (type) {\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tthis.saveData(id, data);\n\t};\n\n\t//ensure sorters contain no function data\n\tPersistence.prototype.validateSorters = function (data) {\n\t\tdata.forEach(function (item) {\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//save data to chosed medium\n\tPersistence.prototype.saveData = function (id, data) {\n\n\t\tdata = JSON.stringify(data);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tlocalStorage.setItem(id, data);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\t\t\t\tvar expireDate = new Date();\n\t\t\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\t\t\t//save cookie\n\t\t\t\tdocument.cookie = id + \"=\" + data + \"; expires=\" + expireDate.toUTCString();\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Save Error - invalid mode selected\", this.mode);\n\t\t}\n\t};\n\n\t//build premission list\n\tPersistence.prototype.parseColumns = function (columns) {\n\t\tvar self = this,\n\t\t definitions = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar def = {};\n\n\t\t\tif (column.isGroup) {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.columns = self.parseColumns(column.getColumns());\n\t\t\t} else {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.field = column.getField();\n\t\t\t\tdef.width = column.getWidth();\n\t\t\t\tdef.visible = column.visible;\n\t\t\t}\n\n\t\t\tdefinitions.push(def);\n\t\t});\n\n\t\treturn definitions;\n\t};\n\n\tTabulator.prototype.registerModule(\"persistence\", Persistence);\n\n\tvar Print = function Print(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t};\n\n\tPrint.prototype.initialize = function () {\n\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\n\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\n\t};\n\n\tPrint.prototype.replaceTable = function () {\n\t\tif (!this.manualBlock) {\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t};\n\n\tPrint.prototype.cleanup = function () {\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t};\n\n\tPrint.prototype.printFullscreen = function (visible, style, config) {\n\t\tvar scrollX = window.scrollX,\n\t\t scrollY = window.scrollY,\n\t\t headerEl = document.createElement(\"div\"),\n\t\t footerEl = document.createElement(\"div\"),\n\t\t tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printCopyStyle, visible, \"print\"),\n\t\t headerContent,\n\t\t footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif (this.table.options.printHeader) {\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif (typeof headerContent == \"string\") {\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t} else {\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif (this.table.options.printFooter) {\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\t\t\tif (typeof footerContent == \"string\") {\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t} else {\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif (this.table.options.printFormatter) {\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"print\", Print);\n\tvar ReactiveData = function ReactiveData(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t};\n\n\tReactiveData.prototype.watchData = function (data) {\n\t\tvar self = this,\n\t\t pushFunc,\n\t\t version;\n\n\t\tthis.currentVersion++;\n\n\t\tversion = this.currentVersion;\n\n\t\tself.unwatchData();\n\n\t\tself.data = data;\n\n\t\t//override array push function\n\t\tself.origFuncs.push = data.push;\n\n\t\tObject.defineProperty(self.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array unshift function\n\t\tself.origFuncs.unshift = data.unshift;\n\n\t\tObject.defineProperty(self.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array shift function\n\t\tself.origFuncs.shift = data.shift;\n\n\t\tObject.defineProperty(self.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.shift.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array pop function\n\t\tself.origFuncs.pop = data.pop;\n\n\t\tObject.defineProperty(self.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn self.origFuncs.pop.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array splice function\n\t\tself.origFuncs.splice = data.splice;\n\n\t\tObject.defineProperty(self.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\t start = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\t end = args[1],\n\t\t\t\t newRows = args[2] ? args.slice(2) : false,\n\t\t\t\t startRow;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif (newRows) {\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\n\t\t\t\t\t\tif (startRow) {\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif (end !== 0) {\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\n\t\t\t\t\t\toldRows.forEach(function (rowData, i) {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\n\t\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newRows || end !== 0) {\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchData = function () {\n\t\tif (this.data !== false) {\n\t\t\tfor (var key in this.origFuncs) {\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: this.origFuncs.key\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tReactiveData.prototype.watchRow = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData();\n\n\t\tthis.blocked = true;\n\n\t\tfor (var key in data) {\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\n\t\tthis.blocked = false;\n\t};\n\n\tReactiveData.prototype.watchKey = function (row, data, key) {\n\t\tvar self = this,\n\t\t props = Object.getOwnPropertyDescriptor(data, key),\n\t\t value = data[key],\n\t\t version = this.currentVersion;\n\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: function set(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t}\n\n\t\t\t\tif (props.set) {\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function get() {\n\n\t\t\t\tif (props.get) {\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchRow = function (row) {\n\t\tvar data = row.getData();\n\n\t\tfor (var key in data) {\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue: data[key]\n\t\t\t});\n\t\t}\n\t};\n\n\tReactiveData.prototype.block = function () {\n\t\tthis.blocked = true;\n\t};\n\n\tReactiveData.prototype.unblock = function () {\n\t\tthis.blocked = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"reactiveData\", ReactiveData);\n\n\tvar ResizeColumns = function ResizeColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeColumns.prototype.initializeColumn = function (type, column, element) {\n\t\tvar self = this,\n\t\t variableHeight = false,\n\t\t mode = this.table.options.resizableColumns;\n\n\t\t//set column resize mode\n\t\tif (type === \"header\") {\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tcolumn.modules.resize = { variableHeight: variableHeight };\n\t\t}\n\n\t\tif (mode === true || mode == type) {\n\n\t\t\tvar handle = document.createElement('div');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\n\t\t\tvar prevHandle = document.createElement('div');\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\n\n\t\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar handleDown = function handleDown(e) {\n\t\t\t\tvar nearestColumn = column.getLastColumn();\n\n\t\t\t\tif (nearestColumn && self._checkResizability(nearestColumn)) {\n\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, { passive: true });\n\n\t\t\t//reszie column on double click\n\t\t\thandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar col = column.getLastColumn();\n\n\t\t\t\tif (col && self._checkResizability(col)) {\n\t\t\t\t\tcol.reinitializeWidth(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\t\t//resize column on double click\n\t\t\tprevHandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.appendChild(handle);\n\t\t\telement.appendChild(prevHandle);\n\t\t}\n\t};\n\n\tResizeColumns.prototype._checkResizability = function (column) {\n\t\treturn typeof column.definition.resizable != \"undefined\" ? column.definition.resizable : this.table.options.resizableColumns;\n\t};\n\n\tResizeColumns.prototype._mouseDown = function (e, column, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\t// self.table.columnManager.tempScrollBlock();\n\n\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\n\n\t\t\tif (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif (self.startColumn.modules.edit) {\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\n\t\t\tif (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (self.table.options.persistentLayout && self.table.modExists(\"persistence\", true)) {\n\t\t\t\tself.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tself.table.options.columnResized.call(self.table, column.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\tif (self.startColumn.modules.edit) {\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.startWidth = column.getWidth();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeColumns\", ResizeColumns);\n\tvar ResizeRows = function ResizeRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t rowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function handleDown(e) {\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown, { passive: true });\n\t\thandle.addEventListener(\"touchstart\", handleDown);\n\n\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif (prevRow) {\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t};\n\n\tResizeRows.prototype._mouseDown = function (e, row, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.table.options.rowResized.call(this.table, row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeRows\", ResizeRows);\n\tvar ResizeTable = function ResizeTable(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.binding = false;\n\t\tthis.observer = false;\n\t};\n\n\tResizeTable.prototype.initialize = function (row) {\n\t\tvar table = this.table,\n\t\t observer;\n\n\t\tif (typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\") {\n\t\t\tthis.observer = new ResizeObserver(function (entry) {\n\t\t\t\ttable.redraw();\n\t\t\t});\n\n\t\t\tthis.observer.observe(table.element);\n\t\t} else {\n\t\t\tthis.binding = function () {\n\t\t\t\ttable.redraw();\n\t\t\t};\n\n\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t}\n\t};\n\n\tResizeTable.prototype.clearBindings = function (row) {\n\t\tif (this.binding) {\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\n\t\tif (this.observer) {\n\t\t\tthis.observer.unobserve(this.table.element);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeTable\", ResizeTable);\n\tvar ResponsiveLayout = function ResponsiveLayout(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t};\n\n\t//generate resposive columns list\n\tResponsiveLayout.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//detemine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column, i) {\n\t\t\tif (column.modules.responsive) {\n\t\t\t\tif (column.modules.responsive.order && column.modules.responsive.visible) {\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif (!column.visible && self.mode === \"collapse\") {\n\t\t\t\t\t\tself.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort(function (a, b) {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || b.modules.responsive.index - a.modules.responsive.index;\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//define layout information\n\tResponsiveLayout.prototype.initializeColumn = function (column) {\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = { order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible: def.visible === false ? false : true };\n\t};\n\n\tResponsiveLayout.prototype.layoutRow = function (row) {\n\t\tvar rowEl = row.getElement(),\n\t\t el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\tif (!rowEl.classList.contains(\"tabulator-calcs\")) {\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement: el\n\t\t\t};\n\n\t\t\tif (!this.collapseStartOpen) {\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\n\t\t\trowEl.appendChild(el);\n\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t};\n\n\t//update column visibility\n\tResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {\n\t\tvar index;\n\t\tif (column.modules.responsive) {\n\t\t\tcolumn.modules.responsive.visible = visible;\n\t\t\tthis.initialize();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.hideColumn = function (column) {\n\t\tcolumn.hide(false, true);\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.showColumn = function (column) {\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//redraw columns to fit space\n\tResponsiveLayout.prototype.update = function () {\n\t\tvar self = this,\n\t\t working = true;\n\n\t\twhile (working) {\n\n\t\t\tvar width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\n\n\t\t\tvar diff = self.table.columnManager.element.clientWidth - width;\n\n\t\t\tif (diff < 0) {\n\t\t\t\t//table is too wide\n\t\t\t\tvar column = self.columns[self.index];\n\n\t\t\t\tif (column) {\n\t\t\t\t\tself.hideColumn(column);\n\t\t\t\t\tself.index++;\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//table has spare space\n\t\t\t\tvar _column = self.columns[self.index - 1];\n\n\t\t\t\tif (_column) {\n\t\t\t\t\tif (diff > 0) {\n\t\t\t\t\t\tif (diff >= _column.getWidth()) {\n\t\t\t\t\t\t\tself.showColumn(_column);\n\t\t\t\t\t\t\tself.index--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.table.rowManager.activeRowsCount) {\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedContent = function () {\n\t\tvar self = this,\n\t\t rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tself.generateCollapsedRowContent(row);\n\t\t});\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {\n\t\tvar el, contents;\n\n\t\tif (row.modules.responsiveLayout) {\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile (el.firstChild) {\n\t\t\t\tel.removeChild(el.firstChild);\n\t\t\t}contents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif (contents) {\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowData = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData(),\n\t\t output = [],\n\t\t mockCellComponent;\n\n\t\tthis.hiddenColumns.forEach(function (column) {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif (column.definition.title && column.field) {\n\t\t\t\tif (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData: function getData() {\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tResponsiveLayout.prototype.formatCollapsedData = function (data) {\n\t\tvar list = document.createElement(\"table\"),\n\t\t listContents = \"\";\n\n\t\tdata.forEach(function (item) {\n\t\t\tvar div = document.createElement(\"div\");\n\n\t\t\tif (item.value instanceof Node) {\n\t\t\t\tdiv.appendChild(item.value);\n\t\t\t\titem.value = div.innerHTML;\n\t\t\t}\n\n\t\t\tlistContents += \"<tr><td><strong>\" + item.title + \"</strong></td><td>\" + item.value + \"</td></tr>\";\n\t\t});\n\n\t\tlist.innerHTML = listContents;\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t};\n\n\tTabulator.prototype.registerModule(\"responsiveLayout\", ResponsiveLayout);\n\n\tvar SelectRow = function SelectRow(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t};\n\n\tSelectRow.prototype.clearSelectionData = function (silent) {\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\n\t\tif (!silent) {\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t};\n\n\tSelectRow.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t element = row.getElement();\n\n\t\t// trigger end of row selection\n\t\tvar endSelect = function endSelect() {\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\n\t\trow.modules.select = { selected: false };\n\n\t\t//set row selection class\n\t\tif (self.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\n\t\t\tif (self.table.options.selectable && self.table.options.selectable != \"highlight\") {\n\t\t\t\tif (self.table.options.selectableRangeMode === \"click\") {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\n\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\n\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\n\t\t\t\t\t\t\tif (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function (toggledRow) {\n\t\t\t\t\t\t\t\t\tif (toggledRow !== self.lastClickedRow) {\n\n\t\t\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true && !self.isRowSelected(row)) {\n\t\t\t\t\t\t\t\t\t\t\tif (self.selectedRows.length < self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.deselectRows();\n\n\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true) {\n\t\t\t\t\t\t\t\t\tif (toggledRows.length > self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.deselectRows();\n\t\t\t\t\t\t\tself.selectRows(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (!self.selecting) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\t\tself.selecting = true;\n\n\t\t\t\t\t\t\tself.selectPrev = [];\n\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\tif (self.selectPrev[1] == row) {\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t};\n\n\t//toggle row selection\n\tSelectRow.prototype.toggleRow = function (row) {\n\t\tif (this.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\tif (row.modules.select && row.modules.select.selected) {\n\t\t\t\tthis._deselectRow(row);\n\t\t\t} else {\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\t//select a number of rows\n\tSelectRow.prototype.selectRows = function (rows) {\n\t\tvar self = this;\n\n\t\tswitch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {\n\t\t\tcase \"undefined\":\n\t\t\t\tself.table.rowManager.rows.forEach(function (row) {\n\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\t\t\t\tif (rows === true) {\n\t\t\t\t\tself.table.rowManager.activeRows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tif (Array.isArray(rows)) {\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t} else {\n\t\t\t\t\tself._selectRow(rows, false, true);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//select an individual row\n\tSelectRow.prototype._selectRow = function (rowInfo, silent, force) {\n\t\tvar index;\n\n\t\t//handle max row count\n\t\tif (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {\n\t\t\tif (this.selectedRows.length >= this.table.options.selectable) {\n\t\t\t\tif (this.table.options.selectableRollingSelection) {\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\n\t\tif (row) {\n\t\t\tif (this.selectedRows.indexOf(row) == -1) {\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\n\t\t\t\tthis.selectedRows.push(row);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tthis.table.options.rowSelected.call(this.table, row.getComponent());\n\t\t\t\t\tthis._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.isRowSelected = function (row) {\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t};\n\n\t//deselect a number of rows\n\tSelectRow.prototype.deselectRows = function (rows) {\n\t\tvar self = this,\n\t\t rowCount;\n\n\t\tif (typeof rows == \"undefined\") {\n\n\t\t\trowCount = self.selectedRows.length;\n\n\t\t\tfor (var i = 0; i < rowCount; i++) {\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\n\t\t\t}\n\n\t\t\tself._rowSelectionChanged();\n\t\t} else {\n\t\t\tif (Array.isArray(rows)) {\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\tself._deselectRow(row, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t} else {\n\t\t\t\tself._deselectRow(rows);\n\t\t\t}\n\t\t}\n\t};\n\n\t//deselect an individual row\n\tSelectRow.prototype._deselectRow = function (rowInfo, silent) {\n\t\tvar self = this,\n\t\t row = self.table.rowManager.findRow(rowInfo),\n\t\t index;\n\n\t\tif (row) {\n\t\t\tindex = self.selectedRows.findIndex(function (selectedRow) {\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\n\t\t\t\tself.selectedRows.splice(index, 1);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.table.options.rowDeselected.call(this.table, row.getComponent());\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.getSelectedData = function () {\n\t\tvar data = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tSelectRow.prototype.getSelectedRows = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\trows.push(row.getComponent());\n\t\t});\n\n\t\treturn rows;\n\t};\n\n\tSelectRow.prototype._rowSelectionChanged = function () {\n\t\tthis.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());\n\t};\n\n\tTabulator.prototype.registerModule(\"selectRow\", SelectRow);\n\n\tvar Sort = function Sort(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t};\n\n\t//initialize column header for sorting\n\tSort.prototype.initializeColumn = function (column, content) {\n\t\tvar self = this,\n\t\t sorter = false,\n\t\t colEl,\n\t\t arrowEl;\n\n\t\tswitch (_typeof(column.definition.sorter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (self.sorters[column.definition.sorter]) {\n\t\t\t\t\tsorter = self.sorters[column.definition.sorter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter: sorter, dir: \"none\",\n\t\t\tparams: column.definition.sorterParams || {},\n\t\t\tstartingDir: column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate\n\t\t};\n\n\t\tif (column.definition.headerSort !== false) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-arrow\");\n\t\t\t//create sorter arrow\n\t\t\tcontent.appendChild(arrowEl);\n\n\t\t\t//sort on click\n\t\t\tcolEl.addEventListener(\"click\", function (e) {\n\t\t\t\tvar dir = \"\",\n\t\t\t\t sorters = [],\n\t\t\t\t match = false;\n\n\t\t\t\tif (column.modules.sort) {\n\t\t\t\t\tif (column.modules.sort.tristate) {\n\t\t\t\t\t\tif (column.modules.sort.dir == \"none\") {\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (column.modules.sort.dir == column.modules.sort.startingDir) {\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (column.modules.sort.dir) {\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = self.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex(function (sorter) {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match > -1) {\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tif (match != sorters.length - 1) {\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\tsorters.push({ column: column, dir: dir });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tself.setSort(sorters);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (dir == \"none\") {\n\t\t\t\t\t\t\tself.clear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tself.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.rowManager.sorterRefresh(!self.sortList.length);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t//check if the sorters have changed since last use\n\tSort.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//return current sorters\n\tSort.prototype.getSort = function () {\n\t\tvar self = this,\n\t\t sorters = [];\n\n\t\tself.sortList.forEach(function (item) {\n\t\t\tif (item.column) {\n\t\t\t\tsorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t};\n\n\t//change sort list and trigger sort\n\tSort.prototype.setSort = function (sortList, dir) {\n\t\tvar self = this,\n\t\t newSortList = [];\n\n\t\tif (!Array.isArray(sortList)) {\n\t\t\tsortList = [{ column: sortList, dir: dir }];\n\t\t}\n\n\t\tsortList.forEach(function (item) {\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif (column) {\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tif (this.table.options.persistentSort && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"sort\");\n\t\t}\n\t};\n\n\t//clear sorters\n\tSort.prototype.clear = function () {\n\t\tthis.setSort([]);\n\t};\n\n\t//find appropriate sorter for column\n\tSort.prototype.findSorter = function (column) {\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\t sorter = \"string\",\n\t\t field,\n\t\t value;\n\n\t\tif (row) {\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif (field) {\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.sorters[sorter];\n\t};\n\n\t//work through sort list sorting data\n\tSort.prototype.sort = function (data) {\n\t\tvar self = this,\n\t\t lastSort,\n\t\t sortList;\n\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;\n\n\t\tif (self.table.options.dataSorting) {\n\t\t\tself.table.options.dataSorting.call(self.table, self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif (!self.table.options.ajaxSorting) {\n\n\t\t\tsortList.forEach(function (item, i) {\n\n\t\t\t\tif (item.column && item.column.modules.sort) {\n\n\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\tif (!item.column.modules.sort.sorter) {\n\t\t\t\t\t\titem.column.modules.sort.sorter = self.findSorter(item.column);\n\t\t\t\t\t}\n\n\t\t\t\t\tself._sortItem(data, item.column, item.dir, sortList, i);\n\t\t\t\t}\n\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t} else {\n\t\t\tsortList.forEach(function (item, i) {\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.dataSorted) {\n\t\t\tself.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));\n\t\t}\n\t};\n\n\t//clear sort arrows on columns\n\tSort.prototype.clearColumnHeaders = function () {\n\t\tthis.table.columnManager.getRealColumns().forEach(function (column) {\n\t\t\tif (column.modules.sort) {\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//set the column header sort direction\n\tSort.prototype.setColumnHeader = function (column, dir) {\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\n\t};\n\n\t//sort each item in sort list\n\tSort.prototype._sortItem = function (data, column, dir, sortList, i) {\n\t\tvar self = this;\n\n\t\tvar params = typeof column.modules.sort.params === \"function\" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;\n\n\t\tdata.sort(function (a, b) {\n\n\t\t\tvar result = self._sortRow(a, b, column, dir, params);\n\n\t\t\t//if results match recurse through previous searchs to be sure\n\t\t\tif (result === 0 && i) {\n\t\t\t\tfor (var j = i - 1; j >= 0; j--) {\n\t\t\t\t\tresult = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);\n\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t};\n\n\t//process individual rows for a sort function on active data\n\tSort.prototype._sortRow = function (a, b, column, dir, params) {\n\t\tvar el1Comp, el2Comp, colComp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t};\n\n\t//default data sorters\n\tSort.prototype.sorters = {\n\n\t\t//sort numbers\n\t\tnumber: function number(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar decimal = params.decimalSeparator || \".\";\n\t\t\tvar thousand = params.thousandSeparator || \",\";\n\t\t\tvar emptyAlign = 0;\n\n\t\t\ta = parseFloat(String(a).split(thousand).join(\"\").split(decimal).join(\".\"));\n\t\t\tb = parseFloat(String(b).split(thousand).join(\"\").split(decimal).join(\".\"));\n\n\t\t\t//handle non numeric values\n\t\t\tif (isNaN(a)) {\n\t\t\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t\t\t} else if (isNaN(b)) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\treturn a - b;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort strings\n\t\tstring: function string(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\t\t\tvar locale;\n\n\t\t\t//handle empty values\n\t\t\tif (!a) {\n\t\t\t\temptyAlign = !b ? 0 : -1;\n\t\t\t} else if (!b) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\tswitch (_typeof(params.locale)) {\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tif (params.locale) {\n\t\t\t\t\t\t\tlocale = this.table.modules.localize.getLocale();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlocale = params.locale;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort date\n\t\tdate: function date(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"DD/MM/YYYY\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort hh:mm formatted times\n\t\ttime: function time(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"hh:mm\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort datetime\n\t\tdatetime: function datetime(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar format = params.format || \"DD/MM/YYYY hh:mm:ss\",\n\t\t\t alignEmptyValues = params.alignEmptyValues,\n\t\t\t emptyAlign = 0;\n\n\t\t\tif (typeof moment != \"undefined\") {\n\t\t\t\ta = moment(a, format);\n\t\t\t\tb = moment(b, format);\n\n\t\t\t\tif (!a.isValid()) {\n\t\t\t\t\temptyAlign = !b.isValid() ? 0 : -1;\n\t\t\t\t} else if (!b.isValid()) {\n\t\t\t\t\temptyAlign = 1;\n\t\t\t\t} else {\n\t\t\t\t\t//compare valid values\n\t\t\t\t\treturn a - b;\n\t\t\t\t}\n\n\t\t\t\t//fix empty values in position\n\t\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\t\temptyAlign *= -1;\n\t\t\t\t}\n\n\t\t\t\treturn emptyAlign;\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on moment.js\");\n\t\t\t}\n\t\t},\n\n\t\t//sort booleans\n\t\tboolean: function boolean(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\t\t\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\tarray: function array(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = 0;\n\t\t\tvar el2 = 0;\n\t\t\tvar type = params.type || \"length\";\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\tfunction calc(value) {\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\treturn value.length;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"sum\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"max\":\n\t\t\t\t\t\treturn Math.max.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"min\":\n\t\t\t\t\t\treturn Math.min.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"avg\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t}) / value.length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//handle non array values\n\t\t\tif (!Array.isArray(a)) {\n\t\t\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\n\t\t\t} else if (!Array.isArray(b)) {\n\t\t\t\talignEmptyValues = 1;\n\t\t\t} else {\n\n\t\t\t\t//compare valid values\n\t\t\t\tel1 = a ? calc(a) : 0;\n\t\t\t\tel2 = b ? calc(b) : 0;\n\n\t\t\t\treturn el1 - el2;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\texists: function exists(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\t\t\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort alpha numeric strings\n\t\talphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {\n\t\t\tvar a,\n\t\t\t b,\n\t\t\t a1,\n\t\t\t b1,\n\t\t\t i = 0,\n\t\t\t L,\n\t\t\t rx = /(\\d+)|(\\D+)/g,\n\t\t\t rd = /\\d/;\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\t//handle empty values\n\t\t\tif (!as && as !== 0) {\n\t\t\t\temptyAlign = !bs && bs !== 0 ? 0 : -1;\n\t\t\t} else if (!bs && bs !== 0) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\n\t\t\t\tif (isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\t\ta = String(as).toLowerCase();\n\t\t\t\tb = String(bs).toLowerCase();\n\t\t\t\tif (a === b) return 0;\n\t\t\t\tif (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\t\ta = a.match(rx);\n\t\t\t\tb = b.match(rx);\n\t\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\t\twhile (i < L) {\n\t\t\t\t\ta1 = a[i];\n\t\t\t\t\tb1 = b[i++];\n\t\t\t\t\tif (a1 !== b1) {\n\t\t\t\t\t\tif (isFinite(a1) && isFinite(b1)) {\n\t\t\t\t\t\t\tif (a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\t\tif (b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t\t} else return a1 > b1 ? 1 : -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn a.length > b.length;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"sort\", Sort);\n\n\tvar Validate = function Validate(table) {\n\t\tthis.table = table;\n\t};\n\n\t//validate\n\tValidate.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = [],\n\t\t validator;\n\n\t\tif (column.definition.validator) {\n\n\t\t\tif (Array.isArray(column.definition.validator)) {\n\t\t\t\tcolumn.definition.validator.forEach(function (item) {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\n\t\t\t\t\tif (validator) {\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\n\t\t\t\tif (validator) {\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t};\n\n\tValidate.prototype._extractValidator = function (value) {\n\t\tvar parts, type, params;\n\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tparts = value.split(\":\", 2);\n\t\t\t\ttype = parts.shift();\n\t\t\t\tparams = parts[0];\n\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\tbreak;\n\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tValidate.prototype._buildValidator = function (type, params) {\n\n\t\tvar func = typeof type == \"function\" ? type : this.validators[type];\n\n\t\tif (!func) {\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn {\n\t\t\t\ttype: typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc: func,\n\t\t\t\tparams: params\n\t\t\t};\n\t\t}\n\t};\n\n\tValidate.prototype.validate = function (validators, cell, value) {\n\t\tvar self = this,\n\t\t valid = [];\n\n\t\tif (validators) {\n\t\t\tvalidators.forEach(function (item) {\n\t\t\t\tif (!item.func.call(self, cell, value, item.params)) {\n\t\t\t\t\tvalid.push({\n\t\t\t\t\t\ttype: item.type,\n\t\t\t\t\t\tparameters: item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn valid.length ? valid : true;\n\t};\n\n\tValidate.prototype.validators = {\n\n\t\t//is integer\n\t\tinteger: function integer(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n\t\t},\n\n\t\t//is float\n\t\tfloat: function float(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\n\t\t},\n\n\t\t//must be a number\n\t\tnumeric: function numeric(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !isNaN(value);\n\t\t},\n\n\t\t//must be a string\n\t\tstring: function string(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn isNaN(value);\n\t\t},\n\n\t\t//maximum value\n\t\tmax: function max(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) <= parameters;\n\t\t},\n\n\t\t//minimum value\n\t\tmin: function min(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) >= parameters;\n\t\t},\n\n\t\t//minimum string length\n\t\tminLength: function minLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length >= parameters;\n\t\t},\n\n\t\t//maximum string length\n\t\tmaxLength: function maxLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length <= parameters;\n\t\t},\n\n\t\t//in provided value list\n\t\tin: function _in(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (typeof parameters == \"string\") {\n\t\t\t\tparameters = parameters.split(\"|\");\n\t\t\t}\n\n\t\t\treturn value === \"\" || parameters.indexOf(value) > -1;\n\t\t},\n\n\t\t//must match provided regex\n\t\tregex: function regex(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar reg = new RegExp(parameters);\n\n\t\t\treturn reg.test(value);\n\t\t},\n\n\t\t//value must be unique in this column\n\t\tunique: function unique(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar unique = true;\n\n\t\t\tvar cellData = cell.getData();\n\t\t\tvar column = cell.getColumn()._getSelf();\n\n\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\t\tvar data = row.getData();\n\n\t\t\t\tif (data !== cellData) {\n\t\t\t\t\tif (value == column.getFieldValue(data)) {\n\t\t\t\t\t\tunique = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn unique;\n\t\t},\n\n\t\t//must have a value\n\t\trequired: function required(cell, value, parameters) {\n\t\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"validate\", Validate);\n\n\treturn Tabulator;\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n listen = function listen(node, eventName, handler, capture) {\n (0, _on.default)(node, eventName, handler, capture);\n return function () {\n (0, _off.default)(node, eventName, handler, capture);\n };\n };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n if (container == null) return defaultContainer;\n container = typeof container === 'function' ? container() : container;\n return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(require(\"dom-helpers/activeElement\"));\n\nvar _contains = _interopRequireDefault(require(\"dom-helpers/query/contains\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _listen = _interopRequireDefault(require(\"dom-helpers/events/listen\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _elementType = _interopRequireDefault(require(\"prop-types-extra/lib/elementType\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ModalManager = _interopRequireDefault(require(\"./ModalManager\"));\n\nvar _Portal = _interopRequireDefault(require(\"./Portal\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"./utils/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n newProps[prop] = props[prop];\n }\n });\n return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n exited: !_this.props.show\n };\n\n _this.onPortalRendered = function () {\n if (_this.props.onShow) {\n _this.props.onShow();\n } // autofocus after onShow, to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n _this.autoFocus();\n };\n\n _this.onShow = function () {\n var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(_this.enforceFocus);\n }, true);\n };\n\n _this.onHide = function () {\n _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.removeKeydownListener();\n\n _this.removeFocusListener();\n\n if (_this.props.restoreFocus) {\n _this.restoreLastFocus();\n }\n };\n\n _this.setDialogRef = function (ref) {\n _this.dialog = ref;\n };\n\n _this.setBackdropRef = function (ref) {\n _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n };\n\n _this.handleHidden = function () {\n _this.setState({\n exited: true\n });\n\n _this.onHide();\n\n if (_this.props.onExited) {\n var _this$props;\n\n (_this$props = _this.props).onExited.apply(_this$props, arguments);\n }\n };\n\n _this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this.props.onBackdropClick) {\n _this.props.onBackdropClick(e);\n }\n\n if (_this.props.backdrop === true) {\n _this.props.onHide();\n }\n };\n\n _this.handleDocumentKeyDown = function (e) {\n if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n if (_this.props.onEscapeKeyDown) {\n _this.props.onEscapeKeyDown(e);\n }\n\n _this.props.onHide();\n }\n };\n\n _this.enforceFocus = function () {\n if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n return;\n }\n\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n _this.dialog.focus();\n }\n };\n\n _this.renderBackdrop = function () {\n var _this$props2 = _this.props,\n renderBackdrop = _this$props2.renderBackdrop,\n Transition = _this$props2.backdropTransition;\n var backdrop = renderBackdrop({\n ref: _this.setBackdropRef,\n onClick: _this.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react.default.createElement(Transition, {\n appear: true,\n in: _this.props.show\n }, backdrop);\n }\n\n return backdrop;\n };\n\n return _this;\n }\n\n Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n if (nextProps.show) {\n return {\n exited: false\n };\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n return {\n exited: true\n };\n }\n\n return null;\n };\n\n var _proto = Modal.prototype;\n\n _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n if (_inDOM.default && !prevProps.show && this.props.show) {\n this.lastFocus = (0, _activeElement.default)();\n }\n\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this$props3 = this.props,\n show = _this$props3.show,\n transition = _this$props3.transition;\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n _proto.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) return;\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n this.dialog.focus();\n }\n };\n\n _proto.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n _proto.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n show = _this$props4.show,\n container = _this$props4.container,\n children = _this$props4.children,\n renderDialog = _this$props4.renderDialog,\n _this$props4$role = _this$props4.role,\n role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n Transition = _this$props4.transition,\n backdrop = _this$props4.backdrop,\n className = _this$props4.className,\n style = _this$props4.style,\n onExit = _this$props4.onExit,\n onExiting = _this$props4.onExiting,\n onEnter = _this$props4.onEnter,\n onEntering = _this$props4.onEntering,\n onEntered = _this$props4.onEntered,\n props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n if (!(show || Transition && !this.state.exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: this.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, omitProps(props, Modal.propTypes), {\n style: style,\n className: className,\n tabIndex: '-1'\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = _react.default.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n in: show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n return _react.default.createElement(_Portal.default, {\n container: container,\n onRendered: this.onPortalRendered\n }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n };\n\n return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: _propTypes.default.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: _propTypes.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes.default.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes.default.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: _elementType.default,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n show: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react.default.createElement(\"div\", props);\n }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction onEnd(node, handler, duration) {\n var fakeEvent = {\n target: node,\n currentTarget: node\n },\n backup;\n if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n if (_properties.default.end) {\n node.addEventListener(_properties.default.end, done, false);\n backup = setTimeout(function () {\n return done(fakeEvent);\n }, (duration || 100) * 1.5);\n } else setTimeout(done.bind(null, fakeEvent), 0);\n\n function done(event) {\n if (event.target !== event.currentTarget) return;\n clearTimeout(backup);\n event.target.removeEventListener(_properties.default.end, done);\n handler.call(this);\n }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n var str = (0, _style.default)(node, _properties.default.duration),\n mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _forwardRef = _interopRequireDefault(require(\"./forwardRef\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar getDisplayName = function getDisplayName(Component) {\n var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n var maybeArrayOfConsumers = _ref.consumers,\n mapToProps = _ref.mapToProps,\n displayName = _ref.displayName,\n _ref$forwardRefAs = _ref.forwardRefAs,\n forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n var consumers = maybeArrayOfConsumers;\n\n if (!Array.isArray(maybeArrayOfConsumers)) {\n consumers = [maybeArrayOfConsumers];\n }\n\n var SingleConsumer = ensureConsumer(consumers[0]);\n\n function singleRender(props, ref) {\n var _extends2;\n\n var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n return _react.default.createElement(SingleConsumer, null, function (value) {\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n });\n }\n\n function multiRender(props, ref) {\n var _extends3;\n\n var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n return consumers.reduceRight(function (inner, Context) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var Consumer = ensureConsumer(Context);\n return _react.default.createElement(Consumer, null, function (value) {\n return inner.apply(void 0, args.concat([value]));\n });\n };\n }, function () {\n for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n contexts[_key2] = arguments[_key2];\n }\n\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n })();\n }\n\n var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n return (0, _forwardRef.default)(contextTransform, {\n displayName: displayName || getDisplayName(Component)\n });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n return $mapContextToProps({\n consumers: maybeOpts,\n mapToProps: mapToProps\n }, Component);\n}","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};\nfunction E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}E.prototype.isReactComponent={};E.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?B(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}var H=G.prototype=new F;\nH.constructor=G;k(H,E.prototype);H.isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1<f){for(var l=Array(f),m=0;m<f;m++)l[m]=arguments[m+2];e.children=l}if(a&&a.defaultProps)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof:p,type:a,key:g,ref:h,props:e,_owner:J.current}}\nfunction da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var O=/\\/+/g,P=[];function Q(a,b,d,c){if(P.length){var e=P.pop();e.result=a;e.keyPrefix=b;e.func=d;e.context=c;e.count=0;return e}return{result:a,keyPrefix:b,func:d,context:c,count:0}}\nfunction R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||\"object\"!==typeof a?f=null:(f=A&&a[A]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),h=\n0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else\"object\"===e&&(d=\"\"+a,B(\"31\",\"[object Object]\"===d?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":d,\"\"));return g}function U(a,b,d){return null==a?0:S(a,\"\",b,d)}function T(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}\nfunction fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(O,\"$&/\")+\"/\")+d)),c.push(a))}function V(a,b,d,c,e){var g=\"\";null!=d&&(g=(\"\"+d).replace(O,\"$&/\")+\"/\");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B(\"321\"):void 0;return a}\nvar X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B(\"143\");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,\n_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,\nb,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B(\"267\",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=\nb){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=\"\"+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:\"16.8.6\",\nunstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;d<b;d++)c+=\"&args[]=\"+encodeURIComponent(arguments[d+1]);ba(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",c)}aa?void 0:x(\"227\");function ca(a,b,c,d,e,f,g,h,l){var k=Array.prototype.slice.call(arguments,3);try{b.apply(c,k)}catch(m){this.onError(m)}}\nvar da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,l){da=!1;ea=null;ca.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,l){ja.apply(this,arguments);if(da){if(da){var k=ea;da=!1;ea=null}else x(\"198\"),k=void 0;fa||(fa=!0,ha=k)}}var la=null,ma={};\nfunction na(){if(la)for(var a in ma){var b=ma[a],c=la.indexOf(a);-1<c?void 0:x(\"96\",a);if(!oa[c]){b.extractEvents?void 0:x(\"97\",a);oa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;pa.hasOwnProperty(h)?x(\"99\",h):void 0;pa[h]=f;var l=f.phasedRegistrationNames;if(l){for(e in l)l.hasOwnProperty(e)&&qa(l[e],g,h);e=!0}else f.registrationName?(qa(f.registrationName,g,h),e=!0):e=!1;e?void 0:x(\"98\",d,a)}}}}\nfunction qa(a,b,c){ra[a]?x(\"100\",a):void 0;ra[a]=b;sa[a]=b.eventTypes[c].dependencies}var oa=[],pa={},ra={},sa={},ta=null,ua=null,va=null;function wa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=va(c);ka(d,b,void 0,a);a.currentTarget=null}function xa(a,b){null==b?x(\"30\"):void 0;if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}\nfunction ya(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var za=null;function Aa(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)wa(a,b[d],c[d]);else b&&wa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}\nvar Ba={injectEventPluginOrder:function(a){la?x(\"101\"):void 0;la=Array.prototype.slice.call(a);na()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];ma.hasOwnProperty(c)&&ma[c]===d||(ma[c]?x(\"102\",c):void 0,ma[c]=d,b=!0)}b&&na()}};\nfunction Ca(a,b){var c=a.stateNode;if(!c)return null;var d=ta(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;c&&\"function\"!==typeof c?x(\"231\",b,typeof c):void 0;\nreturn c}function Da(a){null!==a&&(za=xa(za,a));a=za;za=null;if(a&&(ya(a,Aa),za?x(\"95\"):void 0,fa))throw a=ha,fa=!1,ha=null,a;}var Ea=Math.random().toString(36).slice(2),Fa=\"__reactInternalInstance$\"+Ea,Ga=\"__reactEventHandlers$\"+Ea;function Ha(a){if(a[Fa])return a[Fa];for(;!a[Fa];)if(a.parentNode)a=a.parentNode;else return null;a=a[Fa];return 5===a.tag||6===a.tag?a:null}function Ia(a){a=a[Fa];return!a||5!==a.tag&&6!==a.tag?null:a}\nfunction Ja(a){if(5===a.tag||6===a.tag)return a.stateNode;x(\"33\")}function Ka(a){return a[Ga]||null}function La(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function Ma(a,b,c){if(b=Ca(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a)}\nfunction Na(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=La(b);for(b=c.length;0<b--;)Ma(c[b],\"captured\",a);for(b=0;b<c.length;b++)Ma(c[b],\"bubbled\",a)}}function Oa(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ca(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a))}function Pa(a){a&&a.dispatchConfig.registrationName&&Oa(a._targetInst,null,a)}\nfunction Qa(a){ya(a,Na)}var Ra=!(\"undefined\"===typeof window||!window.document||!window.document.createElement);function Sa(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ta={animationend:Sa(\"Animation\",\"AnimationEnd\"),animationiteration:Sa(\"Animation\",\"AnimationIteration\"),animationstart:Sa(\"Animation\",\"AnimationStart\"),transitionend:Sa(\"Transition\",\"TransitionEnd\")},Ua={},Va={};\nRa&&(Va=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ta.animationend.animation,delete Ta.animationiteration.animation,delete Ta.animationstart.animation),\"TransitionEvent\"in window||delete Ta.transitionend.transition);function Wa(a){if(Ua[a])return Ua[a];if(!Ta[a])return a;var b=Ta[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Va)return Ua[a]=b[c];return a}\nvar Xa=Wa(\"animationend\"),Ya=Wa(\"animationiteration\"),Za=Wa(\"animationstart\"),$a=Wa(\"transitionend\"),ab=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bb=null,cb=null,db=null;\nfunction eb(){if(db)return db;var a,b=cb,c=b.length,d,e=\"value\"in bb?bb.value:bb.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return db=e.slice(a,1<d?1-d:void 0)}function fb(){return!0}function gb(){return!1}\nfunction y(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?fb:gb;this.isPropagationStopped=gb;return this}\nn(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=fb)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=fb)},persist:function(){this.isPersistent=fb},isPersistent:gb,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=gb;this._dispatchInstances=this._dispatchListeners=null}});y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\ny.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;hb(c);return c};hb(y);function ib(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function jb(a){a instanceof this?void 0:x(\"279\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8<ob&&11>=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return qb&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar zb={eventTypes:sb,extractEvents:function(a,b,c,d){var e=void 0;var f=void 0;if(nb)b:{switch(a){case \"compositionstart\":e=sb.compositionStart;break b;case \"compositionend\":e=sb.compositionEnd;break b;case \"compositionupdate\":e=sb.compositionUpdate;break b}e=void 0}else wb?ub(a,c)&&(e=sb.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(e=sb.compositionStart);e?(qb&&\"ko\"!==c.locale&&(wb||e!==sb.compositionStart?e===sb.compositionEnd&&wb&&(f=eb()):(bb=d,cb=\"value\"in bb?bb.value:bb.textContent,wb=\n!0)),e=kb.getPooled(e,b,c,d),f?e.data=f:(f=vb(c),null!==f&&(e.data=f)),Qa(e),f=e):f=null;(a=pb?xb(a,c):yb(a,c))?(b=lb.getPooled(sb.beforeInput,b,c,d),b.data=a,Qa(b)):b=null;return null===f?b:null===b?f:[f,b]}},Ab=null,Bb=null,Cb=null;function Db(a){if(a=ua(a)){\"function\"!==typeof Ab?x(\"280\"):void 0;var b=ta(a.stateNode);Ab(a.stateNode,a.type,b)}}function Eb(a){Bb?Cb?Cb.push(a):Cb=[a]:Bb=a}function Fb(){if(Bb){var a=Bb,b=Cb;Cb=Bb=null;Db(a);if(b)for(a=0;a<b.length;a++)Db(b[a])}}\nfunction Gb(a,b){return a(b)}function Hb(a,b,c){return a(b,c)}function Ib(){}var Jb=!1;function Kb(a,b){if(Jb)return a(b);Jb=!0;try{return Gb(a,b)}finally{if(Jb=!1,null!==Bb||null!==Cb)Ib(),Fb()}}var Lb={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Mb(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Lb[a.type]:\"textarea\"===b?!0:!1}\nfunction Nb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function Ob(a){if(!Ra)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}function Pb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Qb(a){var b=Pb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Rb(a){a._valueTracker||(a._valueTracker=Qb(a))}function Sb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Pb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}var Tb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Tb.hasOwnProperty(\"ReactCurrentDispatcher\")||(Tb.ReactCurrentDispatcher={current:null});\nvar Ub=/^(.*)[\\\\\\/]/,z=\"function\"===typeof Symbol&&Symbol.for,Vb=z?Symbol.for(\"react.element\"):60103,Wb=z?Symbol.for(\"react.portal\"):60106,Xb=z?Symbol.for(\"react.fragment\"):60107,Yb=z?Symbol.for(\"react.strict_mode\"):60108,Zb=z?Symbol.for(\"react.profiler\"):60114,$b=z?Symbol.for(\"react.provider\"):60109,ac=z?Symbol.for(\"react.context\"):60110,bc=z?Symbol.for(\"react.concurrent_mode\"):60111,cc=z?Symbol.for(\"react.forward_ref\"):60112,dc=z?Symbol.for(\"react.suspense\"):60113,ec=z?Symbol.for(\"react.memo\"):\n60115,fc=z?Symbol.for(\"react.lazy\"):60116,gc=\"function\"===typeof Symbol&&Symbol.iterator;function hc(a){if(null===a||\"object\"!==typeof a)return null;a=gc&&a[gc]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction ic(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case bc:return\"ConcurrentMode\";case Xb:return\"Fragment\";case Wb:return\"Portal\";case Zb:return\"Profiler\";case Yb:return\"StrictMode\";case dc:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ac:return\"Context.Consumer\";case $b:return\"Context.Provider\";case cc:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\n\")\":\"ForwardRef\");case ec:return ic(a.type);case fc:if(a=1===a._status?a._result:null)return ic(a)}return null}function jc(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=ic(a.type);c=null;d&&(c=ic(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ub,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nvar kc=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,lc=Object.prototype.hasOwnProperty,mc={},nc={};\nfunction oc(a){if(lc.call(nc,a))return!0;if(lc.call(mc,a))return!1;if(kc.test(a))return nc[a]=!0;mc[a]=!0;return!1}function pc(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qc(a,b,c,d){if(null===b||\"undefined\"===typeof b||pc(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(qc(b,c,e,d)&&(c=null),d||null===e?oc(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction uc(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function vc(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction wc(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=uc(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function xc(a,b){b=b.checked;null!=b&&tc(a,\"checked\",b,!1)}\nfunction yc(a,b){xc(a,b);var c=uc(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?zc(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&zc(a,b.type,uc(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Ac(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction zc(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var Bc={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function Cc(a,b,c){a=y.getPooled(Bc.change,a,b,c);a.type=\"change\";Eb(c);Qa(a);return a}var Dc=null,Ec=null;function Fc(a){Da(a)}\nfunction Gc(a){var b=Ja(a);if(Sb(b))return a}function Hc(a,b){if(\"change\"===a)return b}var Ic=!1;Ra&&(Ic=Ob(\"input\")&&(!document.documentMode||9<document.documentMode));function Jc(){Dc&&(Dc.detachEvent(\"onpropertychange\",Kc),Ec=Dc=null)}function Kc(a){\"value\"===a.propertyName&&Gc(Ec)&&(a=Cc(Ec,a,Nb(a)),Kb(Fc,a))}function Lc(a,b,c){\"focus\"===a?(Jc(),Dc=b,Ec=c,Dc.attachEvent(\"onpropertychange\",Kc)):\"blur\"===a&&Jc()}function Mc(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Gc(Ec)}\nfunction Nc(a,b){if(\"click\"===a)return Gc(b)}function Oc(a,b){if(\"input\"===a||\"change\"===a)return Gc(b)}\nvar Pc={eventTypes:Bc,_isInputEventSupported:Ic,extractEvents:function(a,b,c,d){var e=b?Ja(b):window,f=void 0,g=void 0,h=e.nodeName&&e.nodeName.toLowerCase();\"select\"===h||\"input\"===h&&\"file\"===e.type?f=Hc:Mb(e)?Ic?f=Oc:(f=Mc,g=Lc):(h=e.nodeName)&&\"input\"===h.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(f=Nc);if(f&&(f=f(a,b)))return Cc(f,c,d);g&&g(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&zc(e,\"number\",e.value)}},Qc=y.extend({view:null,detail:null}),Rc={Alt:\"altKey\",\nControl:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Rc[a])?!!b[a]:!1}function Tc(){return Sc}\nvar Uc=0,Vc=0,Wc=!1,Xc=!1,Yc=Qc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Tc,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Uc;Uc=a.screenX;return Wc?\"mousemove\"===a.type?a.screenX-b:0:(Wc=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Vc;Vc=a.screenY;return Xc?\"mousemove\"===a.type?a.screenY-b:0:(Xc=!0,0)}}),Zc=Yc.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),$c={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},ad={eventTypes:$c,extractEvents:function(a,b,c,d){var e=\"mouseover\"===a||\"pointerover\"===a,f=\"mouseout\"===a||\"pointerout\"===a;if(e&&(c.relatedTarget||c.fromElement)||!f&&!e)return null;e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;f?(f=b,b=(b=c.relatedTarget||c.toElement)?Ha(b):null):f=null;if(f===b)return null;var g=void 0,h=void 0,l=void 0,k=void 0;if(\"mouseout\"===a||\"mouseover\"===a)g=Yc,h=$c.mouseLeave,l=$c.mouseEnter,k=\"mouse\";\nelse if(\"pointerout\"===a||\"pointerover\"===a)g=Zc,h=$c.pointerLeave,l=$c.pointerEnter,k=\"pointer\";var m=null==f?e:Ja(f);e=null==b?e:Ja(b);a=g.getPooled(h,f,c,d);a.type=k+\"leave\";a.target=m;a.relatedTarget=e;c=g.getPooled(l,b,c,d);c.type=k+\"enter\";c.target=e;c.relatedTarget=m;d=b;if(f&&d)a:{b=f;e=d;k=0;for(g=b;g;g=La(g))k++;g=0;for(l=e;l;l=La(l))g++;for(;0<k-g;)b=La(b),k--;for(;0<g-k;)e=La(e),g--;for(;k--;){if(b===e||b===e.alternate)break a;b=La(b);e=La(e)}b=null}else b=null;e=b;for(b=[];f&&f!==e;){k=\nf.alternate;if(null!==k&&k===e)break;b.push(f);f=La(f)}for(f=[];d&&d!==e;){k=d.alternate;if(null!==k&&k===e)break;f.push(d);d=La(d)}for(d=0;d<b.length;d++)Oa(b[d],\"bubbled\",a);for(d=f.length;0<d--;)Oa(f[d],\"captured\",c);return[a,c]}};function bd(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var cd=Object.prototype.hasOwnProperty;\nfunction dd(a,b){if(bd(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!cd.call(b,c[d])||!bd(a[c[d]],b[c[d]]))return!1;return!0}function ed(a){var b=a;if(a.alternate)for(;b.return;)b=b.return;else{if(0!==(b.effectTag&2))return 1;for(;b.return;)if(b=b.return,0!==(b.effectTag&2))return 1}return 3===b.tag?2:3}function fd(a){2!==ed(a)?x(\"188\"):void 0}\nfunction gd(a){var b=a.alternate;if(!b)return b=ed(a),3===b?x(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c.return,f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return fd(e),a;if(g===d)return fd(e),b;g=g.sibling}x(\"188\")}if(c.return!==d.return)c=e,d=f;else{g=!1;for(var h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:x(\"189\")}}c.alternate!==d?x(\"190\"):void 0}3!==c.tag?x(\"188\"):void 0;return c.stateNode.current===c?a:b}function hd(a){a=gd(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar id=y.extend({animationName:null,elapsedTime:null,pseudoElement:null}),jd=y.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),kd=Qc.extend({relatedTarget:null});function ld(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar md={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},od=Qc.extend({key:function(a){if(a.key){var b=md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=ld(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?nd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Tc,charCode:function(a){return\"keypress\"===\na.type?ld(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?ld(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),pd=Yc.extend({dataTransfer:null}),qd=Qc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Tc}),rd=y.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),sd=Yc.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"abort\",\"abort\"],[Xa,\"animationEnd\"],[Ya,\"animationIteration\"],[Za,\"animationStart\"],[\"canplay\",\"canPlay\"],[\"canplaythrough\",\"canPlayThrough\"],[\"drag\",\"drag\"],[\"dragenter\",\"dragEnter\"],[\"dragexit\",\"dragExit\"],[\"dragleave\",\"dragLeave\"],[\"dragover\",\"dragOver\"],[\"durationchange\",\"durationChange\"],[\"emptied\",\"emptied\"],[\"encrypted\",\"encrypted\"],\n[\"ended\",\"ended\"],[\"error\",\"error\"],[\"gotpointercapture\",\"gotPointerCapture\"],[\"load\",\"load\"],[\"loadeddata\",\"loadedData\"],[\"loadedmetadata\",\"loadedMetadata\"],[\"loadstart\",\"loadStart\"],[\"lostpointercapture\",\"lostPointerCapture\"],[\"mousemove\",\"mouseMove\"],[\"mouseout\",\"mouseOut\"],[\"mouseover\",\"mouseOver\"],[\"playing\",\"playing\"],[\"pointermove\",\"pointerMove\"],[\"pointerout\",\"pointerOut\"],[\"pointerover\",\"pointerOver\"],[\"progress\",\"progress\"],[\"scroll\",\"scroll\"],[\"seeking\",\"seeking\"],[\"stalled\",\"stalled\"],\n[\"suspend\",\"suspend\"],[\"timeupdate\",\"timeUpdate\"],[\"toggle\",\"toggle\"],[\"touchmove\",\"touchMove\"],[$a,\"transitionEnd\"],[\"waiting\",\"waiting\"],[\"wheel\",\"wheel\"]],ud={},vd={};function wd(a,b){var c=a[0];a=a[1];var d=\"on\"+(a[0].toUpperCase()+a.slice(1));b={phasedRegistrationNames:{bubbled:d,captured:d+\"Capture\"},dependencies:[c],isInteractive:b};ud[a]=b;vd[c]=b}\n[[\"blur\",\"blur\"],[\"cancel\",\"cancel\"],[\"click\",\"click\"],[\"close\",\"close\"],[\"contextmenu\",\"contextMenu\"],[\"copy\",\"copy\"],[\"cut\",\"cut\"],[\"auxclick\",\"auxClick\"],[\"dblclick\",\"doubleClick\"],[\"dragend\",\"dragEnd\"],[\"dragstart\",\"dragStart\"],[\"drop\",\"drop\"],[\"focus\",\"focus\"],[\"input\",\"input\"],[\"invalid\",\"invalid\"],[\"keydown\",\"keyDown\"],[\"keypress\",\"keyPress\"],[\"keyup\",\"keyUp\"],[\"mousedown\",\"mouseDown\"],[\"mouseup\",\"mouseUp\"],[\"paste\",\"paste\"],[\"pause\",\"pause\"],[\"play\",\"play\"],[\"pointercancel\",\"pointerCancel\"],\n[\"pointerdown\",\"pointerDown\"],[\"pointerup\",\"pointerUp\"],[\"ratechange\",\"rateChange\"],[\"reset\",\"reset\"],[\"seeked\",\"seeked\"],[\"submit\",\"submit\"],[\"touchcancel\",\"touchCancel\"],[\"touchend\",\"touchEnd\"],[\"touchstart\",\"touchStart\"],[\"volumechange\",\"volumeChange\"]].forEach(function(a){wd(a,!0)});td.forEach(function(a){wd(a,!1)});\nvar xd={eventTypes:ud,isInteractiveTopLevelEventType:function(a){a=vd[a];return void 0!==a&&!0===a.isInteractive},extractEvents:function(a,b,c,d){var e=vd[a];if(!e)return null;switch(a){case \"keypress\":if(0===ld(c))return null;case \"keydown\":case \"keyup\":a=od;break;case \"blur\":case \"focus\":a=kd;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=Yc;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=\npd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=qd;break;case Xa:case Ya:case Za:a=id;break;case $a:a=rd;break;case \"scroll\":a=Qc;break;case \"wheel\":a=sd;break;case \"copy\":case \"cut\":case \"paste\":a=jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=Zc;break;default:a=y}b=a.getPooled(e,b,c,d);Qa(b);return b}},yd=xd.isInteractiveTopLevelEventType,\nzd=[];function Ad(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=Ha(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Nb(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<oa.length;h++){var l=oa[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=xa(g,l))}Da(g)}}var Bd=!0;\nfunction E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!1)}function Ed(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!0)}function Cd(a,b){Hb(Dd,a,b)}\nfunction Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||\"number\"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Rd=Ra&&\"documentMode\"in document&&11>=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g<f.length;g++){var h=f[g];if(!e.hasOwnProperty(h)||!e[h]){e=!1;break a}}e=!0}f=!e}if(f)return null;e=b?Ja(b):window;switch(a){case \"focus\":if(Mb(e)||\"true\"===e.contentEditable)Td=e,Ud=b,Vd=null;break;case \"blur\":Vd=Ud=Td=null;break;case \"mousedown\":Wd=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return Wd=!1,Xd(c,d);case \"selectionchange\":if(Rd)break;\ncase \"keydown\":case \"keyup\":return Xd(c,d)}return null}};Ba.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ta=Ka;ua=Ia;va=Ja;Ba.injectEventPluginsByName({SimpleEventPlugin:xd,EnterLeaveEventPlugin:ad,ChangeEventPlugin:Pc,SelectEventPlugin:Yd,BeforeInputEventPlugin:zb});function Zd(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction $d(a,b){a=n({children:void 0},b);if(b=Zd(b.children))a.children=b;return a}function ae(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+uc(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction be(a,b){null!=b.dangerouslySetInnerHTML?x(\"91\"):void 0;return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function ce(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?x(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"<svg>\"+b+\"</svg>\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case \"scroll\":Ed(\"scroll\",a);break;case \"focus\":case \"blur\":Ed(\"focus\",a);Ed(\"blur\",a);c.blur=!0;c.focus=!0;break;case \"cancel\":case \"close\":Ob(e)&&Ed(e,a);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ab.indexOf(e)&&E(e,a)}c[e]=!0}}}function te(){}var ue=null,ve=null;\nfunction we(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}function xe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar ye=\"function\"===typeof setTimeout?setTimeout:void 0,ze=\"function\"===typeof clearTimeout?clearTimeout:void 0,Ae=r.unstable_scheduleCallback,Be=r.unstable_cancelCallback;\nfunction Ce(a,b,c,d,e){a[Ga]=e;\"input\"===c&&\"radio\"===e.type&&null!=e.name&&xc(a,e);re(c,d);d=re(c,e);for(var f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];\"style\"===g?oe(a,h):\"dangerouslySetInnerHTML\"===g?je(a,h):\"children\"===g?ke(a,h):tc(a,g,h,d)}switch(c){case \"input\":yc(a,e);break;case \"textarea\":de(a,e);break;case \"select\":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?ae(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?ae(a,!!e.multiple,e.defaultValue,\n!0):ae(a,!!e.multiple,e.multiple?[]:\"\",!1))}}function De(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Ee(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}new Set;var Fe=[],Ge=-1;function F(a){0>Ge||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:c<b?a.earliestPendingTime=b:a.latestPendingTime>b&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{b<a.latestPingedTime&&(a.latestPingedTime=0);var c=a.latestPendingTime;0!==c&&(c>b?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):b<a.latestSuspendedTime?(a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0,cf(a,b)):\nb>c&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:c<b?a.earliestSuspendedTime=b:d>b&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||d<a)&&(e=d);a=e;0!==a&&c>a&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=af(c,a.mode,d),b.return=a,b;b=e(b,c,d);b.return=a;return b}function l(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props,d),d.ref=Af(a,b,c),d.return=a,d;d=Ye(c.type,c.key,c.props,null,a.mode,d);d.ref=Af(a,b,c);d.return=a;return d}function k(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=bf(c,a.mode,d),b.return=a,b;b=e(b,c.children||[],d);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ze(c,a.mode,d,f),b.return=a,b;b=e(b,c,d);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=af(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Vb:return c=Ye(b.type,b.key,b.props,null,a.mode,c),c.ref=Af(a,null,b),c.return=a,c;case Wb:return b=bf(b,a.mode,c),b.return=a,b}if(zf(b)||\nhc(b))return b=Ze(b,a.mode,c,null),b.return=a,b;Bf(a,b)}return null}function t(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Vb:return c.key===e?c.type===Xb?m(a,b,c.props.children,d,e):l(a,b,c,d):null;case Wb:return c.key===e?k(a,b,c,d):null}if(zf(c)||hc(c))return null!==e?null:m(a,b,c,d,null);Bf(a,c)}return null}function A(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Vb:return a=a.get(null===d.key?c:d.key)||null,d.type===Xb?m(b,a,d.props.children,e,d.key):l(b,a,d,e);case Wb:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e)}if(zf(d)||hc(d))return a=a.get(c)||null,m(b,a,d,e,null);Bf(b,d)}return null}function v(e,g,h,k){for(var l=null,m=null,q=g,u=g=0,B=null;null!==q&&u<h.length;u++){q.index>u?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;u<h.length;u++)if(q=p(e,h[u],k))g=f(q,g,u),null===m?l=q:m.sibling=q,m=q;return l}for(q=d(e,q);u<h.length;u++)if(B=A(q,e,u,h[u],k))a&&null!==B.alternate&&q.delete(null===B.key?u:B.key),g=f(B,g,u),null===m?l=B:m.sibling=B,m=B;a&&q.forEach(function(a){return b(e,a)});return l}function R(e,g,h,k){var l=hc(h);\"function\"!==typeof l?x(\"150\"):void 0;h=l.call(h);null==h?x(\"151\"):void 0;\nfor(var m=l=null,q=g,u=g=0,B=null,w=h.next();null!==q&&!w.done;u++,w=h.next()){q.index>u?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}\nfunction hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x(\"300\"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}\nfunction mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x(\"310\"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return\"function\"===typeof b?b(a):b}\nfunction pg(a){var b=ng(),c=b.queue;null===c?x(\"311\"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==\nd){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:dd,c(e,d)&&a.ref===b.ref))return Jg(a,b,f);b.effectTag|=1;a=Xe(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}\nfunction Lg(a,b,c,d,e,f){return null!==a&&dd(a.memoizedProps,d)&&a.ref===b.ref&&(qg=!1,e<f)?Jg(a,b,f):Mg(a,b,c,d,f)}function Ng(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function Mg(a,b,c,d,e){var f=J(c)?Ie:H.current;f=Je(b,f);Ig(b,e);c=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,c,e);return b.child}\nfunction Og(a,b,c,d,e){if(J(c)){var f=!0;Oe(b)}else f=!1;Ig(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),vf(b,c,d,e),xf(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var l=g.context,k=c.contextType;\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k);Pg=!1;var t=b.memoizedState;l=g.state=t;var A=b.updateQueue;null!==A&&(yf(b,A,d,g,e),l=b.memoizedState);h!==d||t!==l||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),l=b.memoizedState),(h=Pg||uf(b,c,h,d,t,l,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&\ng.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=l),g.props=d,g.state=l,g.context=k,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,h=b.memoizedProps,g.props=b.type===b.elementType?h:L(b.type,h),l=g.context,k=c.contextType,\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k)),m=c.getDerivedStateFromProps,(p=\"function\"===\ntypeof m||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k),Pg=!1,l=b.memoizedState,t=g.state=l,A=b.updateQueue,null!==A&&(yf(b,A,d,g,e),t=b.memoizedState),h!==d||l!==t||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),t=b.memoizedState),(m=Pg||uf(b,c,h,d,l,t,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===\ntypeof g.componentWillUpdate&&g.componentWillUpdate(d,t,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,t,k)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=\nt),g.props=d,g.state=t,g.context=k,d=m):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),d=!1);return Qg(a,b,c,d,f,e)}\nfunction Qg(a,b,c,d,e,f){Ng(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Pe(b,c,!1),Jg(a,b,f);d=b.stateNode;Gg.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Df(b,a.child,null,f),b.child=Df(b,null,h,f)):S(a,b,h,f);b.memoizedState=d.state;e&&Pe(b,c,!0);return b.child}function Rg(a){var b=a.stateNode;b.pendingContext?Me(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Me(a,b.context,!1);Jf(a,b.containerInfo)}\nfunction Sg(a,b,c){var d=b.mode,e=b.pendingProps,f=b.memoizedState;if(0===(b.effectTag&64)){f=null;var g=!1}else f={timedOutAt:null!==f?f.timedOutAt:0},g=!0,b.effectTag&=-65;if(null===a)if(g){var h=e.fallback;a=Ze(null,d,0,null);0===(b.mode&1)&&(a.child=null!==b.memoizedState?b.child.child:b.child);d=Ze(h,d,c,null);a.sibling=d;c=a;c.return=d.return=b}else c=d=Ef(b,null,e.children,c);else null!==a.memoizedState?(d=a.child,h=d.sibling,g?(c=e.fallback,e=Xe(d,d.pendingProps,0),0===(b.mode&1)&&(g=null!==\nb.memoizedState?b.child.child:b.child,g!==d.child&&(e.child=g)),d=e.sibling=Xe(h,c,h.expirationTime),c=e,e.childExpirationTime=0,c.return=d.return=b):c=d=Df(b,d.child,e.children,c)):(h=a.child,g?(g=e.fallback,e=Ze(null,d,0,null),e.child=h,0===(b.mode&1)&&(e.child=null!==b.memoizedState?b.child.child:b.child),d=e.sibling=Ze(g,d,c,null),d.effectTag|=2,c=e,e.childExpirationTime=0,c.return=d.return=b):d=c=Df(b,h,e.children,c)),b.stateNode=a.stateNode;b.memoizedState=f;b.child=c;return d}\nfunction Jg(a,b,c){null!==a&&(b.contextDependencies=a.contextDependencies);if(b.childExpirationTime<c)return null;null!==a&&b.child!==a.child?x(\"153\"):void 0;if(null!==b.child){a=b.child;c=Xe(a,a.pendingProps,a.expirationTime);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Xe(a,a.pendingProps,a.expirationTime),c.return=b;c.sibling=null}return b.child}\nfunction Tg(a,b,c){var d=b.expirationTime;if(null!==a)if(a.memoizedProps!==b.pendingProps||I.current)qg=!0;else{if(d<c){qg=!1;switch(b.tag){case 3:Rg(b);Fg();break;case 5:Lf(b);break;case 1:J(b.type)&&Oe(b);break;case 4:Jf(b,b.stateNode.containerInfo);break;case 10:Ug(b,b.memoizedProps.value);break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;if(0!==d&&d>=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime<c&&(h.expirationTime=c);k=h.alternate;null!==k&&k.expirationTime<c&&(k.expirationTime=c);k=c;for(var m=h.return;null!==m;){var p=m.alternate;if(m.childExpirationTime<k)m.childExpirationTime=k,null!==p&&p.childExpirationTime<k&&(p.childExpirationTime=k);else if(null!==p&&p.childExpirationTime<k)p.childExpirationTime=k;else break;m=m.return}l.expirationTime<c&&(l.expirationTime=c);break}k=k.next}}else g=10===h.tag?h.type===b.type?\nnull:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}}S(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,Ig(b,c),e=M(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,S(a,b,d,c),b.child;case 14:return e=b.type,f=L(e,b.pendingProps),f=L(e.type,f),Kg(a,b,e,f,d,c);case 15:return Lg(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===\nd?e:L(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,J(d)?(a=!0,Oe(b)):a=!1,Ig(b,c),vf(b,d,e,c),xf(b,d,e,c),Qg(null,b,d,!0,a,c)}x(\"156\")}var Vg={current:null},Wg=null,Xg=null,Yg=null;function Ug(a,b){var c=a.type._context;G(Vg,c._currentValue,a);c._currentValue=b}function Zg(a){var b=Vg.current;F(Vg,a);a.type._context._currentValue=b}function Ig(a,b){Wg=a;Yg=Xg=null;var c=a.contextDependencies;null!==c&&c.expirationTime>=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;m<e?(null===g&&(g=l,f=k),h<m&&(h=m)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=32,l.nextEffect=null,null===b.lastEffect?b.firstEffect=b.lastEffect=l:(b.lastEffect.nextEffect=l,b.lastEffect=l)));l=l.next}m=null;for(l=b.firstCapturedUpdate;null!==l;){var p=l.expirationTime;p<e?(null===m&&(m=l,null===g&&(f=k)),h<p&&(h=p)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=\n32,l.nextEffect=null,null===b.lastCapturedEffect?b.firstCapturedEffect=b.lastCapturedEffect=l:(b.lastCapturedEffect.nextEffect=l,b.lastCapturedEffect=l)));l=l.next}null===g&&(b.lastUpdate=null);null===m?b.lastCapturedUpdate=null:a.effectTag|=32;null===g&&null===m&&(f=k);b.baseState=f;b.firstUpdate=g;b.firstCapturedUpdate=m;a.expirationTime=h;a.memoizedState=k}\nfunction hh(a,b,c){null!==b.firstCapturedUpdate&&(null!==b.lastUpdate&&(b.lastUpdate.next=b.firstCapturedUpdate,b.lastUpdate=b.lastCapturedUpdate),b.firstCapturedUpdate=b.lastCapturedUpdate=null);ih(b.firstEffect,c);b.firstEffect=b.lastEffect=null;ih(b.firstCapturedEffect,c);b.firstCapturedEffect=b.lastCapturedEffect=null}function ih(a,b){for(;null!==a;){var c=a.callback;if(null!==c){a.callback=null;var d=b;\"function\"!==typeof c?x(\"191\",c):void 0;c.call(d)}a=a.nextEffect}}\nfunction jh(a,b){return{value:a,source:b,stack:jc(b)}}function kh(a){a.effectTag|=4}var lh=void 0,mh=void 0,nh=void 0,oh=void 0;lh=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};mh=function(){};\nnh=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;If(N.current);a=null;switch(c){case \"input\":f=vc(g,f);d=vc(g,d);a=[];break;case \"option\":f=$d(g,f);d=$d(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=be(g,f);d=be(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=te)}qe(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if(\"style\"===\nc){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(ra.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if(\"style\"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]=\"\");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||\n(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else\"dangerouslySetInnerHTML\"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,\"\"+k)):\"children\"===c?l===k||\"string\"!==typeof k&&\"number\"!==typeof k||(a=a||[]).push(c,\"\"+k):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(ra.hasOwnProperty(c)?(null!=k&&se(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push(\"style\",h);e=a;(b.updateQueue=e)&&kh(b)}};oh=function(a,b,c,d){c!==d&&kh(b)};\nvar ph=\"function\"===typeof WeakSet?WeakSet:Set;function qh(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=jc(c));null!==c&&ic(c.type);b=b.value;null!==a&&1===a.tag&&ic(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function rh(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){sh(a,c)}else b.current=null}\nfunction th(a,b,c){c=c.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do{if((d.tag&a)!==Nf){var e=d.destroy;d.destroy=void 0;void 0!==e&&e()}(d.tag&b)!==Nf&&(e=d.create,d.destroy=e());d=d.next}while(d!==c)}}\nfunction uh(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d.style.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=ne(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if(13===c.tag&&null!==c.memoizedState){d=c.child.sibling;d.return=c;c=d;continue}else if(null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===c.return||\nc.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction vh(a){\"function\"===typeof Re&&Re(a);switch(a.tag){case 0:case 11:case 14:case 15:var b=a.updateQueue;if(null!==b&&(b=b.lastEffect,null!==b)){var c=b=b.next;do{var d=c.destroy;if(void 0!==d){var e=a;try{d()}catch(f){sh(e,f)}}c=c.next}while(c!==b)}break;case 1:rh(a);b=a.stateNode;if(\"function\"===typeof b.componentWillUnmount)try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(f){sh(a,f)}break;case 5:rh(a);break;case 4:wh(a)}}\nfunction xh(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction yh(a){a:{for(var b=a.return;null!==b;){if(xh(b)){var c=b;break a}b=b.return}x(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:x(\"161\")}c.effectTag&16&&(ke(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||xh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&\n2)continue b;if(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)if(c)if(d){var f=b,g=e.stateNode,h=c;8===f.nodeType?f.parentNode.insertBefore(g,h):f.insertBefore(g,h)}else b.insertBefore(e.stateNode,c);else d?(g=b,h=e.stateNode,8===g.nodeType?(f=g.parentNode,f.insertBefore(h,g)):(f=g,f.appendChild(h)),g=g._reactRootContainer,null!==g&&void 0!==g||null!==f.onclick||(f.onclick=te)):b.appendChild(e.stateNode);\nelse if(4!==e.tag&&null!==e.child){e.child.return=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e.return||e.return===a)return;e=e.return}e.sibling.return=e.return;e=e.sibling}}\nfunction wh(a){for(var b=a,c=!1,d=void 0,e=void 0;;){if(!c){c=b.return;a:for(;;){null===c?x(\"160\"):void 0;switch(c.tag){case 5:d=c.stateNode;e=!1;break a;case 3:d=c.stateNode.containerInfo;e=!0;break a;case 4:d=c.stateNode.containerInfo;e=!0;break a}c=c.return}c=!0}if(5===b.tag||6===b.tag){a:for(var f=b,g=f;;)if(vh(g),null!==g.child&&4!==g.tag)g.child.return=g,g=g.child;else{if(g===f)break;for(;null===g.sibling;){if(null===g.return||g.return===f)break a;g=g.return}g.sibling.return=g.return;g=g.sibling}e?\n(f=d,g=b.stateNode,8===f.nodeType?f.parentNode.removeChild(g):f.removeChild(g)):d.removeChild(b.stateNode)}else if(4===b.tag){if(null!==b.child){d=b.stateNode.containerInfo;e=!0;b.child.return=b;b=b.child;continue}}else if(vh(b),null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return;b=b.return;4===b.tag&&(c=!1)}b.sibling.return=b.return;b=b.sibling}}\nfunction zh(a,b){switch(b.tag){case 0:case 11:case 14:case 15:th(Pf,Qf,b);break;case 1:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&Ce(c,f,e,a,d,b)}break;case 6:null===b.stateNode?x(\"162\"):void 0;b.stateNode.nodeValue=b.memoizedProps;break;case 3:break;case 12:break;case 13:c=b.memoizedState;d=void 0;a=b;null===c?d=!1:(d=!0,a=b.child,0===c.timedOutAt&&(c.timedOutAt=lf()));null!==a&&uh(a,d);c=\nb.updateQueue;if(null!==c){b.updateQueue=null;var g=b.stateNode;null===g&&(g=b.stateNode=new ph);c.forEach(function(a){var c=Ah.bind(null,b,a);g.has(a)||(g.add(a),a.then(c,c))})}break;case 17:break;default:x(\"163\")}}var Bh=\"function\"===typeof WeakMap?WeakMap:Map;function Ch(a,b,c){c=nf(c);c.tag=ah;c.payload={element:null};var d=b.value;c.callback=function(){Dh(d);qh(a,b)};return c}\nfunction Eh(a,b,c){c=nf(c);c.tag=ah;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Fh?Fh=new Set([this]):Fh.add(this));var c=b.value,e=b.stack;qh(a,b);this.componentDidCatch(c,{componentStack:null!==e?e:\"\"})});return c}\nfunction Gh(a){switch(a.tag){case 1:J(a.type)&&Ke(a);var b=a.effectTag;return b&2048?(a.effectTag=b&-2049|64,a):null;case 3:return Kf(a),Le(a),b=a.effectTag,0!==(b&64)?x(\"285\"):void 0,a.effectTag=b&-2049|64,a;case 5:return Mf(a),null;case 13:return b=a.effectTag,b&2048?(a.effectTag=b&-2049|64,a):null;case 18:return null;case 4:return Kf(a),null;case 10:return Zg(a),null;default:return null}}\nvar Hh=Tb.ReactCurrentDispatcher,Ih=Tb.ReactCurrentOwner,Jh=1073741822,Kh=!1,T=null,Lh=null,U=0,Mh=-1,Nh=!1,V=null,Oh=!1,Ph=null,Qh=null,Rh=null,Fh=null;function Sh(){if(null!==T)for(var a=T.return;null!==a;){var b=a;switch(b.tag){case 1:var c=b.type.childContextTypes;null!==c&&void 0!==c&&Ke(b);break;case 3:Kf(b);Le(b);break;case 5:Mf(b);break;case 4:Kf(b);break;case 10:Zg(b)}a=a.return}Lh=null;U=0;Mh=-1;Nh=!1;T=null}\nfunction Th(){for(;null!==V;){var a=V.effectTag;a&16&&ke(V.stateNode,\"\");if(a&128){var b=V.alternate;null!==b&&(b=b.ref,null!==b&&(\"function\"===typeof b?b(null):b.current=null))}switch(a&14){case 2:yh(V);V.effectTag&=-3;break;case 6:yh(V);V.effectTag&=-3;zh(V.alternate,V);break;case 4:zh(V.alternate,V);break;case 8:a=V,wh(a),a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null,a=a.alternate,null!==a&&(a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null)}V=V.nextEffect}}\nfunction Uh(){for(;null!==V;){if(V.effectTag&256)a:{var a=V.alternate,b=V;switch(b.tag){case 0:case 11:case 15:th(Of,Nf,b);break a;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:L(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}break a;case 3:case 5:case 6:case 4:case 17:break a;default:x(\"163\")}}V=V.nextEffect}}\nfunction Vh(a,b){for(;null!==V;){var c=V.effectTag;if(c&36){var d=V.alternate,e=V,f=b;switch(e.tag){case 0:case 11:case 15:th(Rf,Sf,e);break;case 1:var g=e.stateNode;if(e.effectTag&4)if(null===d)g.componentDidMount();else{var h=e.elementType===e.type?d.memoizedProps:L(e.type,d.memoizedProps);g.componentDidUpdate(h,d.memoizedState,g.__reactInternalSnapshotBeforeUpdate)}d=e.updateQueue;null!==d&&hh(e,d,g,f);break;case 3:d=e.updateQueue;if(null!==d){g=null;if(null!==e.child)switch(e.child.tag){case 5:g=\ne.child.stateNode;break;case 1:g=e.child.stateNode}hh(e,d,g,f)}break;case 5:f=e.stateNode;null===d&&e.effectTag&4&&we(e.type,e.memoizedProps)&&f.focus();break;case 6:break;case 4:break;case 12:break;case 13:break;case 17:break;default:x(\"163\")}}c&128&&(e=V.ref,null!==e&&(f=V.stateNode,\"function\"===typeof e?e(f):e.current=f));c&512&&(Ph=a);V=V.nextEffect}}\nfunction Wh(a,b){Rh=Qh=Ph=null;var c=W;W=!0;do{if(b.effectTag&512){var d=!1,e=void 0;try{var f=b;th(Uf,Nf,f);th(Nf,Tf,f)}catch(g){d=!0,e=g}d&&sh(b,e)}b=b.nextEffect}while(null!==b);W=c;c=a.expirationTime;0!==c&&Xh(a,c);X||W||Yh(1073741823,!1)}function of(){null!==Qh&&Be(Qh);null!==Rh&&Rh()}\nfunction Zh(a,b){Oh=Kh=!0;a.current===b?x(\"177\"):void 0;var c=a.pendingCommitExpirationTime;0===c?x(\"261\"):void 0;a.pendingCommitExpirationTime=0;var d=b.expirationTime,e=b.childExpirationTime;ef(a,e>d?e:d);Ih.current=null;d=void 0;1<b.effectTag?null!==b.lastEffect?(b.lastEffect.nextEffect=b,d=b.firstEffect):d=b:d=b.firstEffect;ue=Bd;ve=Pd();Bd=!1;for(V=d;null!==V;){e=!1;var f=void 0;try{Uh()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}for(V=d;null!==V;){e=!1;\nf=void 0;try{Th()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}Qd(ve);ve=null;Bd=!!ue;ue=null;a.current=b;for(V=d;null!==V;){e=!1;f=void 0;try{Vh(a,c)}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}if(null!==d&&null!==Ph){var g=Wh.bind(null,a,d);Qh=r.unstable_runWithPriority(r.unstable_NormalPriority,function(){return Ae(g)});Rh=g}Kh=Oh=!1;\"function\"===typeof Qe&&Qe(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=\nb>c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k<ab.length;k++)E(ab[k],e);break;case \"source\":E(\"error\",e);break;case \"img\":case \"image\":case \"link\":E(\"error\",e);E(\"load\",e);break;case \"form\":E(\"reset\",e);E(\"submit\",e);break;case \"details\":E(\"toggle\",e);break;case \"input\":wc(e,m);E(\"invalid\",e);se(p,\"onChange\");break;case \"select\":e._wrapperState=\n{wasMultiple:!!m.multiple};E(\"invalid\",e);se(p,\"onChange\");break;case \"textarea\":ce(e,m),E(\"invalid\",e),se(p,\"onChange\")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],\"children\"===f?\"string\"===typeof l?e.textContent!==l&&(k=[\"children\",l]):\"number\"===typeof l&&e.textContent!==\"\"+l&&(k=[\"children\",\"\"+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case \"input\":Rb(e);Ac(e,m,!0);break;case \"textarea\":Rb(e);ee(e,m);break;case \"select\":case \"option\":break;default:\"function\"===typeof m.onClick&&\n(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?\"script\"===p?(e=k.createElement(\"div\"),e.innerHTML=\"<script>\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case \"source\":E(\"error\",p);h=m;break;case \"img\":case \"image\":case \"link\":E(\"error\",p);E(\"load\",p);h=m;break;case \"form\":E(\"reset\",p);E(\"submit\",p);h=m;break;case \"details\":E(\"toggle\",p);h=m;break;case \"input\":wc(p,m);h=vc(p,m);E(\"invalid\",p);se(t,\"onChange\");break;case \"option\":h=$d(p,m);break;case \"select\":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E(\"invalid\",p);se(t,\"onChange\");break;case \"textarea\":ce(p,\nm);h=be(p,m);E(\"invalid\",p);se(t,\"onChange\");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];\"style\"===l?oe(R,q):\"dangerouslySetInnerHTML\"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):\"children\"===l?\"string\"===typeof q?(\"textarea\"!==v||\"\"!==q)&&ke(R,q):\"number\"===typeof q&&ke(R,\"\"+q):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case \"input\":Rb(p);\nAc(p,m,!1);break;case \"textarea\":Rb(p);ee(p,m);break;case \"option\":null!=m.value&&p.setAttribute(\"value\",\"\"+uc(m.value));break;case \"select\":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x(\"166\"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):(\"string\"!==\ntypeof g&&(null===b.stateNode?x(\"166\"):void 0),e=If(Hf.current),If(N.current),Eg(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&kh(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;T=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=\nb.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Kf(b);mh(b);break;case 10:Zg(b);break;case 9:break;case 14:break;case 17:J(b.type)&&Ke(b);break;case 18:break;default:x(\"156\")}T=null}b=a;if(1===U||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=Gh(a,U);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}\nfunction bi(a){var b=Tg(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=ai(a));Ih.current=null;return b}\nfunction ci(a,b){Kh?x(\"243\"):void 0;of();Kh=!0;var c=Hh.current;Hh.current=kg;var d=a.nextExpirationTimeToWorkOn;if(d!==U||a!==Lh||null===T)Sh(),Lh=a,U=d,T=Xe(Lh.current,null,U),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==T&&!di();)T=bi(T);else for(;null!==T;)T=bi(T)}catch(u){if(Yg=Xg=Wg=null,lg(),null===T)e=!0,Dh(u);else{null===T?x(\"271\"):void 0;var f=T,g=f.return;if(null===g)e=!0,Dh(u);else{a:{var h=a,l=g,k=f,m=u;g=U;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==\nm&&\"object\"===typeof m&&\"function\"===typeof m.then){var p=m;m=l;var t=-1,A=-1;do{if(13===m.tag){var v=m.alternate;if(null!==v&&(v=v.memoizedState,null!==v)){A=10*(1073741822-v.timedOutAt);break}v=m.pendingProps.maxDuration;if(\"number\"===typeof v)if(0>=v)t=0;else if(-1===t||v<t)t=v}m=m.return}while(null!==m);m=l;do{if(v=13===m.tag)v=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(v){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=\n64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=nf(1073741823),g.tag=sf,pf(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var R=k.pingCache;null===R?(R=k.pingCache=new Bh,v=new Set,R.set(p,v)):(v=R.get(p),void 0===v&&(v=new Set,R.set(p,v)));v.has(l)||(v.add(l),k=ei.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===A&&(A=10*(1073741822-gf(h,g))-5E3),h=A+t);0<=h&&Mh<h&&(Mh=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((ic(k.type)||\"A React component\")+\n\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){ff(a,d);fi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;\nb=a.expirationTime=1073741823;fi(a,c,d,b,-1);return}}b&&-1!==Mh?(ff(a,d),b=10*(1073741822-gf(a,d)),b<Mh&&(Mh=b),b=10*(1073741822-lf()),b=Mh-b,fi(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d<gi)&&(gi=d);return d}function ei(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Lh&&U===c)Lh=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}\nfunction qf(a,b){a=hi(a,b);null!==a&&(!Kh&&0!==U&&b>U&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(b<mi)return;null!==ni&&r.unstable_cancelCallback(ni)}mi=b;a=r.unstable_now()-ti;ni=r.unstable_scheduleCallback(zi,{timeout:10*(1073741822-b)-a})}function fi(a,b,c,d,e){a.expirationTime=d;0!==e||di()?0<e&&(a.timeoutHandle=ye(Ai.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Ai(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;xi();vi=ui;Bi(a,c)}function $h(a,b){a.expirationTime=b;a.finishedWork=null}\nfunction lf(){if(W)return vi;Ci();if(0===Z||1===Z)xi(),vi=ui;return vi}function Xh(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===Y?(li=Y=a,a.nextScheduledRoot=a):(Y=Y.nextScheduledRoot=a,Y.nextScheduledRoot=li)):b>a.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){pi||(pi=!0,qi=d)}}if(pi)throw a=qi,qi=null,pi=!1,a;}function Bi(a,b){W?x(\"253\"):void 0;oi=a;Z=b;Di(a,b,!1);Yh(1073741823,!1)}\nfunction Di(a,b,c){W?x(\"245\"):void 0;W=!0;if(c){var d=a.finishedWork;null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&(di()?a.finishedWork=d:Fi(a,d,b)))}else d=a.finishedWork,null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&Fi(a,d,b));W=!1}\nfunction Fi(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Wb,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nAb=function(a,b,c){switch(b){case \"input\":yc(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Ka(d);e?void 0:x(\"90\");Sb(d);yc(d,e)}}}break;case \"textarea\":de(a,c);break;case \"select\":b=c.value,null!=b&&ae(a,!!c.multiple,b,!1)}};\nfunction Ni(a){var b=1073741822-25*(((1073741822-lf()+500)/25|0)+1);b>=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};function Oi(){this._callbacks=null;this._didCommit=!1;this._onCommit=this._onCommit.bind(this)}Oi.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nOi.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];\"function\"!==typeof c?x(\"191\",c):void 0;c()}}};\nfunction Pi(a,b,c){b=K(3,null,null,b?3:0);a={current:b,containerInfo:a,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:c,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null};this._internalRoot=b.stateNode=a}\nPi.prototype.render=function(a,b){var c=this._internalRoot,d=new Oi;b=void 0===b?null:b;null!==b&&d.then(b);Ki(a,c,null,d._onCommit);return d};Pi.prototype.unmount=function(a){var b=this._internalRoot,c=new Oi;a=void 0===a?null:a;null!==a&&c.then(a);Ki(null,b,null,c._onCommit);return c};Pi.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new Oi;c=void 0===c?null:c;null!==c&&e.then(c);Ki(b,d,a,e._onCommit);return e};\nPi.prototype.createBatch=function(){var a=new Ni(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;Qi(b)?void 0:x(\"200\");return Mi(a,b,null,c)}\nvar Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&(\"function\"===typeof a.render?x(\"188\"):x(\"268\",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x(\"200\");null==a||void 0===a._reactInternalFiber?\nx(\"38\"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x(\"40\");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x(\"187\"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=\nX;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x(\"299\",\"unstable_createRoot\");return new Pi(a,!0,null!=b&&!0===b.hydrate)}\n(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:\"16.8.6\",rendererPackageName:\"react-dom\"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.13.6\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if(\"function\"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = autoBind;\nvar wontBind = ['constructor', 'render', 'componentWillMount', 'componentDidMount', 'componentWillReceiveProps', 'shouldComponentUpdate', 'componentWillUpdate', 'componentDidUpdate', 'componentWillUnmount'];\n\nvar toBind = [];\n\nfunction autoBind(context) {\n if (context === undefined) {\n console.error('Autobind error: No context provided.');\n return;\n }\n\n var objPrototype = Object.getPrototypeOf(context);\n\n if (arguments.length > 1) {\n // If a list of methods to bind is provided, use it.\n toBind = Array.prototype.slice.call(arguments, 1);\n } else {\n // If no list of methods to bind is provided, bind all available methods in class.\n toBind = Object.getOwnPropertyNames(objPrototype);\n }\n\n toBind.forEach(function (method) {\n var descriptor = Object.getOwnPropertyDescriptor(objPrototype, method);\n\n if (descriptor === undefined) {\n console.warn('Autobind: \"' + method + '\" method not found in class.');\n return;\n }\n\n // Return if it's special case function or if not a function at all\n if (wontBind.indexOf(method) !== -1 || typeof descriptor.value !== 'function') {\n return;\n }\n\n Object.defineProperty(objPrototype, method, boundMethod(objPrototype, method, descriptor));\n });\n}\n\n/**\n* From autobind-decorator (https://github.com/andreypopp/autobind-decorator/tree/master)\n* Return a descriptor removing the value and returning a getter\n* The getter will return a .bind version of the function\n* and memoize the result against a symbol on the instance\n*/\nfunction boundMethod(objPrototype, method, descriptor) {\n var fn = descriptor.value;\n\n return {\n configurable: true,\n get: function get() {\n if (this === objPrototype || this.hasOwnProperty(method)) {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n Object.defineProperty(this, method, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n return boundFn;\n }\n };\n}\nmodule.exports = exports['default'];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v16.8.6\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var p=require(\"object-assign\"),q=require(\"react\");function aa(a,b,d,c,f,e,h,g){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var D=[d,c,f,e,h,g],B=0;a=Error(b.replace(/%s/g,function(){return D[B++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction r(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);aa(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}\nvar v=\"function\"===typeof Symbol&&Symbol.for,ba=v?Symbol.for(\"react.portal\"):60106,x=v?Symbol.for(\"react.fragment\"):60107,ca=v?Symbol.for(\"react.strict_mode\"):60108,da=v?Symbol.for(\"react.profiler\"):60114,z=v?Symbol.for(\"react.provider\"):60109,ea=v?Symbol.for(\"react.context\"):60110,fa=v?Symbol.for(\"react.concurrent_mode\"):60111,ha=v?Symbol.for(\"react.forward_ref\"):60112,A=v?Symbol.for(\"react.suspense\"):60113,ia=v?Symbol.for(\"react.memo\"):60115,ja=v?Symbol.for(\"react.lazy\"):60116;\nfunction C(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case fa:return\"ConcurrentMode\";case x:return\"Fragment\";case ba:return\"Portal\";case da:return\"Profiler\";case ca:return\"StrictMode\";case A:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ea:return\"Context.Consumer\";case z:return\"Context.Provider\";case ha:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case ia:return C(a.type);case ja:if(a=1===a._status?a._result:null)return C(a)}return null}var E=q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.hasOwnProperty(\"ReactCurrentDispatcher\")||(E.ReactCurrentDispatcher={current:null});var ka={};function F(a,b){for(var d=a._threadCount|0;d<=b;d++)a[d]=a._currentValue2,a._threadCount=d+1}\nfunction la(a,b,d){var c=a.contextType;if(\"object\"===typeof c&&null!==c)return F(c,d),c[d];if(a=a.contextTypes){d={};for(var f in a)d[f]=b[f];b=d}else b=ka;return b}for(var G=new Uint16Array(16),H=0;15>H;H++)G[H]=H+1;G[15]=0;\nvar ma=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,na=Object.prototype.hasOwnProperty,oa={},pa={};\nfunction qa(a){if(na.call(pa,a))return!0;if(na.call(oa,a))return!1;if(ma.test(a))return pa[a]=!0;oa[a]=!0;return!1}function ra(a,b,d,c){if(null!==d&&0===d.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(c)return!1;if(null!==d)return!d.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction sa(a,b,d,c){if(null===b||\"undefined\"===typeof b||ra(a,b,d,c))return!0;if(c)return!1;if(null!==d)switch(d.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function I(a,b,d,c,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=c;this.attributeNamespace=f;this.mustUseProperty=d;this.propertyName=a;this.type=b}var J={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){J[a]=new I(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];J[b]=new I(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){J[a]=new I(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){J[a]=new I(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){J[a]=new I(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){J[a]=new I(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){J[a]=new I(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){J[a]=new I(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){J[a]=new I(a,5,!1,a.toLowerCase(),null)});var K=/[\\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(K,\nL);J[b]=new I(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){J[a]=new I(a,1,!1,a.toLowerCase(),null)});var ta=/[\"'&<>]/;\nfunction M(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=ta.exec(a);if(b){var d=\"\",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r(\"321\"):void 0;return N}\nfunction ua(){0<U&&r(\"312\");return{memoizedState:null,queue:null,next:null}}function W(){null===P?null===O?(Q=!1,O=P=ua()):(Q=!0,P=O):null===P.next?(Q=!1,P=P.next=ua()):(Q=!0,P=P.next);return P}function va(a,b,d,c){for(;S;)S=!1,U+=1,P=null,d=a(b,c);O=N=null;U=0;P=T=null;return d}function wa(a,b){return\"function\"===typeof b?b(a):b}\nfunction xa(a,b,d){N=V();P=W();if(Q){var c=P.queue;b=c.dispatch;if(null!==T&&(d=T.get(c),void 0!==d)){T.delete(c);c=P.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);P.memoizedState=c;return[c,b]}return[P.memoizedState,b]}a=a===wa?\"function\"===typeof b?b():b:void 0!==d?d(b):b;P.memoizedState=a;a=P.queue={last:null,dispatch:null};a=a.dispatch=ya.bind(null,N,a);return[P.memoizedState,a]}\nfunction ya(a,b,d){25>U?void 0:r(\"301\");if(a===N)if(S=!0,a={action:d,next:null},null===T&&(T=new Map),d=T.get(b),void 0===d)T.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function za(){}\nvar X=0,Aa={readContext:function(a){var b=X;F(a,b);return a[b]},useContext:function(a){V();var b=X;F(a,b);return a[b]},useMemo:function(a,b){N=V();P=W();b=void 0===b?null:b;if(null!==P){var d=P.memoizedState;if(null!==d&&null!==b){a:{var c=d[1];if(null===c)c=!1;else{for(var f=0;f<c.length&&f<b.length;f++){var e=b[f],h=c[f];if((e!==h||0===e&&1/e!==1/h)&&(e===e||h===h)){c=!1;break a}}c=!0}}if(c)return d[0]}}a=a();P.memoizedState=[a,b];return a},useReducer:xa,useRef:function(a){N=V();P=W();var b=P.memoizedState;\nreturn null===b?(a={current:a},P.memoizedState=a):b},useState:function(a){return xa(wa,a)},useLayoutEffect:function(){},useCallback:function(a){return a},useImperativeHandle:za,useEffect:za,useDebugValue:za},Ba={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ca(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Da={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Ea=p({menuitem:!0},Da),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Fa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Fa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Ga=/([A-Z])/g,Ha=/^ms-/,Z=q.Children.toArray,Ia=E.ReactCurrentDispatcher,Ja={listing:!0,pre:!0,textarea:!0},Ka=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,La={},Ma={};function Na(a){if(void 0===a||null===a)return a;var b=\"\";q.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Oa=Object.prototype.hasOwnProperty,Pa={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function Qa(a,b){void 0===a&&r(\"152\",C(b)||\"Component\")}\nfunction Ra(a,b,d){function c(c,f){var e=la(f,b,d),g=[],h=!1,l={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===g)return null},enqueueReplaceState:function(a,b){h=!0;g=[b]},enqueueSetState:function(a,b){if(null===g)return null;g.push(b)}},k=void 0;if(f.prototype&&f.prototype.isReactComponent){if(k=new f(c.props,e,l),\"function\"===typeof f.getDerivedStateFromProps){var t=f.getDerivedStateFromProps.call(null,c.props,k.state);null!=t&&(k.state=p({},k.state,t))}}else if(N={},k=f(c.props,\ne,l),k=va(f,c.props,k,e),null==k||null==k.render){a=k;Qa(a,f);return}k.props=c.props;k.context=e;k.updater=l;l=k.state;void 0===l&&(k.state=l=null);if(\"function\"===typeof k.UNSAFE_componentWillMount||\"function\"===typeof k.componentWillMount)if(\"function\"===typeof k.componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.componentWillMount(),\"function\"===typeof k.UNSAFE_componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.UNSAFE_componentWillMount(),g.length){l=g;var m=\nh;g=null;h=!1;if(m&&1===l.length)k.state=l[0];else{t=m?l[0]:k.state;var u=!0;for(m=m?1:0;m<l.length;m++){var w=l[m];w=\"function\"===typeof w?w.call(k,t,c.props,e):w;null!=w&&(u?(u=!1,t=p({},t,w)):p(t,w))}k.state=t}}else g=null;a=k.render();Qa(a,f);c=void 0;if(\"function\"===typeof k.getChildContext&&(e=f.childContextTypes,\"object\"===typeof e)){c=k.getChildContext();for(var R in c)R in e?void 0:r(\"108\",C(f)||\"Unknown\",R)}c&&(b=p({},b,c))}for(;q.isValidElement(a);){var f=a,e=f.type;if(\"function\"!==typeof e)break;\nc(f,e)}return{child:a,context:b}}\nvar Sa=function(){function a(b,d){if(!(this instanceof a))throw new TypeError(\"Cannot call a class as a function\");q.isValidElement(b)?b.type!==x?b=[b]:(b=b.props.children,b=q.isValidElement(b)?[b]:Z(b)):b=Z(b);b={type:null,domNamespace:Ba.html,children:b,childIndex:0,context:ka,footer:\"\"};var c=G[0];if(0===c){var f=G;c=f.length;var e=2*c;65536>=e?void 0:r(\"304\");var h=new Uint16Array(e);h.set(f);G=h;G[0]=c+1;for(f=c;f<e-1;f++)G[f]=f+1;G[e-1]=0}else G[0]=G[c];this.threadID=c;this.stack=[b];this.exhausted=\n!1;this.currentSelectValue=null;this.previousWasTextNode=!1;this.makeStaticMarkup=d;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[]}a.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;G[a]=G[0];G[0]=a}};a.prototype.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,f=this.threadID;F(c,f);var e=c[f];this.contextStack[b]=c;this.contextValueStack[b]=e;c[f]=a.props.value};a.prototype.popProvider=\nfunction(){var a=this.contextIndex,d=this.contextStack[a],c=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;d[this.threadID]=c};a.prototype.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};a.prototype.read=function(a){if(this.exhausted)return null;var b=X;X=this.threadID;var c=Ia.current;Ia.current=Aa;try{for(var f=[\"\"],e=!1;f[0].length<a;){if(0===this.stack.length){this.exhausted=\n!0;var h=this.threadID;G[h]=G[0];G[0]=h;break}var g=this.stack[this.stack.length-1];if(e||g.childIndex>=g.children.length){var D=g.footer;\"\"!==D&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===g.type)this.currentSelectValue=null;else if(null!=g.type&&null!=g.type.type&&g.type.type.$$typeof===z)this.popProvider(g.type);else if(g.type===A){this.suspenseDepth--;var B=f.pop();if(e){e=!1;var n=g.fallbackFrame;n?void 0:r(\"303\");this.stack.push(n);continue}else f[this.suspenseDepth]+=B}f[this.suspenseDepth]+=\nD}else{var l=g.children[g.childIndex++],k=\"\";try{k+=this.render(l,g.context,g.domNamespace)}catch(t){throw t;}finally{}f.length<=this.suspenseDepth&&f.push(\"\");f[this.suspenseDepth]+=k}}return f[0]}finally{Ia.current=c,X=b}};a.prototype.render=function(a,d,c){if(\"string\"===typeof a||\"number\"===typeof a){c=\"\"+a;if(\"\"===c)return\"\";if(this.makeStaticMarkup)return M(c);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+M(c);this.previousWasTextNode=!0;return M(c)}d=Ra(a,d,this.threadID);a=d.child;d=d.context;\nif(null===a||!1===a)return\"\";if(!q.isValidElement(a)){if(null!=a&&null!=a.$$typeof){var b=a.$$typeof;b===ba?r(\"257\"):void 0;r(\"258\",b.toString())}a=Z(a);this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"});return\"\"}b=a.type;if(\"string\"===typeof b)return this.renderDOM(a,d,c);switch(b){case ca:case fa:case da:case x:return a=Z(a.props.children),this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case A:r(\"294\")}if(\"object\"===\ntypeof b&&null!==b)switch(b.$$typeof){case ha:N={};var e=b.render(a.props,a.ref);e=va(b.render,a.props,e,a.ref);e=Z(e);this.stack.push({type:null,domNamespace:c,children:e,childIndex:0,context:d,footer:\"\"});return\"\";case ia:return a=[q.createElement(b.type,p({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case z:return b=Z(a.props.children),c={type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"},this.pushProvider(a),this.stack.push(c),\n\"\";case ea:b=a.type;e=a.props;var h=this.threadID;F(b,h);b=Z(e.children(b[h]));this.stack.push({type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"});return\"\";case ja:r(\"295\")}r(\"130\",null==b?b:typeof b,\"\")};a.prototype.renderDOM=function(a,d,c){var b=a.type.toLowerCase();c===Ba.html&&Ca(b);La.hasOwnProperty(b)||(Ka.test(b)?void 0:r(\"65\",b),La[b]=!0);var e=a.props;if(\"input\"===b)e=p({type:void 0},e,{defaultChecked:void 0,defaultValue:void 0,value:null!=e.value?e.value:e.defaultValue,\nchecked:null!=e.checked?e.checked:e.defaultChecked});else if(\"textarea\"===b){var h=e.value;if(null==h){h=e.defaultValue;var g=e.children;null!=g&&(null!=h?r(\"92\"):void 0,Array.isArray(g)&&(1>=g.length?void 0:r(\"93\"),g=g[0]),h=\"\"+g);null==h&&(h=\"\")}e=p({},e,{value:void 0,children:\"\"+h})}else if(\"select\"===b)this.currentSelectValue=null!=e.value?e.value:e.defaultValue,e=p({},e,{value:void 0});else if(\"option\"===b){g=this.currentSelectValue;var D=Na(e.children);if(null!=g){var B=null!=e.value?e.value+\n\"\":D;h=!1;if(Array.isArray(g))for(var n=0;n<g.length;n++){if(\"\"+g[n]===B){h=!0;break}}else h=\"\"+g===B;e=p({selected:void 0,children:void 0},e,{selected:h,children:D})}}if(h=e)Ea[b]&&(null!=h.children||null!=h.dangerouslySetInnerHTML?r(\"137\",b,\"\"):void 0),null!=h.dangerouslySetInnerHTML&&(null!=h.children?r(\"60\"):void 0,\"object\"===typeof h.dangerouslySetInnerHTML&&\"__html\"in h.dangerouslySetInnerHTML?void 0:r(\"61\")),null!=h.style&&\"object\"!==typeof h.style?r(\"62\",\"\"):void 0;h=e;g=this.makeStaticMarkup;\nD=1===this.stack.length;B=\"<\"+a.type;for(y in h)if(Oa.call(h,y)){var l=h[y];if(null!=l){if(\"style\"===y){n=void 0;var k=\"\",t=\"\";for(n in l)if(l.hasOwnProperty(n)){var m=0===n.indexOf(\"--\"),u=l[n];if(null!=u){var w=n;if(Ma.hasOwnProperty(w))w=Ma[w];else{var R=w.replace(Ga,\"-$1\").toLowerCase().replace(Ha,\"-ms-\");w=Ma[w]=R}k+=t+w+\":\";t=n;m=null==u||\"boolean\"===typeof u||\"\"===u?\"\":m||\"number\"!==typeof u||0===u||Y.hasOwnProperty(t)&&Y[t]?(\"\"+u).trim():u+\"px\";k+=m;t=\";\"}}l=k||null}n=null;b:if(m=b,u=h,-1===\nm.indexOf(\"-\"))m=\"string\"===typeof u.is;else switch(m){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":m=!1;break b;default:m=!0}if(m)Pa.hasOwnProperty(y)||(n=y,n=qa(n)&&null!=l?n+\"=\"+('\"'+M(l)+'\"'):\"\");else{m=y;n=l;l=J.hasOwnProperty(m)?J[m]:null;if(u=\"style\"!==m)u=null!==l?0===l.type:!(2<m.length)||\"o\"!==m[0]&&\"O\"!==m[0]||\"n\"!==m[1]&&\"N\"!==m[1]?!1:!0;u||sa(m,n,l,!1)?n=\"\":null!==\nl?(m=l.attributeName,l=l.type,n=3===l||4===l&&!0===n?m+'=\"\"':m+\"=\"+('\"'+M(n)+'\"')):n=qa(m)?m+\"=\"+('\"'+M(n)+'\"'):\"\"}n&&(B+=\" \"+n)}}g||D&&(B+=' data-reactroot=\"\"');var y=B;h=\"\";Da.hasOwnProperty(b)?y+=\"/>\":(y+=\">\",h=\"</\"+a.type+\">\");a:{g=e.dangerouslySetInnerHTML;if(null!=g){if(null!=g.__html){g=g.__html;break a}}else if(g=e.children,\"string\"===typeof g||\"number\"===typeof g){g=M(g);break a}g=null}null!=g?(e=[],Ja[b]&&\"\\n\"===g.charAt(0)&&(y+=\"\\n\"),y+=g):e=Z(e.children);a=a.type;c=null==c||\"http://www.w3.org/1999/xhtml\"===\nc?Ca(a):\"http://www.w3.org/2000/svg\"===c&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}(),Ta={renderToString:function(a){a=new Sa(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Sa(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){r(\"207\")},renderToStaticNodeStream:function(){r(\"208\")},\nversion:\"16.8.6\"},Ua={default:Ta},Va=Ua&&Ta||Ua;module.exports=Va.default||Va;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // this is for React 15.x only\n default_1.prototype.componentWillReceiveProps = function (props) {\n var _this = this;\n if (!Utils_1.isSameArray(this.state.data, props.data)) {\n // console.log('- componentWillReceiveProps');\n this.setState({ data: props.data }, function () {\n _this.table.setData(_this.state.data);\n });\n }\n };\n default_1.prototype.render = function () {\n var _this = this;\n // console.log('*** render');\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar _a;\nvar React = require(\"react\");\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar DateEditor_1 = require(\"./editors/DateEditor\");\nvar MultiSelectEditor_1 = require(\"./editors/MultiSelectEditor\");\nvar MultiValueFormatter_1 = require(\"./formatters/MultiValueFormatter\");\nvar Utils_1 = require(\"./Utils\");\nfunction SimpleButton(props) {\n var cellData = props.cell._cell.row.data;\n return React.createElement(\"button\", { onClick: function () { return alert(cellData.name); } }, \"Show\");\n}\nvar columns = [\n { title: 'Name', field: 'name', width: 150 },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress' },\n { title: 'Favourite Color', field: 'color' },\n { title: 'Date Of Birth', field: 'dob' },\n { title: 'Rating', field: 'rating', align: 'center', formatter: 'star' },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross' },\n { title: 'Custom', field: 'custom', align: 'center', formatter: Utils_1.reactFormatter(React.createElement(SimpleButton, null)) },\n];\nvar data = [\n { id: 1, name: 'Oli Bob', age: '12', color: 'red', dob: '01/01/1980', rating: 5, passed: true, pets: ['cat', 'dog'] },\n { id: 2, name: 'Mary May', age: '1', color: 'green', dob: '12/05/1989', rating: 4, passed: true, pets: ['cat'] },\n { id: 3, name: 'Christine Lobowski', age: '42', color: 'green', dob: '10/05/1985', rating: 4, passed: false },\n { id: 4, name: 'Brendon Philips', age: '125', color: 'red', dob: '01/08/1980', rating: 4.5, passed: true },\n { id: 5, name: 'Margret Marmajuke', age: '16', color: 'yellow', dob: '07/01/1999', rating: 4, passed: false },\n {\n id: 6,\n name: 'Van Ng',\n age: '37',\n color: 'green',\n dob: '06/10/1982',\n rating: 4,\n passed: true,\n pets: ['dog', 'fish']\n },\n { id: 7, name: 'Duc Ng', age: '37', color: 'yellow', dob: '10/10/1982', rating: 4, passed: true, pets: ['dog'] }\n];\n// Editable Example:\nvar colorOptions = (_a = {}, _a[''] = ' ', _a.red = 'red', _a.green = 'green', _a.yellow = 'yellow', _a);\nvar petOptions = [{ id: 'cat', name: 'cat' }, { id: 'dog', name: 'dog' }, { id: 'fish', name: 'fish' }];\nvar editableColumns = [\n { title: 'Name', field: 'name', width: 150, editor: 'input', headerFilter: 'input' },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress', editor: 'progress' },\n {\n title: 'Favourite Color',\n field: 'color',\n editor: 'select',\n editorParams: { allowEmpty: true, showListOnEmpty: true, values: colorOptions },\n headerFilter: 'select',\n headerFilterParams: { values: colorOptions }\n },\n { title: 'Date Of Birth', field: 'dob', editor: DateEditor_1[\"default\"], editorParams: { format: 'MM/dd/yyyy' } },\n {\n title: 'Pets',\n field: 'pets',\n editor: MultiSelectEditor_1[\"default\"],\n editorParams: { values: petOptions },\n formatter: MultiValueFormatter_1[\"default\"],\n formatterParams: { style: 'PILL' }\n },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross', editor: true }\n];\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.rowClick = function (e, row) {\n console.log('ref table: ', _this.ref.table); // this is the Tabulator table instance\n console.log('rowClick id: ${row.getData().id}', row, e);\n };\n _this.setData = function () {\n _this.setState({ data: data });\n };\n _this.clearData = function () {\n _this.setState({ data: [] });\n };\n return _this;\n }\n default_1.prototype.render = function () {\n var _this = this;\n var options = {\n height: 150,\n movableRows: true\n };\n return (React.createElement(\"div\", null,\n React.createElement(ReactTabulator_1[\"default\"], { ref: function (ref) { return (_this.ref = ref); }, columns: columns, data: data, rowClick: this.rowClick, options: options, \"data-custom-attr\": \"test-custom-attribute\", className: \"custom-css-class\" }),\n React.createElement(\"h3\", null,\n \"Asynchronous data: (e.g. fetch) - \",\n React.createElement(\"button\", { onClick: this.setData }, \"Set Data\"),\n ' ',\n React.createElement(\"button\", { onClick: this.clearData }, \"Clear\")),\n React.createElement(ReactTabulator_1[\"default\"], { columns: columns, data: this.state.data }),\n React.createElement(\"h3\", null, \"Editable Table\"),\n React.createElement(ReactTabulator_1[\"default\"], { columns: editableColumns, data: data, cellEdited: function (cell) { return console.log('cellEdited', cell); }, dataEdited: function (newData) { return console.log('dataEdited', newData); }, footerElement: React.createElement(\"span\", null, \"Footer\") }),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"https://github.com/ngduc/react-tabulator\", target: \"_blank\" }, \"Back to: Github Repo: react-tabulator\")),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"http://tabulator.info/examples/4.0\", target: \"_blank\" }, \"More Tabulator's Examples\"))));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar date_fns_1 = require(\"date-fns\");\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '' };\n _this.ref = null;\n _this.format = _this.props.editorParams.format || 'MM/dd/yyyy'; // TODO: detect from user locale & set default.\n _this.setValueOnSuccess = function (value) {\n if (value === void 0) { value = _this.state.value; }\n var success = _this.props.success;\n var result = value;\n if (result.indexOf('-') > 0) {\n // value is \"yyyy-MM-dd\" => parse it\n result = date_fns_1.format(value, _this.format);\n }\n success(result);\n };\n _this.onChange = function (ev) {\n var value = ev.target.value;\n _this.setState({ value: value });\n };\n _this.onKeyPress = function (ev) {\n var cancel = _this.props.cancel;\n if (ev.keyCode === 13) {\n _this.setValueOnSuccess();\n }\n else if (ev.keyCode === 27) {\n cancel();\n }\n };\n _this.onBlur = function () {\n _this.setValueOnSuccess();\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var value = _this.props.cell.getValue();\n _this.setState({ value: value });\n _this.ref.focus();\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var cell = this.props.cell;\n var valueDt = date_fns_1.parse(cell.getValue(), this.format, new Date(), { awareOfUnicodeTokens: true });\n var value = date_fns_1.format(valueDt, DEFAULT_DATE_INPUT_FORMAT);\n return (React.createElement(\"input\", { type: \"date\", ref: function (r) { return (_this.ref = r); }, defaultValue: value, \n // value={value}\n onBlur: this.onBlur, onChange: this.onChange, onKeyUp: this.onKeyPress, style: inputCss }));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar Utils_1 = require(\"../Utils\");\n// import { parse, format } from 'date-fns';\n// import ReactTags from 'react-tag-autocomplete';\nvar ReactTags = require('react-tag-autocomplete');\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '', values: [], autofocus: false };\n _this.ref = null;\n _this.setValueOnSuccess = function (values) {\n if (values === void 0) { values = _this.state.values; }\n var _a = _this.props, success = _a.success, cancel = _a.cancel;\n // console.log('setValueOnSuccess: ', values);\n success(values);\n // cancel();\n };\n _this.handleDelete = function (i) {\n // console.log('- handleDelete ', i);\n var values = _this.state.values;\n var newValues = values.filter(function (item, index) { return index !== i; });\n _this.setState({ values: newValues }, function () {\n _this.setValueOnSuccess(newValues);\n });\n };\n _this.handleAddition = function (item) {\n var values = _this.state.values;\n if (item.name) {\n // console.log('- handleAddition: ', item);\n values.push({ id: item.name, name: item.name });\n _this.setState({ values: values }, function () {\n _this.setValueOnSuccess(values);\n });\n }\n };\n // order: handleBlur => sucess() => grid's cellEdited => grid's dataEdited => handleAddition\n _this.handleBlur = function () {\n var cancel = _this.props.cancel;\n var newValue = _this.ref.input.input.value;\n if (newValue) {\n // console.log(111, newValue, this.ref);\n var values = Utils_1.clone(_this.state.values);\n values.push({ id: newValue, name: newValue });\n // console.log('- handleBlur ', values);\n _this.setValueOnSuccess(values);\n }\n else {\n cancel();\n }\n var el = react_dom_1.findDOMNode(_this.ref);\n if (el && el.parentElement.parentElement.parentElement) {\n el.parentElement.parentElement.parentElement.style.overflow = 'hidden';\n }\n // console.log('- handleBlur END');\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var el = react_dom_1.findDOMNode(_this.ref);\n el.style.zIndex = 1;\n el.parentElement.parentElement.parentElement.style.overflow = 'inherit';\n el.querySelector('input').focus();\n var values = (_this.props.cell.getValue() || []).map(function (item) {\n return typeof item === 'string' ? { id: item, name: item } : item;\n });\n _this.setState({ values: values });\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var editorParams = this.props.editorParams;\n var values = this.state.values;\n var suggestions = editorParams.values;\n return (React.createElement(\"div\", null,\n React.createElement(ReactTags, { ref: function (ref) { return (_this.ref = ref); }, placeholder: \"Select or Type\", tags: values, suggestions: suggestions, allowNew: true, autoresize: true, autofocus: this.state.autofocus, handleAddition: this.handleAddition, handleDelete: this.handleDelete, handleBlur: this.handleBlur, minQueryLength: 0 })));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","'use strict'\n\nvar React = require('react')\nvar PropTypes = require('prop-types')\nvar Tag = require('./Tag')\nvar Input = require('./Input')\nvar Suggestions = require('./Suggestions')\n\nvar KEYS = {\n ENTER: 13,\n TAB: 9,\n BACKSPACE: 8,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n}\n\nvar CLASS_NAMES = {\n root: 'react-tags',\n rootFocused: 'is-focused',\n selected: 'react-tags__selected',\n selectedTag: 'react-tags__selected-tag',\n selectedTagName: 'react-tags__selected-tag-name',\n search: 'react-tags__search',\n searchInput: 'react-tags__search-input',\n suggestions: 'react-tags__suggestions',\n suggestionActive: 'is-active',\n suggestionDisabled: 'is-disabled'\n}\n\nvar ReactTags = (function (superclass) {\n function ReactTags (props) {\n superclass.call(this, props)\n\n this.state = {\n query: '',\n focused: false,\n expandable: false,\n selectedIndex: -1,\n classNames: Object.assign({}, CLASS_NAMES, this.props.classNames)\n }\n\n this.inputEventHandlers = {\n // Provide a no-op function to the input component to avoid warnings\n // <https://github.com/i-like-robots/react-tags/issues/135>\n // <https://github.com/facebook/react/issues/13835>\n onChange: function () {},\n onBlur: this.handleBlur.bind(this),\n onFocus: this.handleFocus.bind(this),\n onInput: this.handleInput.bind(this),\n onKeyDown: this.handleKeyDown.bind(this)\n }\n }\n\n if ( superclass ) ReactTags.__proto__ = superclass;\n ReactTags.prototype = Object.create( superclass && superclass.prototype );\n ReactTags.prototype.constructor = ReactTags;\n\n ReactTags.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n classNames: Object.assign({}, CLASS_NAMES, newProps.classNames)\n })\n };\n\n ReactTags.prototype.handleInput = function handleInput (e) {\n var query = e.target.value\n\n if (this.props.handleInputChange) {\n this.props.handleInputChange(query)\n }\n\n this.setState({ query: query })\n };\n\n ReactTags.prototype.handleKeyDown = function handleKeyDown (e) {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n var ref$1 = this.props;\n var delimiters = ref$1.delimiters;\n var delimiterChars = ref$1.delimiterChars;\n\n // when one of the terminating keys is pressed, add current query to the tags.\n if (delimiters.indexOf(e.keyCode) > -1 || delimiterChars.indexOf(e.key) > -1) {\n if (query || selectedIndex > -1) {\n e.preventDefault()\n }\n\n this.handleDelimiter()\n }\n\n // when backspace key is pressed and query is blank, delete the last tag\n if (e.keyCode === KEYS.BACKSPACE && query.length === 0 && this.props.allowBackspace) {\n this.deleteTag(this.props.tags.length - 1)\n }\n\n if (e.keyCode === KEYS.UP_ARROW) {\n e.preventDefault()\n\n // if last item, cycle to the bottom\n if (selectedIndex <= 0) {\n this.setState({ selectedIndex: this.suggestions.state.options.length - 1 })\n } else {\n this.setState({ selectedIndex: selectedIndex - 1 })\n }\n }\n\n if (e.keyCode === KEYS.DOWN_ARROW) {\n e.preventDefault()\n\n this.setState({ selectedIndex: (selectedIndex + 1) % this.suggestions.state.options.length })\n }\n };\n\n ReactTags.prototype.handleDelimiter = function handleDelimiter () {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n\n if (query.length >= this.props.minQueryLength) {\n // Check if the user typed in an existing suggestion.\n var match = this.suggestions.state.options.findIndex(function (suggestion) {\n return suggestion.name.search(new RegExp((\"^\" + query + \"$\"), 'i')) === 0\n })\n\n var index = selectedIndex === -1 ? match : selectedIndex\n\n if (index > -1) {\n this.addTag(this.suggestions.state.options[index])\n } else if (this.props.allowNew) {\n this.addTag({ name: query })\n }\n }\n };\n\n ReactTags.prototype.handleClick = function handleClick (e) {\n if (document.activeElement !== e.target) {\n this.input.input.focus()\n }\n };\n\n ReactTags.prototype.handleBlur = function handleBlur () {\n this.setState({ focused: false, selectedIndex: -1 })\n\n if (this.props.handleBlur) {\n this.props.handleBlur()\n }\n\n if (this.props.addOnBlur) {\n this.handleDelimiter()\n }\n };\n\n ReactTags.prototype.handleFocus = function handleFocus () {\n this.setState({ focused: true })\n\n if (this.props.handleFocus) {\n this.props.handleFocus()\n }\n };\n\n ReactTags.prototype.addTag = function addTag (tag) {\n if (tag.disabled) {\n return\n }\n\n if (typeof this.props.handleValidate === 'function' && !this.props.handleValidate(tag)) {\n return\n }\n\n this.props.handleAddition(tag)\n\n // reset the state\n this.setState({\n query: '',\n selectedIndex: -1\n })\n };\n\n ReactTags.prototype.deleteTag = function deleteTag (i) {\n this.props.handleDelete(i)\n\n if (this.props.clearInputOnDelete && this.state.query !== '') {\n this.setState({ query: '' })\n }\n };\n\n ReactTags.prototype.render = function render () {\n var this$1 = this;\n\n var listboxId = 'ReactTags-listbox'\n\n var TagComponent = this.props.tagComponent || Tag\n\n var tags = this.props.tags.map(function (tag, i) { return (\n React.createElement( TagComponent, {\n key: i, tag: tag, classNames: this$1.state.classNames, onDelete: this$1.deleteTag.bind(this$1, i) })\n ); })\n\n var expandable = this.state.focused && this.state.query.length >= this.props.minQueryLength\n var classNames = [this.state.classNames.root]\n\n this.state.focused && classNames.push(this.state.classNames.rootFocused)\n\n return (\n React.createElement( 'div', { className: classNames.join(' '), onClick: this.handleClick.bind(this) },\n React.createElement( 'div', { className: this.state.classNames.selected, 'aria-live': 'polite', 'aria-relevant': 'additions removals' },\n tags\n ),\n React.createElement( 'div', { className: this.state.classNames.search },\n React.createElement( Input, Object.assign({}, this.state, { inputAttributes: this.props.inputAttributes, inputEventHandlers: this.inputEventHandlers, ref: function (c) { this$1.input = c }, listboxId: listboxId, autofocus: this.props.autofocus, autoresize: this.props.autoresize, expandable: expandable, placeholder: this.props.placeholder })),\n React.createElement( Suggestions, Object.assign({}, this.state, { ref: function (c) { this$1.suggestions = c }, listboxId: listboxId, expandable: expandable, suggestions: this.props.suggestions, suggestionsFilter: this.props.suggestionsFilter, addTag: this.addTag.bind(this), maxSuggestionsLength: this.props.maxSuggestionsLength }))\n )\n )\n )\n };\n\n return ReactTags;\n}(React.Component));\n\nReactTags.defaultProps = {\n tags: [],\n placeholder: 'Add new tag',\n suggestions: [],\n suggestionsFilter: null,\n autofocus: true,\n autoresize: true,\n delimiters: [KEYS.TAB, KEYS.ENTER],\n delimiterChars: [],\n minQueryLength: 2,\n maxSuggestionsLength: 6,\n allowNew: false,\n allowBackspace: true,\n tagComponent: null,\n inputAttributes: {},\n addOnBlur: false,\n clearInputOnDelete: true\n}\n\nReactTags.propTypes = {\n tags: PropTypes.arrayOf(PropTypes.object),\n placeholder: PropTypes.string,\n suggestions: PropTypes.arrayOf(PropTypes.object),\n suggestionsFilter: PropTypes.func,\n autofocus: PropTypes.bool,\n autoresize: PropTypes.bool,\n delimiters: PropTypes.arrayOf(PropTypes.number),\n delimiterChars: PropTypes.arrayOf(PropTypes.string),\n handleDelete: PropTypes.func.isRequired,\n handleAddition: PropTypes.func.isRequired,\n handleInputChange: PropTypes.func,\n handleFocus: PropTypes.func,\n handleBlur: PropTypes.func,\n handleValidate: PropTypes.func,\n minQueryLength: PropTypes.number,\n maxSuggestionsLength: PropTypes.number,\n classNames: PropTypes.object,\n allowNew: PropTypes.bool,\n allowBackspace: PropTypes.bool,\n tagComponent: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element\n ]),\n inputAttributes: PropTypes.object,\n addOnBlur: PropTypes.bool,\n clearInputOnDelete: PropTypes.bool\n}\n\nmodule.exports = ReactTags\n","'use strict'\n\nvar React = require('react')\n\nmodule.exports = function (props) { return (\n React.createElement( 'button', { type: 'button', className: props.classNames.selectedTag, title: 'Click to remove tag', onClick: props.onDelete },\n React.createElement( 'span', { className: props.classNames.selectedTagName }, props.tag.name)\n )\n); }\n","'use strict'\n\nvar React = require('react')\n\nvar SIZER_STYLES = {\n position: 'absolute',\n width: 0,\n height: 0,\n visibility: 'hidden',\n overflow: 'scroll',\n whiteSpace: 'pre'\n}\n\nvar STYLE_PROPS = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing'\n]\n\nvar Input = (function (superclass) {\n function Input (props) {\n superclass.call(this, props)\n this.state = { inputWidth: null }\n }\n\n if ( superclass ) Input.__proto__ = superclass;\n Input.prototype = Object.create( superclass && superclass.prototype );\n Input.prototype.constructor = Input;\n\n Input.prototype.componentDidMount = function componentDidMount () {\n if (this.props.autoresize) {\n this.copyInputStyles()\n this.updateInputWidth()\n }\n\n if (this.props.autofocus) {\n this.input.focus()\n }\n };\n\n Input.prototype.componentDidUpdate = function componentDidUpdate () {\n this.updateInputWidth()\n };\n\n Input.prototype.copyInputStyles = function copyInputStyles () {\n var this$1 = this;\n\n var inputStyle = window.getComputedStyle(this.input)\n\n STYLE_PROPS.forEach(function (prop) {\n this$1.sizer.style[prop] = inputStyle[prop]\n })\n };\n\n Input.prototype.updateInputWidth = function updateInputWidth () {\n var inputWidth\n\n if (this.props.autoresize) {\n // scrollWidth is designed to be fast not accurate.\n // +2 is completely arbitrary but does the job.\n inputWidth = Math.ceil(this.sizer.scrollWidth) + 2\n }\n\n if (inputWidth !== this.state.inputWidth) {\n this.setState({ inputWidth: inputWidth })\n }\n };\n\n Input.prototype.render = function render () {\n var this$1 = this;\n\n var ref = this.props;\n var inputAttributes = ref.inputAttributes;\n var inputEventHandlers = ref.inputEventHandlers;\n var query = ref.query;\n var placeholder = ref.placeholder;\n var expandable = ref.expandable;\n var listboxId = ref.listboxId;\n var selectedIndex = ref.selectedIndex;\n\n return (\n React.createElement( 'div', { className: this.props.classNames.searchInput },\n React.createElement( 'input', Object.assign({},\n inputAttributes, inputEventHandlers, { ref: function (c) { this$1.input = c }, value: query, placeholder: placeholder, role: 'combobox', 'aria-autocomplete': 'list', 'aria-label': placeholder, 'aria-owns': listboxId, 'aria-activedescendant': selectedIndex > -1 ? (listboxId + \"-\" + selectedIndex) : null, 'aria-expanded': expandable, style: { width: this.state.inputWidth } })),\n React.createElement( 'div', { ref: function (c) { this$1.sizer = c }, style: SIZER_STYLES }, query || placeholder)\n )\n )\n };\n\n return Input;\n}(React.Component));\n\nmodule.exports = Input\n","'use strict'\n\nvar React = require('react')\n\nfunction escapeForRegExp (query) {\n return query.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nfunction markIt (input, query) {\n if (query) {\n var regex = RegExp(escapeForRegExp(query), 'gi')\n input = input.replace(regex, '<mark>$&</mark>')\n }\n\n return {\n __html: input\n }\n}\n\nfunction filterSuggestions (query, suggestions, length, suggestionsFilter) {\n if (!suggestionsFilter) {\n var regex = new RegExp((\"(?:^|\\\\s)\" + (escapeForRegExp(query))), 'i')\n suggestionsFilter = function (item) { return regex.test(item.name); }\n }\n\n return suggestions.filter(function (item) { return suggestionsFilter(item, query); }).slice(0, length)\n}\n\nvar Suggestions = (function (superclass) {\n function Suggestions (props) {\n superclass.call(this, props)\n\n this.state = {\n options: filterSuggestions(this.props.query, this.props.suggestions, this.props.maxSuggestionsLength, this.props.suggestionsFilter)\n }\n }\n\n if ( superclass ) Suggestions.__proto__ = superclass;\n Suggestions.prototype = Object.create( superclass && superclass.prototype );\n Suggestions.prototype.constructor = Suggestions;\n\n Suggestions.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n options: filterSuggestions(newProps.query, newProps.suggestions, newProps.maxSuggestionsLength, newProps.suggestionsFilter)\n })\n };\n\n Suggestions.prototype.handleMouseDown = function handleMouseDown (item, e) {\n // focus is shifted on mouse down but calling preventDefault prevents this\n e.preventDefault()\n this.props.addTag(item)\n };\n\n Suggestions.prototype.render = function render () {\n var this$1 = this;\n\n if (!this.props.expandable || !this.state.options.length) {\n return null\n }\n\n var options = this.state.options.map(function (item, i) {\n var key = (this$1.props.listboxId) + \"-\" + i\n var classNames = []\n\n if (this$1.props.selectedIndex === i) {\n classNames.push(this$1.props.classNames.suggestionActive)\n }\n\n if (item.disabled) {\n classNames.push(this$1.props.classNames.suggestionDisabled)\n }\n\n return (\n React.createElement( 'li', {\n id: key, key: key, role: 'option', className: classNames.join(' '), 'aria-disabled': item.disabled === true, onMouseDown: this$1.handleMouseDown.bind(this$1, item) },\n React.createElement( 'span', { dangerouslySetInnerHTML: markIt(item.name, this$1.props.query) })\n )\n )\n })\n\n return (\n React.createElement( 'div', { className: this.props.classNames.suggestions },\n React.createElement( 'ul', { role: 'listbox', id: this.props.listboxId }, options)\n )\n )\n };\n\n return Suggestions;\n}(React.Component));\n\nmodule.exports = Suggestions\n","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar createCellEl = function () {\n var el = document.createElement('div');\n el.style.height = '100%';\n return el;\n};\n// example: { title: 'Pets', field: 'pets', formatter: MultiValueFormatter, formatterParams: { style: 'PILL' } }\n// default style: comma separated plain text\n// other styles: PILL\nfunction default_1(cell, formatterParams, onRendered) {\n var style = formatterParams.style || ''; // comma separated plain text\n var arr = cell.getValue() || [];\n var content = arr && arr.length > 0 && typeof arr[0] === 'string' ? React.createElement(\"span\", null, arr.join(', ')) : React.createElement(\"span\", null);\n if (style === 'PILL') {\n // TODO: use React.Fragment here to remove unnecessary div. (but will break React 15 example in Codesandbox)\n content = (React.createElement(\"div\", null, arr.map(function (item) {\n return typeof item === 'string' ? React.createElement(\"span\", { key: item }, item) : React.createElement(\"span\", { key: item.name }, item.name);\n })));\n }\n var el = createCellEl();\n el.className = 'multi-value-formatter-content';\n el.title = arr && arr.length > 0 && typeof arr[0] === 'string' ? arr.join(', ') : '';\n react_dom_1.render(content, el);\n return el;\n}\nexports[\"default\"] = default_1;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(require(\"../query/contains\"));\n\nvar _querySelectorAll = _interopRequireDefault(require(\"../query/querySelectorAll\"));\n\nfunction filterEvents(selector, handler) {\n return function filterHandler(e) {\n var top = e.currentTarget,\n target = e.target,\n matches = (0, _querySelectorAll.default)(top, selector);\n if (matches.some(function (match) {\n return (0, _contains.default)(match, target);\n })) handler.call(this, e);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = require('react-is');\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, _reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(require(\"./addClass\"));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(require(\"./removeClass\"));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(require(\"dom-helpers/query/isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument.default)(node);\n var win = (0, _isWindow.default)(doc);\n return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow.default)(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n exclude = [].concat(exclude);\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) return;\n\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, _ref2) {\n var root = _ref2.root,\n backdrop = _ref2.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, _ref3) {\n var root = _ref3.root,\n backdrop = _ref3.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _WaitForContainer = _interopRequireDefault(require(\"./WaitForContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n container: this.props.container,\n onContainerResolved: this.props.onRendered\n }, function (container) {\n return _reactDom.default.createPortal(_this.props.children, container);\n }) : null;\n };\n\n return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(WaitForContainer, _React$Component);\n\n function WaitForContainer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n if (!_inDOM.default) return _assertThisInitialized(_this);\n var container = _this.props.container;\n if (typeof container === 'function') container = container();\n\n if (container && !_reactDom.default.findDOMNode(container)) {\n // The container is a React component that has not yet been rendered.\n // Don't set the container node yet.\n return _assertThisInitialized(_this);\n }\n\n _this.setContainer(container);\n\n return _this;\n }\n\n var _proto = WaitForContainer.prototype;\n\n _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps.container);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!this._container) {\n this.setContainer(this.props.container);\n this.forceUpdate(this.props.onContainerResolved);\n } else if (this.props.onContainerResolved) {\n this.props.onContainerResolved();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._container = null;\n };\n\n _proto.setContainer = function setContainer(container) {\n this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n };\n\n _proto.render = function render() {\n return this._container ? this.props.children(this._container) : null;\n };\n\n return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(componentOrElement) {\n return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","export default function toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber)\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimeter)\n var timeString\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0]\n timeString = dateString.substr(dateStrings.date.length, dateString.length)\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n var hours\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n\n if (!validateTimezone(hours)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n var minutes = parseInt(token[3], 10)\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime()\n var amount = toInteger(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","export default function cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {}\n var object = {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property]\n }\n }\n\n return object\n}\n","import startOfWeek from '../startOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekOptions = cloneObject(dirtyOptions)\n startOfWeekOptions.weekStartsOn = 1\n return startOfWeek(dirtyDate, startOfWeekOptions)\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfDay from '../startOfDay/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft, dirtyOptions)\n var startOfDayRight = startOfDay(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfDayLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayLeft)\n var timestampRight = startOfDayRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear (dirtyDate, dirtyISOWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeekYear = toInteger(dirtyISOWeekYear)\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date, dirtyOptions), dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOWeekYear(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getISOWeekYear from '../getISOWeekYear/index.js'\nimport setISOWeekYear from '../setISOWeekYear/index.js'\n\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate, dirtyOptions) + amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, amount * 12, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval?\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link docs/types/Options}\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> false\n */\nexport default function areIntervalsOverlapping (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return NaN\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = NaN\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN)\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff > 0) {\n return -1\n } else if (diff < 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\n\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n return getISOWeekYear(dirtyDateLeft, dirtyOptions) - getISOWeekYear(dirtyDateRight, dirtyOptions)\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft, dirtyOptions)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfISOWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)\n var timestampRight = startOfISOWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n","import getQuarter from '../getQuarter/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft, dirtyOptions) - getQuarter(dateRight, dirtyOptions)\n\n return yearDiff * 4 + quarterDiff\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekLeft)\n var timestampRight = startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n*/\nexport default function differenceInDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight, dirtyOptions))\n\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastDayNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getTime() - dateRight.getTime()\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addISOWeekYears from '../addISOWeekYears/index.js'\n\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addISOWeekYears(dirtyDate, -amount, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport subISOWeekYears from '../subISOWeekYears/index.js'\n\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight, dirtyOptions))\n dateLeft = subISOWeekYears(dateLeft, sign * difference, dirtyOptions)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastISOWeekYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nexport default function differenceInMinutes (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nexport default function differenceInMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight, dirtyOptions))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastMonthNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMonths from '../differenceInMonths/index.js'\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInDays from '../differenceInDays/index.js'\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nexport default function differenceInWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nexport default function differenceInYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight, dirtyOptions))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate, dirtyOptions))\n currentDate.setDate(currentDate.getDate() + 1)\n }\n\n return dates\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week between 6 October 2014 and 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [ 2014-10-05T00:00:00.000Z,\n * // 2014-10-12T00:00:00.000Z,\n * // 2014-10-19T00:00:00.000Z,\n * // 2014-10-26T00:00:00.000Z,\n * // 2014-11-02T00:00:00.000Z,\n * // 2014-11-09T00:00:00.000Z,\n * // 2014-11-16T00:00:00.000Z,\n * // 2014-11-23T00:00:00.000Z\n * // ]\n */\nexport default function eachWeekOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var startDateWeek = startOfWeek(startDate, dirtyOptions)\n var endDateWeek = startOfWeek(endDate, dirtyOptions)\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15)\n endDateWeek.setHours(15)\n\n endTime = endDateWeek.getTime()\n\n var weeks = []\n\n var currentWeek = startDateWeek\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0)\n weeks.push(toDate(currentWeek, dirtyOptions))\n currentWeek = addWeeks(currentWeek, 1)\n currentWeek.setHours(15)\n }\n\n return weeks\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 0\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\nimport eachDayOfInterval from '../eachDayOfInterval/index.js'\nimport isSunday from '../isSunday/index.js'\nimport isWeekend from '../isWeekend/index.js'\n\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2022, 8, 17),\n * end: new Date(2022, 8, 30)\n * })\n * //=> [\n * 2022-09-17T22:00:00.000Z,\n * 2022-09-23T22:00:00.000Z,\n * 2022-09-24T22:00:00.000Z\n * ]\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2016, 2, 25),\n * end: new Date(2016, 2, 5)\n * })\n * //=> RangeError: Invalid interval\n */\nexport default function eachWeekendOfInterval(dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dateInterval = eachDayOfInterval(interval)\n var weekends = []\n var index = 0\n while (index++ < dateInterval.length) {\n var date = dateInterval[index]\n if (isWeekend(date)) {\n weekends.push(new Date(date))\n if (isSunday(date)) {\n index = index + 5\n }\n }\n }\n return weekends\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|String|Number} date - the given month\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2020, 1, 1))\n * //=> [\n * 2020-02-01T23:00:00.000Z,\n * 2020-02-07T23:00:00.000Z,\n * 2020-02-08T23:00:00.000Z,\n * ...\n * 2020-02-28T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfMonth(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfMonth(dirtyDate, dirtyOptions)\n var endDate = endOfMonth(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var cleanDate = toDate(dirtyDate, dirtyOptions)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport endOfYear from '../endOfYear/index.js'\n\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|String|Number} date - the given year\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * 2020-01-03T23:00:00.000Z,\n * 2020-01-04T23:00:00.000Z,\n * 2020-01-10T23:00:00.000Z,\n * ...\n * 2020-12-26T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfYear(dirtyDate, dirtyOptions)\n var endDate = endOfYear(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade, 11, 31)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(59, 59, 999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import endOfWeek from '../endOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var endOfWeekOptions = cloneObject(dirtyOptions)\n endOfWeekOptions.weekStartsOn = 1\n return endOfWeek(dirtyDate, endOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return !isNaN(date)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token]\n } else if (count === 1) {\n result = formatDistanceLocale[token].one\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n","export default function buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var format = args.formats[width] || args.formats[args.defaultWidth]\n return format\n }\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n}\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n}\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n}\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n}\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","export default function buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var context = options.context ? String(options.context) : 'standalone'\n\n var valuesArray\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth]\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth]\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex\n return valuesArray[index]\n }\n}\n","export default function buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n var width = options.width\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]\n var matchResult = string.match(matchPattern)\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]\n\n var value\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n })\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n })\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js'\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i\nvar parseOrdinalNumberPattern = /\\d+/i\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n}\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n}\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n}\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n}\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n}\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n}\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n}\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n}\n\nexport default match\n","export default function buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n\n var matchResult = string.match(args.matchPattern)\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parseResult = string.match(args.parsePattern)\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n}\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n}\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n}\n\nexport default localize\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n date.setUTCMonth(0, 1)\n date.setUTCHours(0, 0, 0, 0)\n var startOfYearTimestamp = date.getTime()\n var difference = timestamp - startOfYearTimestamp\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n","import toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../toInteger/index.js'\nimport getUTCWeekYear from '../getUTCWeekYear/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCWeek(firstWeek, dirtyOptions)\n return date\n}\n","import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js'\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear()\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options)\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear()\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options)\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options)\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate()\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options)\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (hours === 0) {\n hours = 12\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (hours === 0) {\n hours = 24\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes()\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds()\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length\n var milliseconds = date.getUTCMilliseconds()\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3))\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = Math.floor(originalDate.getTime() / 1000)\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = originalDate.getTime()\n return addLeadingZeros(timestamp, token.length)\n }\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(absOffset % 60, 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || ''\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","function dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/)\n var datePattern = matchResult[1]\n var timePattern = matchResult[2]\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong, options)\n }\n\n var dateTimeFormat\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'})\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'})\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'})\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'})\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong, options))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong, options))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n}\n\nexport default longFormatters\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n","export var protectedTokens = ['D', 'DD', 'YY', 'YYYY']\n\nexport function isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nexport function throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from './_lib/formatters/index.js'\nimport longFormatters from './_lib/longFormatters/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options)\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options)\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n }\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0]\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter]\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring)\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport differenceInMonths from '../differenceInMonths/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistance (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, options)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = Math.round((seconds - offsetInSeconds) / 60)\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return locale.formatDistance('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft, options)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'minute'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'month', roundingMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceStrict (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod)\n var roundingMethodFn\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\")\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, dirtyOptions)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60)\n\n var unit\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second'\n } else if (minutes < 60) {\n unit = 'minute'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month'\n } else {\n unit = 'year'\n }\n } else {\n unit = String(options.unit)\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60)\n return locale.formatDistance('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR)\n return locale.formatDistance('xYears', years, localizeOptions)\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport format from '../format/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @param {Date|String|Number} date - the date to format\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\nexport default function formatRelative (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var baseDate = toDate(dirtyBaseDate, dirtyOptions)\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property')\n }\n\n var diff = differenceInCalendarDays(date, baseDate, options)\n\n if (isNaN(diff)) {\n return 'Invalid Date'\n }\n\n var token\n if (diff < -6) {\n token = 'other'\n } else if (diff < -1) {\n token = 'lastWeek'\n } else if (diff < 0) {\n token = 'yesterday'\n } else if (diff < 1) {\n token = 'today'\n } else if (diff < 2) {\n token = 'tomorrow'\n } else if (diff < 7) {\n token = 'nextWeek'\n } else {\n token = 'other'\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date), options)\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate), options)\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options)\n return format(date, formatStr, options)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var unixTime = toInteger(dirtyUnixTime)\n\n return toDate(unixTime * 1000, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = differenceInCalendarDays(date, startOfYear(date, dirtyOptions), dirtyOptions)\n var dayOfYear = diff + 1\n return dayOfYear\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n","import toDate from '../toDate/index.js'\nimport isLeapYear from '../isLeapYear/index.js'\n\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(date)) {\n return NaN\n }\n\n return isLeapYear(date, dirtyOptions) ? 366 : 365\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n return decade\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = date.getHours()\n return hours\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfISOWeek(date, dirtyOptions).getTime() - startOfISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var thisYear = startOfISOWeekYear(dirtyDate, dirtyOptions)\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60, dirtyOptions), dirtyOptions)\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = date.getMinutes()\n return minutes\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n return month\n}\n","import toDate from '../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> 0\n */\nexport default function getOverlappingDaysInIntervals (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate = rightStartTime < leftStartTime\n ? leftStartTime\n : rightStartTime\n\n var overlapEndDate = rightEndTime > leftEndTime\n ? leftEndTime\n : rightEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds()\n return seconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n return timestamp\n}\n","import getTime from '../getTime/index.js'\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return Math.floor(getTime(dirtyDate, dirtyOptions) / 1000)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), {weekStartsOn: 6})\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), {firstWeekContainsDate: 4})\n * //=> 2004\n */\nexport default function getWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getWeekYear from '../getWeekYear/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n var date = startOfWeek(firstWeek, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> 53\n */\n\nexport default function getWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfWeek(date, dirtyOptions).getTime() - startOfWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getDate from '../getDate/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport getDay from '../getDay/index.js'\n\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var startWeekDay = getDay(startOfMonth(dirtyDate, dirtyOptions), dirtyOptions)\n var currentWeekDay = getDay(dirtyDate, dirtyOptions)\n\n var startWeekDayWithOptions = startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay\n var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0\n\n return Math.ceil((getDate(dirtyDate, dirtyOptions) + diff) / 7)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js'\nimport lastDayOfMonth from '../lastDayOfMonth/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(\n * new Date(2015, 1, 8)\n * )\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(\n * new Date(2017, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 6\n */\nexport default function getWeeksInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return differenceInCalendarWeeks(\n lastDayOfMonth(dirtyDate, dirtyOptions),\n startOfMonth(dirtyDate, dirtyOptions),\n dirtyOptions\n ) + 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() > dateToCompare.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() < dateToCompare.getTime()\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @param {Options} [options] - the object with options. Unused; present for FP submodule compatibility sake. See [Options]{@link https://date-fns.org/docs/Options}\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate (value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions)\n var dateRight = toDate(dirtyRightDate, dirtyOptions)\n return dateLeft.getTime() === dateRight.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDate() === 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 5\n}\n","import toDate from '../toDate/index.js'\nimport endOfDay from '../endOfDay/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return endOfDay(date, dirtyOptions).getTime() === endOfMonth(date, dirtyOptions).getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 1\n}\n","import startOfDay from '../startOfDay/index.js'\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nexport default function isSameDay (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfDay = startOfDay(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(0, 0, 0)\n return date\n}\n","import startOfHour from '../startOfHour/index.js'\n\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nexport default function isSameHour (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfHour = startOfHour(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nexport default function isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n","import isSameWeek from '../isSameWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nexport default function isSameISOWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var isSameWeekOptions = cloneObject(dirtyOptions)\n isSameWeekOptions.weekStartsOn = 1\n return isSameWeek(dirtyDateLeft, dirtyDateRight, isSameWeekOptions)\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nexport default function isSameISOWeekYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(0, 0)\n return date\n}\n","import startOfMinute from '../startOfMinute/index.js'\n\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nexport default function isSameMinute (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameMonth (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import startOfQuarter from '../startOfQuarter/index.js'\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nexport default function isSameQuarter (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(0)\n return date\n}\n","import startOfSecond from '../startOfSecond/index.js'\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nexport default function isSameSecond (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 4\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 2\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 3\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(\n * new Date(2014, 0, 10),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> false\n */\nexport default function isWithinInterval (dirtyDate, dirtyInterval, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var time = toDate(dirtyDate, dirtyOptions).getTime()\n var startTime = toDate(interval.start, dirtyOptions).getTime()\n var endTime = toDate(interval.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import lastDayOfWeek from '../lastDayOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var lastDayOfWeekOptions = cloneObject(dirtyOptions)\n lastDayOfWeekOptions.weekStartsOn = 1\n return lastDayOfWeek(dirtyDate, lastDayOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js'\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_SECOND = 1000\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n}\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n}\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10)\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear\n\n var result\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100\n } else {\n var rangeEnd = absCurrentYear + 50\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\n// User for validation\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n }\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options)\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n }\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear()\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0)\n firstWeekOfYear.setUTCFullYear(value, 0, 4)\n firstWeekOfYear.setUTCHours(0, 0, 0, 0)\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n var month = date.getUTCMonth()\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n }\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0)\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value\n date.setUTCHours(hours, 0, 0, 0)\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0)\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0)\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n }\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value)\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n}\n\nexport default parsers\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCWeek from '../getUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getUTCWeek(date, dirtyOptions) - week\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate, dirtyOptions)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 20\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\nvar notWhitespaceRegExp = /\\S/\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString)\n var formatString = String(dirtyFormatString)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ]\n\n var i\n\n var tokens = formatString.match(formattingTokensRegExp)\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token)\n }\n\n var firstCharacter = token[0]\n var parser = parsers[firstCharacter]\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n )\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n })\n\n dateString = parseResult.rest\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\"\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token)\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate, options)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i]\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions)\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0)\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n )\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n )\n return convertedDate\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute\n *\n * @param {Date|String|Number} date - the date to round\n * @param {Number} [nearestTo=1] - the closest minute to round to, must be between 1 and 30 inclusive\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n */\nexport default function roundToNearestMinutes (dirtyDate, dirtyNearestTo, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present')\n }\n\n var nearestTo = arguments.length === 1 ? 1 : toInteger(dirtyNearestTo)\n\n if (arguments.length === 2 && typeof dirtyNearestTo !== 'number' && typeof dirtyNearestTo !== 'string') {\n dirtyOptions = dirtyNearestTo\n nearestTo = 1\n }\n\n if (!nearestTo || nearestTo > 30 || nearestTo < 1) {\n throw new RangeError('nearestTo must be between 1 and 30')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo\n var remainderMinutes = minutes % nearestTo\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate (dirtyDate, dirtyDayOfMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = toInteger(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the new date with the day of the week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = toInteger(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff, options)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear (dirtyDate, dirtyDayOfYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfYear = toInteger(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours (dirtyDate, dirtyHours, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = toInteger(dirtyHours)\n date.setHours(hours)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\nimport getISODay from '../getISODay/index.js'\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n var currentDay = getISODay(date, dirtyOptions)\n var diff = day - currentDay\n return addDays(date, diff, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getISOWeek from '../getISOWeek/index.js'\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getISOWeek(date, dirtyOptions) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds (dirtyDate, dirtyMilliseconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = toInteger(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes (dirtyDate, dirtyMinutes, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = toInteger(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth (dirtyDate, dirtyMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = toInteger(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport setMonth from '../setMonth/index.js'\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarter setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter (dirtyDate, dirtyQuarter, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = toInteger(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds (dirtyDate, dirtySeconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = toInteger(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getWeek from '../getWeek/index.js'\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getWeek(date, dirtyOptions) - week\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear (dirtyDate, dirtyWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var date = toDate(dirtyDate, dirtyOptions)\n var weekYear = toInteger(dirtyWeekYear)\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions), dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n date = startOfWeekYear(firstWeek, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear (dirtyDate, dirtyYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = toInteger(dirtyYear)\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n date.setFullYear(decade, 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addDays(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addHours from '../addHours/index.js'\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addHours(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMinutes(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addQuarters from '../addQuarters/index.js'\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addQuarters(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addSeconds from '../addSeconds/index.js'\n\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addSeconds(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addWeeks(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addYears from '../addYears/index.js'\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addYears(dirtyDate, -amount, dirtyOptions)\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A <Router> may have only one child element\");\n\n // Do this here so we can setState when a <Redirect> changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a <StaticRouter>.\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change <Router history>\");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use <Switch> outside a <Router>\");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from <Switch>\n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","\r\n\r\n//Обертка для лога в приложении\r\nexport default function Log(sender, message) {\r\n if (sender === null || sender === undefined)\r\n throw \"LogTools: sender not set\";\r\n\r\n console.log(sender + \": \" + message);\r\n}","\r\n\r\n//Общие конфигурации\r\nexport default class Configuration {\r\n static RooDirectoryID = -1;\r\n static upload_chunk_size = 102400;\r\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","\r\nimport Log from './LogTools'\r\n\r\n\r\n//Обертка для запросов к базе\r\n//URL - \r\n//Methid : Get Post\r\n//data: данные\r\nexport default function ApiQuery(url, method, data){\r\n Log(\"ApiQuery\", \"query to \" + url);\r\n //let json = JSON.stringify(data);\r\n //debugger;\r\n return fetch(\r\n url,\r\n {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n credentials: 'include',\r\n body: JSON.stringify(data)\r\n }\r\n ).then(function(response){\r\n return response.json();\r\n });\r\n}","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class AuthServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Auth = \"api/Auth/Auth\";\r\n this.URL_UserInfo = \"api/Auth/UserInfo\"\r\n\r\n this.AuthCoockieName = \"AuthToken\";\r\n }\r\n\r\n async AuthAsync(login, password) {\r\n\r\n return await ApiQuery(this.URL_Auth, \"Post\",\r\n {\r\n Login: login,\r\n Password: password\r\n }).then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n Logout() {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n\r\n async GetUserInfoAsync() {\r\n return await ApiQuery(this.URL_UserInfo, \"Post\")\r\n .then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n\r\n //Возвращает true если пользователь авторизован\r\n IsAuth() {\r\n let token = this._GetTocken();\r\n return token != \"\";\r\n }\r\n\r\n\r\n _getCookie(name) {\r\n let matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : \"\";\r\n }\r\n\r\n //Токен авторизации\r\n _GetTocken() {\r\n return this._getCookie(this.AuthCoockieName);\r\n }\r\n //задать токен\r\n _SetTocken(val) {\r\n document.cookie = this.AuthCoockieName + \"=\" + val;\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class MenuControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"MenuControl\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Menu:</td>\r\n <td>\r\n <Link to={`/`}>\r\n <button>FS</button>\r\n </Link>\r\n </td>\r\n\r\n {this.authServices.IsAuth()\r\n ?\r\n <td>\r\n <Link to={`/Admin`}>\r\n <button>Admin</button>\r\n </Link>\r\n </td>\r\n : <td></td>\r\n }\r\n </tr>\r\n </thead> \r\n </table>\r\n\r\n </div >\r\n );\r\n }\r\n}\r\n\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport forwardRef from '@restart/context/forwardRef';\nimport React, { useContext } from 'react';\nvar ThemeContext = React.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nvar ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.prefixes = new Map();\n Object.keys(_this.props.prefixes).forEach(function (key) {\n _this.prefixes.set(key, _this.props.prefixes[key]);\n });\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n _proto.render = function render() {\n return React.createElement(Provider, {\n value: this.prefixes\n }, this.props.children);\n };\n\n return ThemeProvider;\n}(React.Component);\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n return forwardRef(function (_ref, ref) {\n var props = _extends({}, _ref);\n\n props[forwardRefAs] = ref;\n var prefixes = useContext(ThemeContext);\n return React.createElement(Component, _extends({}, props, {\n // eslint-disable-next-line react/prop-types\n bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix\n }));\n }, {\n displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n });\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport camelize from 'dom-helpers/util/camelize';\nimport { useBootstrapPrefix } from '../ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n _ref$Component = _ref.Component,\n Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = React.forwardRef( // eslint-disable-next-line react/prop-types\n function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import React from 'react';\nvar FormContext = React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return React.createElement(FormContext.Provider, {\n value: context\n }, React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string.isRequired,\n as: PropTypes.elementType\n};\nvar defaultProps = {\n type: 'valid'\n};\nvar Feedback = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n type = _ref.type,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type && type + \"-feedback\")\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nFeedback.defaultProps = defaultProps;\nexport default Feedback;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n type = _ref.type,\n size = _ref.size,\n id = _ref.id,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.Feedback = Feedback;\nexport default FormControl;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckInput = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n isStatic = _ref.isStatic,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"input\", _extends({}, props, {\n ref: ref,\n id: id || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.defaultProps = defaultProps;\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-label')\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.defaultProps = defaultProps;\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nvar defaultProps = {\n type: 'checkbox',\n inline: false,\n disabled: false,\n isValid: false,\n isInvalid: false,\n title: ''\n};\nvar FormCheck = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n disabled = _ref.disabled,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n title = _ref.title,\n type = _ref.type,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = React.createElement(FormCheckInput, _extends({}, props, {\n type: type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled\n }));\n return React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, React.createElement(\"div\", {\n style: style,\n className: classNames(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\")\n }, children || React.createElement(React.Fragment, null, input, hasLabel && React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid'\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.defaultProps = defaultProps;\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span, offset, order;\n\n if (propValue != null && typeof propValue === 'object') {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return React.createElement(Col, _extends({\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(\"label\", _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './utils/createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport FormCheck from './FormCheck';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nvar defaultProps = {\n inline: false\n};\nvar Form = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nForm.displayName = 'Form';\nForm.defaultProps = defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = FormGroup;\nForm.Control = FormControl;\nForm.Check = FormCheck;\nForm.Label = FormLabel;\nForm.Text = FormText;\nexport default Form;","\r\nimport toastr from 'toastr'\r\n\r\n\r\nexport default class Notification {\r\n\r\n static Sho(text, title) {\r\n\r\n //debugger;\r\n\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": 3000,\r\n \"progressBar\": true,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n\r\n static MesOk(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n static MesOk_NoHide(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n\r\n static MesEr(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.error(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Form } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Notification from '../../Tools/Notification'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class UserControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UserControl\", \"start\");\r\n\r\n this.state = { UserName: \"\" };//, AuthResult: \"\" };\r\n this.authServices = new AuthServices();\r\n\r\n if (this.authServices.IsAuth())\r\n this.authServices.GetUserInfoAsync().then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });// AuthResult: \"\" });\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка входа\r\n AuthClick() {\r\n let login = this.refs.Login.value;\r\n let password = this.refs.Password.value;\r\n\r\n this.authServices.AuthAsync(login, password)\r\n .then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка выхода\r\n LogoutClick() {\r\n this.authServices.Logout();\r\n this.setState({ UserName: \"\" });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n\r\n\r\n render() {\r\n let state = this.state;\r\n\r\n return (\r\n <div>\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <p>Вы авторизованы. Пользователь: {state.UserName}.</p>\r\n <button onClick={this.LogoutClick}>Logout</button>\r\n </div>\r\n :\r\n <div>\r\n <p>Вы не авторизованы {state.UserName}. Вход:</p>\r\n {/*{state.AuthResult != \"\" ? <p>{state.AuthResult}</p> : \"\"}*/}\r\n\r\n {/*<Form.Label>Email address</Form.Label>*/}\r\n <Form.Control ref=\"Login\" type=\"text\" placeholder=\"Enter login\" />\r\n <Form.Text className=\"text-muted\">\r\n We'll never share your login with anyone else.\r\n </Form.Text>\r\n <br />\r\n {/*<Form.Label>Password</Form.Label>*/}\r\n <Form.Control ref=\"Password\" type=\"password\" placeholder=\"Password\" />\r\n <br />\r\n <button onClick={this.AuthClick}>Auth</button>\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class FileExplorerServices {\r\n constructor() {\r\n\r\n this.URL_DirectoryItems = \"api/Explorer/GetDirectoryItems?ID=\";\r\n this.URL_ScanDirectory = \"api/Explorer/ScanDirectory?ID=\";\r\n\r\n this.URL_Delete = \"api/Explorer/DeleteFile\";\r\n this.URL_Move = \"api/Explorer/MoveElement\";\r\n this.URL_Download = \"api/Explorer/GetFile?ID=\";\r\n this.URL_CreateDirectory = \"api/Explorer/CreateDirectory?\";\r\n\r\n }\r\n\r\n\r\n async DirectoryGetItemsAsync(ID) {\r\n let url = this.URL_DirectoryItems + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async ScanDirectoryAsync(ID) {\r\n let url = this.URL_ScanDirectory + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async DeleteAsync(ID) {\r\n\r\n return await ApiQuery(this.URL_Delete, \"POST\",\r\n {\r\n ID: ID\r\n });\r\n\r\n }\r\n\r\n async MoveAsync(elemID, directoryID) {\r\n return await ApiQuery(this.URL_Move, \"POST\",\r\n {\r\n ID: elemID,\r\n NewParent: directoryID\r\n });\r\n }\r\n\r\n\r\n OpenDownload(ID) {\r\n let url = this.URL_Download + ID;\r\n\r\n window.open(url, '_blank');\r\n }\r\n\r\n async CreateDirectoryAsync(dirname, id) {\r\n return await ApiQuery(this.URL_CreateDirectory, \"POST\",\r\n {\r\n ParentID: id,\r\n Name: dirname\r\n });\r\n }\r\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport createChainedFunction from './utils/createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(SafeAnchor, _React$Component);\n\n function SafeAnchor(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = SafeAnchor.prototype;\n\n _proto.handleClick = function handleClick(event) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n href = _this$props.href,\n onClick = _this$props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n this.handleClick(event);\n }\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'a' : _this$props2$as,\n disabled = _this$props2.disabled,\n onKeyDown = _this$props2.onKeyDown,\n innerRef = _this$props2.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n if (innerRef) props.ref = innerRef;\n return React.createElement(Component, _extends({}, props, {\n onClick: this.handleClick,\n onKeyDown: createChainedFunction(this.handleKeyDown, onKeyDown)\n }));\n };\n\n return SafeAnchor;\n}(React.Component);\n\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false,\n type: 'button'\n};\nvar Button = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n innerRef: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n var Component = as || 'button';\n if (ref) props.ref = ref;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport autoBind from 'react-autobind';\r\nimport { Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\n\r\n\r\nexport default class FileExplorerRow extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerRow \" + this.props.ID, \"start\");\r\n\r\n this.state = { ID: this.props.ID, Data: this.props.data, ShoSelect: this.props.ShoSelect };\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.props = nextProps;\r\n\r\n if (this.refs.Select != undefined)\r\n this.refs.Select.checked = false;\r\n\r\n this.setState({\r\n ID: this.props.ID,\r\n Data: this.props.data,\r\n ShoSelect: this.props.ShoSelect\r\n });\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n GetDate() {\r\n return this.state.Data;\r\n }\r\n\r\n GetRowID() {\r\n return this.state.ID;\r\n }\r\n GetDataID() {\r\n return this.state.Data.ID;\r\n }\r\n IsCheked() {\r\n if (this.refs.Select == undefined)\r\n return false;\r\n\r\n return this.refs.Select.checked;\r\n }\r\n\r\n\r\n OnDirectoryClick() {\r\n this.props.ParentComponent.OnDirectoryClick(this.GetDataID());\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let elem = state.Data;\r\n\r\n return (\r\n <tr>\r\n <td>{elem.ID}</td>\r\n {state.ShoSelect\r\n ?\r\n <td>\r\n <input ref=\"Select\" type=\"checkbox\" />\r\n </td>\r\n : null\r\n }\r\n\r\n\r\n {(elem.Type === \"RootDirectory\" || elem.Type === \"Directory\")\r\n ?\r\n <td>\r\n <Link to={`/?ID=${elem.ID}`}>\r\n <Button id={elem.ID} onClick={this.OnDirectoryClick} variant=\"outline-dark\">\r\n {elem.Name}\r\n </Button>\r\n </Link>\r\n </td>\r\n : <td>{elem.Name}</td>\r\n }\r\n <td>{elem.Type}</td>\r\n <td>{elem.Size}</td>\r\n </tr>\r\n );\r\n\r\n }\r\n}","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Configuration from '../../../Tools/Configuration'\r\nimport ArrayCompare from '../../../Tools/Sort'\r\n\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerRow from './FileExplorerRow.jsx'\r\n\r\n\r\nexport default class FileExplorerControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerControl\", \"start\");\r\n\r\n\r\n this.state = { data: {}, ShoSelect: this.props.ShoSelect };\r\n this.ChildRows = [];\r\n this.fileExplorerServices = new FileExplorerServices();\r\n\r\n\r\n this.LoadDirectory();\r\n }\r\n\r\n //#endregion \r\n\r\n //#region Events\r\n\r\n OnBackClick(sender) {\r\n this.props.ParentComponent.SetID(this.state.data.ParentID);\r\n Log(\"FileExplorerControl\", \"OnBackClick \" + this.state.data.ParentID);\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnDirectoryClick(id) {\r\n this.props.ParentComponent.SetID(id);\r\n Log(\"FileExplorerControl\", \"MoveToDirectory \" + id);\r\n\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnSortClick(sender) {\r\n let SortProperty = sender.target.attributes[0].value;\r\n\r\n let data = this.state.data;\r\n //debugger;\r\n data.items.sort(ArrayCompare(SortProperty, 1));\r\n this.setState({ data: data });\r\n }\r\n\r\n\r\n //#endregion\r\n\r\n //Загружает информацию о текущей папке\r\n LoadDirectory() {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"LoadDirectory \" + ID);\r\n\r\n this.fileExplorerServices.DirectoryGetItemsAsync(ID)\r\n .then(function (data) {\r\n this.setState({ data: data, ShoSelect: (this.props.ShoSelect && ID != -1 ? true : false) });\r\n }.bind(this));\r\n }\r\n\r\n OnScanDirClick(sender) {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"ScanDirectory \" + ID);\r\n\r\n this.fileExplorerServices.ScanDirectoryAsync(ID).\r\n then(function (data) {\r\n this.LoadDirectory();\r\n }.bind(this));\r\n }\r\n\r\n //Получить ID данных выбранных строк\r\n GetSelectedID() {\r\n //debugger;\r\n return this.ChildRows.\r\n filter(e => e.IsCheked()).\r\n map(e => e.GetDataID());\r\n }\r\n\r\n render() {\r\n let data = this.state.data;\r\n\r\n //Если данные не пусты\r\n if (JSON.stringify(data) !== '{}') {\r\n Log(\"FileExplorerControl\", \"Data\");\r\n\r\n return (\r\n <div>\r\n {this.props.ParentComponent.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <p>\r\n <Link to={`/?ID=${data.ParentID}`}>\r\n <button onClick={this.OnBackClick}>\r\n l- На уровень вверх - {data.ParentName}\r\n </button>\r\n </Link>\r\n </p>\r\n : null\r\n }\r\n\r\n\r\n <p>{data.LogicPath}</p>\r\n <p>\r\n <button onClick={this.LoadDirectory}>\r\n Update\r\n </button>\r\n <button onClick={this.OnScanDirClick}>\r\n Rescan\r\n </button>\r\n </p>\r\n\r\n\r\n <table>\r\n\r\n <thead>\r\n <tr>\r\n <th>\r\n <button property=\"ID\" onClick={this.OnSortClick}>ID</button>\r\n </th>\r\n {\r\n this.state.ShoSelect\r\n ? <th>Select</th>\r\n : null\r\n }\r\n <th>\r\n <button property=\"Name\" onClick={this.OnSortClick}>Name</button>\r\n </th>\r\n <th>\r\n <button property=\"Type\" onClick={this.OnSortClick}>Type</button>\r\n </th>\r\n <th>\r\n <button property=\"Size\" onClick={this.OnSortClick}>Size</button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {\r\n data.items.map(function (elem, i, arr) {\r\n return [\r\n <FileExplorerRow ref={row => {\r\n if (row != null) this.ChildRows[i] = row;\r\n else this.ChildRows.splice(i, 1);\r\n }}\r\n ShoSelect={this.state.ShoSelect}\r\n key={i}\r\n ID={i}\r\n data={elem}\r\n ParentComponent={this}\r\n />\r\n ];\r\n }.bind(this))\r\n }\r\n </tbody> \r\n \r\n </table>\r\n </div>\r\n );\r\n }\r\n else {\r\n Log(\"FileExplorerControl\", \"NoData\");\r\n\r\n return (\r\n <div>\r\n <p>NoData</p>\r\n </div>\r\n );\r\n }\r\n }\r\n}","//https://habr.com/ru/post/279867/\r\n\r\n\r\n////Использование\r\n//arr.sort(ArrayCompare()); //Обычная типобезопасная сортировка по возрастанию\r\n//arr.sort(ArrayCompare(-1)); //Обычная типобезопасная сортировка по убыванию\r\n//arr.sort(ArrayCompare('field')); //Сортировка по свойству field по возрастанию\r\n//arr.sort(ArrayCompare('field', -1)); //Сортировка по свойству field по убыванию\r\n///* Сортировка сначала по полю field1\r\n// при совпадении по полю field2, а если и оно совпало, то по полю field3\r\n// все по возрастанию */\r\n//arr.sort(compare('field1', 'field2', 'field3'));\r\n///* Сортировка сначала по полю field1 по возрастанию\r\n// при совпадении по полю field2 по убыванию */\r\n//arr.sort(compare({\r\n// field1: 1,\r\n// field2: -1\r\n//}));\r\n\r\n\r\n//Метод сравнения элементов для сортировки\r\n//field - имя свойства сущности\r\n//order порядок 0 - возрастание, 1 - убывание\r\nexport default function ArrayCompare(field, order) {\r\n var len = arguments.length;\r\n if (len === 0) {\r\n return (a, b) => (a < b && -1) || (a > b && 1) || 0;\r\n }\r\n if (len === 1) {\r\n switch (typeof field) {\r\n case 'number':\r\n return field < 0 ?\r\n ((a, b) => (a < b && 1) || (a > b && -1) || 0) :\r\n ((a, b) => (a < b && -1) || (a > b && 1) || 0);\r\n case 'string':\r\n return (a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0;\r\n }\r\n }\r\n if (len === 2 && typeof order === 'number') {\r\n return order < 0 ?\r\n ((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0) :\r\n ((a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0);\r\n }\r\n var fields, orders;\r\n if (typeof field === 'object') {\r\n fields = Object.getOwnPropertyNames(field);\r\n orders = fields.map(key => field[key]);\r\n len = fields.length;\r\n } else {\r\n fields = new Array(len);\r\n orders = new Array(len);\r\n for (let i = len; i--;) {\r\n fields[i] = arguments[i];\r\n orders[i] = 1;\r\n }\r\n }\r\n return (a, b) => {\r\n for (let i = 0; i < len; i++) {\r\n if (a[fields[i]] < b[fields[i]]) return orders[i];\r\n if (a[fields[i]] > b[fields[i]]) return -orders[i];\r\n }\r\n return 0;\r\n };\r\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = ReactDOM.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = React.Children.only(children);\n return (// allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, React.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport onEnd from 'dom-helpers/transition/end';\nimport triggerBrowserReflow from './utils/triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\n\nvar Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Fade, _React$Component);\n\n function Fade() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handleEnter = function (node) {\n triggerBrowserReflow(node);\n if (_this.props.onEnter) _this.props.onEnter(node);\n };\n\n return _this;\n }\n\n var _proto = Fade.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n children = _this$props.children,\n props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n return React.createElement(Transition, _extends({\n addEndListener: onEnd\n }, props, {\n onEnter: this.handleEnter\n }), function (status, innerProps) {\n return React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n };\n\n return Fade;\n}(React.Component);\n\nFade.defaultProps = defaultProps;\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n node.offsetHeight; // eslint-disable-line no-unused-expressions\n}","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\")\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n return React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import React from 'react';\nvar ModalContext = React.createContext({\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return React.forwardRef(function (p, ref) {\n return React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import createWithBsPrefix from './utils/createWithBsPrefix';\nimport divWithClassName from './utils/divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport css from 'dom-helpers/style';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n _this.adjustAndStore = function (prop, element, adjust) {\n var actual = element.style[prop];\n element.dataset[prop] = actual;\n css(element, prop, parseFloat(css(element, prop)) + adjust + \"px\");\n };\n\n _this.restore = function (prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, prop, value);\n }\n };\n\n return _this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this3 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this3.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport classNames from 'classnames';\nimport events from 'dom-helpers/events';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/util/inDOM';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport React from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport BootstrapModalManager from './utils/BootstrapModalManager';\nimport { createBootstrapComponent } from './ThemeProvider';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog,\n manager: new BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n return React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n style: {}\n };\n _this.modalContext = {\n onHide: function onHide() {\n return _this.props.onHide();\n }\n };\n\n _this.setModalRef = function (ref) {\n _this._modal = ref;\n };\n\n _this.handleDialogMouseDown = function () {\n _this._waitingForMouseUp = true;\n };\n\n _this.handleMouseUp = function (e) {\n if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n _this._ignoreBackdropClick = true;\n }\n\n _this._waitingForMouseUp = false;\n };\n\n _this.handleClick = function (e) {\n if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n _this._ignoreBackdropClick = false;\n return;\n }\n\n _this.props.onHide();\n };\n\n _this.handleEnter = function (node) {\n var _this$props;\n\n if (node) {\n node.style.display = 'block';\n\n _this.updateDialogStyle(node);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n };\n\n _this.handleEntering = function (node) {\n var _this$props2;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n events.on(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleExited = function (node) {\n var _this$props3;\n\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n events.off(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleWindowResize = function () {\n _this.updateDialogStyle(_this._modal.dialog);\n };\n\n _this.renderBackdrop = function (props) {\n var _this$props4 = _this.props,\n bsPrefix = _this$props4.bsPrefix,\n backdropClassName = _this$props4.backdropClassName;\n return React.createElement(\"div\", _extends({}, props, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName)\n }));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Clean up the listener if we need to.\n events.off(window, 'resize', this.handleWindowResize);\n };\n\n _proto.updateDialogStyle = function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var manager = this.props.manager;\n var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n this.setState({\n style: {\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n }\n });\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n bsPrefix = _this$props5.bsPrefix,\n className = _this$props5.className,\n style = _this$props5.style,\n dialogClassName = _this$props5.dialogClassName,\n children = _this$props5.children,\n Dialog = _this$props5.dialogAs,\n show = _this$props5.show,\n animation = _this$props5.animation,\n backdrop = _this$props5.backdrop,\n keyboard = _this$props5.keyboard,\n manager = _this$props5.manager,\n onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n onShow = _this$props5.onShow,\n onHide = _this$props5.onHide,\n container = _this$props5.container,\n autoFocus = _this$props5.autoFocus,\n enforceFocus = _this$props5.enforceFocus,\n restoreFocus = _this$props5.restoreFocus,\n onEntered = _this$props5.onEntered,\n onExit = _this$props5.onExit,\n onExiting = _this$props5.onExiting,\n _ = _this$props5.onExited,\n _1 = _this$props5.onEntering,\n _6 = _this$props5.onEnter,\n _4 = _this$props5.onEntering,\n _2 = _this$props5.backdropClassName,\n props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n var clickHandler = backdrop === true ? this.handleClick : null;\n\n var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n if (!animation) baseModalStyle.display = 'block';\n return React.createElement(ModalContext.Provider, {\n value: this.modalContext\n }, React.createElement(BaseModal, {\n show: show,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n manager: manager,\n ref: this.setModalRef,\n style: baseModalStyle,\n className: classNames(className, bsPrefix),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: this.renderBackdrop,\n onClick: clickHandler,\n onMouseUp: this.handleMouseUp,\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onExited: this.handleExited\n }, React.createElement(Dialog, _extends({}, props, {\n onMouseDown: this.handleDialogMouseDown,\n className: dialogClassName\n }), children)));\n };\n\n return Modal;\n}(React.Component);\n\nModal.defaultProps = defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal, 'modal');\nDecoratedModal.Body = Body;\nDecoratedModal.Header = Header;\nDecoratedModal.Title = Title;\nDecoratedModal.Footer = Footer;\nDecoratedModal.Dialog = ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default DecoratedModal;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Modal, Button } from 'react-bootstrap'\r\nimport { ReactTabulator } from 'react-tabulator'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerControl from '../FileExplorer/FileExplorerControl.jsx'\r\n\r\n\r\nexport default class ExplorerActionsControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"ExplorerActionsControl\", \"start\")\r\n\r\n this.state = { ResultMsg: \"\", MoveWindowsShow: false }\r\n this.fileExplorerServices = new FileExplorerServices();\r\n }\r\n\r\n\r\n GetUserList() {\r\n\r\n }\r\n SaveUserList() {\r\n\r\n }\r\n\r\n\r\n OnDownloadClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDownload \" + e);\r\n\r\n this.fileExplorerServices.OpenDownload(e);\r\n });\r\n }\r\n\r\n OnDeleteClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n let promises = selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDelete \" + e);\r\n return this.fileExplorerServices.DeleteAsync(e);\r\n });\r\n\r\n let Result = \"\";\r\n\r\n\r\n Promise.all(promises).then(function (data) {\r\n data.map(function (e) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n });\r\n\r\n Notification.MesOk(Result, 'Move');\r\n //this.setState({ ResultMsg: Result });\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n }\r\n\r\n\r\n OnMoveClick(sender) {\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n if (selected.length == 0)\r\n return;\r\n\r\n this.selected = selected;\r\n\r\n this.setState({ MoveWindowsShow: true });\r\n }\r\n\r\n OnCreateDirectoryClick(sender) {\r\n //debugger;\r\n let dirname = this.refs.DirectoryName.value;\r\n let id = this.props.ParentComponent.GetID();\r\n\r\n let url = \"/Explorer/CreateDirectory?ParentID=\" + id\r\n + \"&Name=\" + dirname;\r\n\r\n this.fileExplorerServices.CreateDirectoryAsync(dirname, id).\r\n then(function (data) {\r\n this.props.ParentComponent.OnItemsChange();\r\n Notification.MesOk('Complete', 'CreateDir');\r\n }.bind(this));\r\n\r\n this.refs.DirectoryName.value = \"\";\r\n }\r\n\r\n\r\n OnMoveWindowCloseClick() {\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n GetID() {\r\n if (this.SelectedID != undefined)\r\n return this.SelectedID;\r\n\r\n return this.props.ParentComponent.GetID();\r\n }\r\n SetID(ID) {\r\n this.SelectedID = ID;\r\n }\r\n\r\n OnMoveWindowClick() {\r\n let promises = this.selected.map(function (e) {\r\n Log(\"ExplorerActionsControl\", \"OnMove \" + e);\r\n return this.fileExplorerServices.MoveAsync(e, this.SelectedID);\r\n }.bind(this));\r\n\r\n let Result = \"\";\r\n Promise.all(promises).then(function (data) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n\r\n //this.setState({ ResultMsg: Result });\r\n Notification.MesOk(Result, 'Move');\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>ExplorerControlPanel</p>\r\n\r\n <p>\r\n <input ref=\"DirectoryName\" />\r\n <button onClick={this.OnCreateDirectoryClick}>CreateDirectory</button>\r\n </p>\r\n\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>{this.state.ResultMsg}</p>\r\n : \"\"\r\n }\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th><button onClick={this.OnDownloadClick}>Скачать</button></th>\r\n <th><button onClick={this.OnDeleteClick}>Удалить</button></th>\r\n <th><button onClick={this.OnMoveClick}>Переместить</button></th>\r\n </tr>\r\n </thead>\r\n </table>\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.MoveWindowsShow}\r\n onHide={this.OnMoveWindowCloseClick}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>Select destination directory</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={false}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnMoveWindowCloseClick}>\r\n Cansel\r\n </Button>\r\n <Button variant=\"primary\" onClick={this.OnMoveWindowClick}>\r\n Move to directory\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\nimport Configuration from '../Tools/Configuration'\r\nimport Log from '../Tools/LogTools'\r\n\r\n\r\nexport default class UploadServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Start = \"/api/UploadFiles/StartUpload\";\r\n this.URL_Upload = \"/api/UploadFiles/UploadBlob\";\r\n this.URL_Cansel = \"/api/UploadFiles/Cansel\";\r\n\r\n this.upload_chunk_size = Configuration.upload_chunk_size;\r\n this.ID = -1;\r\n\r\n this._ContinueDownload = false;\r\n\r\n this._file = null;\r\n this._ParentID = null;\r\n\r\n //Callback события\r\n //(number progresse)\r\n this.OnProggresseChange = null;\r\n //(number id)\r\n this.OnIDReceived = null;\r\n //(string Msg)\r\n this.OnError = null;\r\n }\r\n\r\n\r\n //Считывает часть файла\r\n //startByte - int позиция начала чтения\r\n //stopByte - int позиция окончания чтения\r\n async _ReadBlobAsync(startByte, stopByte) {\r\n\r\n return new Promise(function (resolve, reject) {\r\n //Считываем часть файла\r\n let blob = this._file.slice(startByte, stopByte);\r\n\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(blob);\r\n }.bind(this));\r\n }\r\n\r\n //Сообщает серверу о начале загрузки файла, получает ID загрузки\r\n async _StartUploadAsync() {\r\n let res;\r\n\r\n await ApiQuery(this.URL_Start, \"Post\",\r\n {\r\n //ID папки\r\n ParentID: this._ParentID,\r\n //Имя файла\r\n Name: this._file.name,\r\n //Размеры\r\n Size: this._file.size\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n\r\n //Выполняет загрузка блока\r\n async _UploadBlobAsync(bin_data, ChunkNumb) {\r\n\r\n Log(\"UploadServices\", \"_UploadBlobAsync\");\r\n\r\n if (!this._ContinueDownload)\r\n return { State: true };\r\n\r\n\r\n if (bin_data != '') {\r\n Log(\"UploadServices\", this.URL_Upload + ChunkNumb);\r\n\r\n let res;\r\n\r\n await ApiQuery(this.URL_Upload, \"Post\",\r\n {\r\n //ID загрузки\r\n ID: this.ID,\r\n //Кусок файла\r\n chunk: bin_data\r\n //Номер куска\r\n //'ChunkNumb': ChunkNumb\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n }\r\n\r\n\r\n //Инициирует загрузку файла\r\n //parent_id - int ID папки для загрузки\r\n async UploadFileAsync(file, parent_id) {\r\n\r\n this._file = file;\r\n this._ParentID = parent_id;\r\n\r\n let start_info = await this._StartUploadAsync();\r\n if (!start_info.State) {\r\n if (this.OnError != null)\r\n this.OnError(start_info.Msg);\r\n return;\r\n }\r\n\r\n this._ContinueDownload = true;\r\n this.ID = start_info.ID;\r\n if (this.OnIDReceived != null)\r\n this.OnIDReceived(this.ID);\r\n\r\n for (let pos = 0, ChunkNumb = 0; pos < this._file.size; pos += this.upload_chunk_size, ChunkNumb++) {\r\n if (!this._ContinueDownload)\r\n return;\r\n\r\n let bin_data = await this._ReadBlobAsync(pos, pos + this.upload_chunk_size);\r\n let state = await this._UploadBlobAsync(bin_data, ChunkNumb);\r\n\r\n\r\n if (!state.State) {\r\n //alert('Загрузка прервана');\r\n\r\n if (this.OnError != null)\r\n this.OnError(state.Msg);\r\n return;\r\n }\r\n\r\n // Вычисляем процент отправленного\r\n let p = Math.round(pos * 100 / file.size);\r\n Log(\"UploadServices\", 'p = ' + p);\r\n\r\n if (this.OnProggresseChange != null)\r\n this.OnProggresseChange(p);\r\n }\r\n\r\n this._ContinueDownload = false;\r\n }\r\n\r\n Cansel() {\r\n this._ContinueDownload = false;\r\n\r\n //Костыль задержка, чтобы асинхронный загрузчик точно прервал работу\r\n //и не попытался получить доступ к ужаленному проекту загрузки\r\n //Возможно зависит от размера блока\r\n setTimeout(function () {\r\n\r\n ApiQuery(this.URL_Cansel, \"Post\",\r\n {\r\n //ID файла\r\n ID: this.ID,\r\n });\r\n\r\n }.bind(this),\r\n 500);\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UploadServices from '../../../Services/UploadServices'\r\n\r\n\r\nexport default class UploaderControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UploaderControl\", \"start\"); \r\n\r\n //state 0 - выбор файла\r\n //state 1 - загрузка\r\n this.state = { progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" };\r\n\r\n\r\n this.uploadServices = new UploadServices();\r\n this.uploadServices.OnProggresseChange = this.OnProgresseChange;\r\n //this.uploadServices.OnIDReceived = null;\r\n this.uploadServices.OnError = this.OnError;\r\n }\r\n\r\n UploadClick() {\r\n\r\n let input = this.refs.file;\r\n let files = input.files;\r\n\r\n\r\n if (files.length == 0)\r\n return;\r\n let file = files[0];\r\n\r\n this.setState({ ButtonUploadEnable: false, _state: 1, FileInfo: { name: file.name, size: file.size } });\r\n\r\n this.uploadServices.UploadFileAsync(file, this.props.ParentComponent.GetID()).then(function () {\r\n Notification.MesOk('Complete','Upload');\r\n\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" });\r\n this.props.ParentComponent.OnItemsChange();\r\n input.value = \"\";\r\n }.bind(this));\r\n }\r\n\r\n CancelClick() {\r\n this.uploadServices.Cansel();\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {} });\r\n }\r\n\r\n OnProgresseChange(Process) {\r\n this.setState({ progress: Process });\r\n }\r\n\r\n OnError(Msg) {\r\n this.setState({ progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: Msg });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <h2>Upload</h2>\r\n <p>\r\n <input ref=\"file\" type=\"file\" disabled={!this.state.ButtonUploadEnable} />\r\n <button disabled={!this.state.ButtonUploadEnable} onClick={this.UploadClick}>Upload</button>\r\n <button disabled={this.state.ButtonUploadEnable} onClick={this.CancelClick}>Cancel</button>\r\n </p>\r\n\r\n {this.state._state == 1\r\n ?\r\n <div>\r\n <p>Прогресс {this.state.progress} %</p>\r\n <p>Выполняется загрука файла:</p>\r\n <p>Имя файла: {this.state.FileInfo.name}</p>\r\n <p>Размеры файла: {this.state.FileInfo.size}</p>\r\n </div>\r\n : \"\"\r\n }\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>Результат: {this.state.ResultMsg}</p>\r\n : null\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n role: 'toolbar'\n};\nvar ButtonToolbar = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(className, prefix)\n }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.defaultProps = defaultProps;\nexport default ButtonToolbar;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { ButtonToolbar, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\n\r\n\r\nexport default class BootstrapControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"BootstrapControl\", \"start\");\r\n }\r\n\r\n\r\n //PostTest() {\r\n // let test_url = \"/Test/Test\";\r\n \r\n // fetch(test_url,\r\n // {\r\n // method: \"Post\",\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({ id: 2, name: \"n\" })\r\n // });\r\n //}\r\n\r\n ToastifyTest() {\r\n\r\n this.Leght = (this.Leght == undefined ? 0 : this.Leght) + 500;\r\n\r\n //Notification.Sho(\"Test\");\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>Bootstrap test</p>\r\n <ButtonToolbar>\r\n <Button onClick={this.ToastifyTest} variant=\"outline-primary\">Primary</Button>\r\n <Button variant=\"outline-secondary\">Secondary</Button>\r\n <Button variant=\"outline-success\">Success</Button>\r\n <Button variant=\"outline-warning\">Warning</Button>\r\n <Button variant=\"outline-danger\">Danger</Button>\r\n <Button variant=\"outline-info\">Info</Button>\r\n <Button variant=\"outline-light\">Light</Button>\r\n <Button variant=\"outline-dark\">Dark</Button>\r\n </ButtonToolbar>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Configuration from '../../Tools/Configuration'\r\n\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserControl from '../Controls/UserControl.jsx'\r\nimport FileExplorerControl from '../Controls/FileExplorer/FileExplorerControl.jsx'\r\nimport ExplorerActionsControl from '../Controls/FileExplorer/ExplorerActionsControl.jsx'\r\nimport UploaderControl from '../Controls/FileExplorer/UploaderControl.jsx'\r\nimport BootstrapControl from '../Controls/BootstrapControl.jsx'\r\n\r\n\r\nexport default class FileExplorerPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerPage\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n\r\n //Получить ID из url\r\n var Url_ID = new URL(window.location.href).\r\n searchParams.get(\"ID\");\r\n\r\n if (Url_ID != null)\r\n this.SetID(Url_ID);\r\n //if (this.props.match != undefined\r\n // && this.props.match.params != undefined\r\n // && this.props.match.params.ID != undefined)\r\n // this.SetID(this.props.match.params.ID);\r\n //Получить id от родительского компонента\r\n else\r\n this.SetID(-1);\r\n }\r\n\r\n\r\n OnAuthChange() {\r\n this.OnItemsChange();\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n OnItemsChange() {\r\n this.refs.FileExplorerControl.\r\n LoadDirectory();\r\n }\r\n\r\n SetID(val) {\r\n this.CurrentID = val;\r\n Log(\"FileExplorerPage\", this.CurrentID);\r\n }\r\n\r\n GetID() {\r\n return this.CurrentID;\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UserControl ref=\"UserControl\"\r\n ParentComponent={this}\r\n />\r\n\r\n <hr />\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={true}\r\n />\r\n <hr />\r\n {this.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <div> \r\n <ExplorerActionsControl ref=\"ExplorerActionsControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UploaderControl ref=\"UploaderControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n </div>\r\n : \"\"\r\n }\r\n <BootstrapControl />\r\n <hr />\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useState, useRef } from 'react';\nimport * as Utils from './utils';\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var defaultValue = result[Utils.defaultKey(fieldName)],\n propsValue = result[fieldName],\n rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n var prevProps = useRef({});\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = Utils.isProp(props, fieldName);\n var wasProp = Utils.isProp(prevProps.current, fieldName);\n prevProps.current = props;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp) {\n setState(defaultValue);\n }\n\n var propsHandler = props[handlerName];\n var handler = useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n setState(value);\n }, [setState, propsHandler]);\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nvar SelectableContext = React.createContext();\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import React from 'react';\nvar NavContext = React.createContext(null);\nexport default NavContext;","import React from 'react';\nvar TabContext = React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport mapContextToProps from '@restart/context/mapContextToProps';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport TabContext from './TabContext';\n\nvar noop = function noop() {};\n\nvar AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(AbstractNav, _React$Component);\n\n function AbstractNav() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n navContext: null\n };\n\n _this.handleSelect = function (key, event) {\n var _this$props = _this.props,\n onSelect = _this$props.onSelect,\n parentOnSelect = _this$props.parentOnSelect;\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n _this.handleKeyDown = function (event) {\n var onKeyDown = _this.props.onKeyDown;\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = _this.getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = _this.getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n\n _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n _this._needsRefocus = true;\n };\n\n _this.attachRef = function (ref) {\n _this.listNode = ref;\n };\n\n return _this;\n }\n\n AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n var activeKey = _ref.activeKey,\n getControlledId = _ref.getControlledId,\n getControllerId = _ref.getControllerId,\n role = _ref.role;\n return {\n navContext: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n };\n };\n\n var _proto = AbstractNav.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (!this._needsRefocus || !this.listNode) return;\n var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n };\n\n _proto.getNextActiveChild = function getNextActiveChild(offset) {\n if (!this.listNode) return null;\n var items = qsa(this.listNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = this.listNode.querySelector('.active');\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'ul' : _this$props2$as,\n _ = _this$props2.onSelect,\n _0 = _this$props2.parentOnSelect,\n _1 = _this$props2.getControlledId,\n _2 = _this$props2.getControllerId,\n _3 = _this$props2.activeKey,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n if (props.role === 'tablist') {\n props.onKeyDown = this.handleKeyDown;\n }\n\n return React.createElement(SelectableContext.Provider, {\n value: this.handleSelect\n }, React.createElement(NavContext.Provider, {\n value: this.state.navContext\n }, React.createElement(Component, _extends({}, props, {\n onKeyDown: this.handleKeyDown,\n ref: this.attachRef\n }))));\n };\n\n return AbstractNav;\n}(React.Component);\n\nexport default mapContextToProps([SelectableContext, TabContext], function (parentOnSelect, tabContext, _ref2) {\n var role = _ref2.role;\n if (!tabContext) return {\n parentOnSelect: parentOnSelect\n };\n var activeKey = tabContext.activeKey,\n getControllerId = tabContext.getControllerId,\n getControlledId = tabContext.getControlledId;\n return {\n activeKey: activeKey,\n parentOnSelect: parentOnSelect,\n role: role || 'tablist',\n // pass these two through to avoid having to listen to\n // both Tab and Nav contexts in NavLink\n getControllerId: getControllerId,\n getControlledId: getControlledId\n };\n}, AbstractNav);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n tabIndex = _ref.tabIndex,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n props['data-rb-event-key'] = navKey;\n props.id = navContext.getControllerId(navKey);\n props['aria-controls'] = navContext.getControlledId(navKey);\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n props.tabIndex = isActive ? tabIndex : -1;\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n bsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n var navbarBsPrefix, cardHeaderBsPrefix;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n navbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class UserServices {\r\n\r\n constructor() {\r\n this.URL_GetUsers = \"api/User/GetUserList\";\r\n this.URL_SetUsers = \"api/User/SetUserList\";\r\n }\r\n\r\n\r\n async GetUsersAsync() {\r\n return await ApiQuery(this.URL_GetUsers, \"Post\")\r\n .then(function (data) {\r\n return data;\r\n });\r\n }\r\n\r\n async SetUsersAsync(users) {\r\n\r\n return await ApiQuery(this.URL_SetUsers, \"Post\", users)\r\n .then(function (data) {\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { ReactTabulator } from 'react-tabulator'\r\nimport { Modal, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UserServices from '../../../Services/UserServices'\r\n\r\nexport default class UserListControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UserListControl\", \"start\");\r\n\r\n this.state = {\r\n Users: [],\r\n ShoGroups: false,\r\n //Заглушка\r\n UserGroups: {\r\n ID: -1,\r\n Name: \"\",\r\n Password: \"\",\r\n Active: false,\r\n Changes: -1, \r\n Groups: [{ \r\n ID: -11,\r\n Name: \"\",\r\n EnterInGroup: false\r\n }]\r\n }\r\n };\r\n\r\n this.userServices = new UserServices();\r\n //AutodecrementID\r\n this.ID = -1;\r\n\r\n this.columns = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\", editor: \"input\" },\r\n { title: \"Password\", field: \"Password\", editor: \"input\" },\r\n { title: \"Active\", field: \"Active\", editor: \"tick\" },\r\n\r\n { title: \"Groups\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.OnGroupsClick },\r\n { title: \"Delete\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.DeleteUserClick },\r\n ];\r\n\r\n this.columns_groups = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\" },\r\n { title: \"EnterInGroup\", field: \"EnterInGroup\", editor: \"tick\" },\r\n ];\r\n\r\n this.DownloadUsers();\r\n }\r\n\r\n DownloadUsers() {\r\n this.userServices.GetUsersAsync().\r\n then(function (data) {\r\n let users = data.Users;\r\n this.Groups = data.Groups;\r\n this.setState({ Users: users });\r\n }.bind(this));\r\n }\r\n UploadUsers() { \r\n this.userServices.SetUsersAsync(this.state.Users).\r\n then(function (data) {\r\n if (data.Successe)\r\n Notification.MesOk(data.ResMessage, \"Save\");\r\n else\r\n Notification.MesEr(data.ResMessage, \"Save\");\r\n\r\n this.DownloadUsers();\r\n }.bind(this));\r\n }\r\n\r\n //custom formatter definition\r\n ButtonFormatter(cell, formatterParams, onRendered) { //plain text value\r\n return \"<i class='fa fa-print'><button>Action</button></i>\";\r\n };\r\n\r\n OnCellChange(cell) {\r\n let users = this.state.Users;\r\n\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n var data_row = users.filter(e => e.ID === ID)[0];\r\n\r\n //Если NoChange то Update\r\n if (data_row.Changes === 0)\r\n data_row.Changes = 1;\r\n }\r\n\r\n OnCellChange_Groups(cell) {\r\n\r\n //Если NoChange то Update\r\n if (this.state.UserGroups.Changes === 0)\r\n this.state.UserGroups.Changes = 1;\r\n }\r\n\r\n UpdateClick() {\r\n this.DownloadUsers();\r\n }\r\n\r\n\r\n CreateUserCick() {\r\n let new_user = {\r\n ID: this.ID,\r\n Name: \"NewUser\" + this.ID,\r\n Password: \"QWERTY\",\r\n Active: true,\r\n Changes: 2, //Create\r\n\r\n Groups: this.Groups.map((e) => {\r\n return {\r\n ID: e.ID,\r\n Name: e.Name,\r\n EnterInGroup: (e.Name == \"Пользователи\") ? true : false\r\n };\r\n })\r\n };\r\n this.ID--;\r\n\r\n let users = this.state.Users;\r\n users.push(new_user);\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n DeleteUserClick(e, cell) {\r\n //let table = this.refs.table.table;\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n if (user.Changes === 2) {\r\n users.splice(users.findIndex(e => e.ID === ID), 1);\r\n }\r\n else {\r\n user.Changes = 3;\r\n }\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n OnGroupsClick(e, cell) {\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n this.setState({ ShoGroups: true, UserGroups: user });\r\n }\r\n OnGroupsClose() {\r\n this.setState({ ShoGroups: false });\r\n } \r\n\r\n render() {\r\n return (\r\n <div>\r\n <button onClick={this.CreateUserCick}>CreateUser</button>\r\n <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>\r\n <button onClick={this.UploadUsers}>SaveChanges</button>\r\n\r\n\r\n <ReactTabulator ref=\"table\"\r\n data={this.state.Users.filter(e => e.Changes != 3)}\r\n columns={this.columns}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange}\r\n />\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.ShoGroups}\r\n onHide={this.OnGroupsClose}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>User Groups: {this.state.UserGroups.ID + \" \" + this.state.UserGroups.Name}</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <ReactTabulator ref=\"table_UserGroups\"\r\n data={this.state.UserGroups.Groups}\r\n columns={this.columns_groups}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange_Groups}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnGroupsClose}>\r\n Close\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Nav } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserListControl from '../Controls/Admin/UserListControl.jsx'\r\n\r\n\r\nexport default class AdministratorPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"AdministratorPage\", \"start\");\r\n\r\n this.state = { ActiveWindows: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n\r\n OnUsersClick() {\r\n this.setState({ ActiveWindows: 0 });\r\n }\r\n OnGroupsClick() {\r\n this.setState({ ActiveWindows: 1 });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnUsersClick}>Users</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnGroupsClick}> Groups</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n\r\n {this.state.ActiveWindows == 0\r\n ?\r\n <div>\r\n <UserListControl ref=\"UserListControl\" />\r\n </div>\r\n :\r\n <div>\r\n GroupsWindow\r\n </div>\r\n }\r\n </div>\r\n : <p>Вы не авторизованы</p>\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\n\r\nimport Log from '../Tools/LogTools'\r\n\r\nimport FileExplorerPage from './Pages/FileExplorerPage.jsx'\r\nimport AdministratorPage from './Pages/AdministratorPage.jsx' \r\n\r\n\r\nexport default class RouteSystem extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n Log(\"RouteSystem\", \"start\");\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <Router>\r\n <Switch>\r\n <Route ref=\"CurrentPage\" exact path=\"/\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/App\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/index.html\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/?ID=:ID\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/Admin\" component={AdministratorPage} />\r\n </Switch>\r\n </Router>\r\n );\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n <RouteSystem />,\r\n document.getElementById(\"App\")\r\n)\r\n\r\n","\r\nimport './React/RouteSystem.jsx'\r\n\r\nconsole.log(\"index.js\");\r\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/react/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/react-tabulator/lib/Utils.js","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/@restart/context/forwardRef.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/react-overlays/ModalManager.js","webpack:///./node_modules/react-tabulator/lib/index.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/react-overlays/utils/getContainer.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulator.js","webpack:///./node_modules/pick-react-known-prop/dist/index.js","webpack:///./node_modules/react-tabulator/lib/ConfigUtils.js","webpack:///./node_modules/tabulator-tables/dist/js/tabulator.js","webpack:///./node_modules/react-autobind/index.js","webpack:///./node_modules/react-overlays/Modal.js","webpack:///./node_modules/dom-helpers/transition/end.js","webpack:///./node_modules/@restart/context/mapContextToProps.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-autobind/lib/autoBind.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/react-overlays/utils/isOverflowing.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/react-overlays/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/Portal.js","webpack:///./node_modules/react-overlays/WaitForContainer.js","webpack:///./node_modules/react-overlays/utils/ownerDocument.js","webpack:///./node_modules/react-dom/server.browser.js","webpack:///./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack:///./node_modules/react-tabulator/lib/React15Tabulator.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulatorExample.js","webpack:///./node_modules/react-tabulator/lib/editors/DateEditor.js","webpack:///./node_modules/react-tabulator/lib/editors/MultiSelectEditor.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/ReactTags.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Tag.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Input.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Suggestions.js","webpack:///./node_modules/react-tabulator/lib/formatters/MultiValueFormatter.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/formatters/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./src/Registers/ControlRegister.js","webpack:///./src/Registers/EventRegister.js","webpack:///./src/Tools/LogTools.js","webpack:///./src/React/BaseControl.jsx","webpack:///./src/Tools/Configuration.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./src/Tools/ApiQuery.js","webpack:///./src/Services/AuthServices.js","webpack:///./src/React/Controls/MenuControl.jsx","webpack:///./node_modules/react-bootstrap/es/ThemeProvider.js","webpack:///./node_modules/react-bootstrap/es/utils/createWithBsPrefix.js","webpack:///./node_modules/react-bootstrap/es/FormContext.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/Feedback.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormCheckInput.js","webpack:///./node_modules/react-bootstrap/es/FormCheckLabel.js","webpack:///./node_modules/react-bootstrap/es/FormCheck.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/react-bootstrap/es/FormLabel.js","webpack:///./node_modules/react-bootstrap/es/FormText.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./src/Tools/Notification.js","webpack:///./src/React/Controls/UserControl.jsx","webpack:///./src/Services/FileExplorerServices.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./src/React/Controls/FileExplorer/FileExplorerRow.jsx","webpack:///./src/React/Controls/FileExplorer/FileExplorerControl.jsx","webpack:///./src/Tools/Sort.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/utils/triggerBrowserReflow.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack:///./node_modules/@restart/hooks/esm/useEventCallback.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/ModalContext.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/react-bootstrap/es/utils/divWithClassName.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/utils/BootstrapModalManager.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./src/React/Controls/FileExplorer/ExplorerActionsControl.jsx","webpack:///./src/Services/UploadServices.js","webpack:///./src/React/Controls/FileExplorer/UploaderControl.jsx","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./src/React/Controls/BootstrapControl.jsx","webpack:///./src/React/Pages/FileExplorerPage.jsx","webpack:///./node_modules/uncontrollable/esm/utils.js","webpack:///./node_modules/uncontrollable/esm/hook.js","webpack:///./node_modules/react-bootstrap/es/NavbarContext.js","webpack:///./node_modules/react-bootstrap/es/CardContext.js","webpack:///./node_modules/react-bootstrap/es/SelectableContext.js","webpack:///./node_modules/react-bootstrap/es/NavContext.js","webpack:///./node_modules/react-bootstrap/es/TabContext.js","webpack:///./node_modules/react-bootstrap/es/AbstractNav.js","webpack:///./node_modules/react-bootstrap/es/NavItem.js","webpack:///./node_modules/react-bootstrap/es/AbstractNavItem.js","webpack:///./node_modules/react-bootstrap/es/NavLink.js","webpack:///./node_modules/react-bootstrap/es/Nav.js","webpack:///./src/Services/UserServices.js","webpack:///./src/React/Controls/Admin/UserListControl.jsx","webpack:///./src/React/Pages/AdministratorPage.jsx","webpack:///./src/React/RouteSystem.jsx","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_extends","assign","target","arguments","length","source","apply","this","__webpack_exports__","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","arg","argType","push","Array","isArray","inner","join","default","undefined","obj","_inheritsLoose","subClass","superClass","constructor","__proto__","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","error","warning","condition","format","a","b","e","f","Error","args","argIndex","replace","framesToPop","_default","window","document","createElement","element","selector","found","maybeID","maybeClass","nameOnly","slice","simpleSelectorRE","test","getElementById","getElementsByClassName","toArray","getElementsByTagName","querySelectorAll","Function","node","ownerDocument","_interopRequireDefault","recalc","size","_inDOM","scrollDiv","style","position","top","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","css","transforms","props","_camelizeStyle","_getComputedStyle2","getPropertyValue","_hyphenateStyle","forEach","_isTransform","_removeStyle","_properties","transform","cssText","React","react_dom_1","clone","JSON","parse","stringify","isSameArray","reactFormatter","JSX","cell","formatterParams","onRendered","cellEl","getElement","CompWithMoreProps","cloneElement","render","querySelector","__WEBPACK_AMD_DEFINE_ARRAY__","define","$","$container","listener","previousToast","toastId","toastType","info","success","toastr","clear","$toastElement","clearOptions","options","getOptions","getContainer","clearToast","toastsToClear","children","clearContainer","remove","removeToast","message","title","optionsOverride","notify","type","iconClass","iconClasses","subscribe","callback","version","containerId","attr","addClass","positionClass","appendTo","createContainer","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","publish","map","extend","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","state","startTime","Date","toastClass","suffix","escapeHtml","append","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showDuration","showEasing","onShown","timeOut","setTimeout","hideToast","parseFloat","getTime","setInterval","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","event","stopPropagation","cancelBubble","onCloseClick","debug","log","override","method","closeMethod","closeDuration","closeEasing","clearTimeout","onHidden","endTime","extendedTimeOut","stop","percentage","is","_on","on","_off","off","_filter","filter","_listen","listen","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","split","letter","shouldUseNative","from","symbols","to","_typeof","iterator","_react2","_createChainableTypeChecker2","propName","componentName","location","propFullName","propValue","propType","isValidElement","nodeType","validate","checkType","isRequired","componentNameSafe","propFullNameSafe","_len","_key","concat","chainedCheckType","renderFn","_temp","_ref","propTypes","defaultProps","_ref$allowFallback","allowFallback","_ref$displayName","displayName","ref","_react","forwardRef","string","rHyphen","_","chr","toUpperCase","_class","_style","_scrollbarSize","_isOverflowing","_manageAriaHidden","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","data","scrollbarSize","_proto","isContainerOverflowing","modal","containerIndexFromModal","overflowing","arr","cb","idx","some","setContainerStyle","containerState","container","paddingRight","parseInt","removeContainerStyle","add","className","modalIdx","containerIdx","hideSiblings","splice","removeClass","showSiblings","_data$modals","backdrop","dialog","ariaHidden","isTopModal","ReactTabulator_1","React15Tabulator_1","ReactTabulatorExample_1","Utils_1","ReactTabulator","React15Tabulator","ReactTabulatorExample","addEventListener","eventName","handler","capture","attachEvent","srcElement","currentTarget","removeEventListener","detachEvent","context","contains","compareDocumentPosition","fallback","parentNode","classList","baseVal","_camelize","msPattern","animationEnd","animationDelay","animationTiming","animationDuration","animationName","transitionEnd","transitionDuration","transitionDelay","transitionTiming","transitionProperty","prefix","_getTransitionPropert","vendorMap","O","toLowerCase","Moz","Webkit","ms","vendors","vendor","getTransitionProperties","end","timing","delay","defaultContainer","_reactDom","findDOMNode","extendStatics","__extends","setPrototypeOf","__","__assign","ReactDOM","pick_react_known_prop_1","ConfigUtils_1","Tabulator","default_1","_super","_this","htmlProps","mainId","Math","floor","random","table","pickValidHTMLProps","pickHTMLProps","componentDidMount","domEle","that","_a","columns","propOptions","propsToOptions","layout","tableBuilding","dataLoaded","setState","componentWillUnmount","destroy","getDerivedStateFromProps","noData","componentDidUpdate","setData","data-instance","Component","id","loaded","pickSVGProps","_pickHtmlProps2","_pickSvgProps2","_htmlAttributes2","_pickProps2","ReactHTMLAttrs","reduce","attrs","prop","Boolean","abbr","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","challenge","charset","checked","cite","class","cols","colSpan","command","content","contentEditable","contextMenu","controls","coords","crossOrigin","dateTime","defer","dir","disabled","download","draggable","dropzone","encType","for","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","hidden","high","href","hrefLang","htmlFor","httpEquiv","icon","inputMode","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","list","loop","manifest","max","maxLength","media","mediaGroup","min","minLength","multiple","muted","noValidate","open","optimum","pattern","ping","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","shape","sizes","sortable","span","spellCheck","src","srcDoc","srcSet","start","step","tabIndex","translate","typeMustMatch","useMap","wmode","wrap","_lodash","_lodash2","out","objectTag","func","funcProto","objectProto","funcToString","toString","objectCtorString","objectToString","getPrototype","getPrototypeOf","isObjectLike","result","isHostObject","proto","Ctor","_svgAttributes2","accentHeight","accumulate","additive","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","azimuth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clipPathUnits","contentScriptType","contentStyleType","cx","cy","descent","diffuseConstant","divisor","dur","dx","dy","edgeMode","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","fontFamily","fontSize","fontStretch","fontStyle","fx","fy","g1","g2","glyphame","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","horizOriginY","ideographic","in","in2","intercept","k","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","offset","onAbort","onActivate","onBegin","onClick","onEnd","onError","onFocusIn","onFocusOut","onLoad","onMouseDown","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onRepeat","onResize","onScroll","onUnload","onZoom","operator","order","orient","orientation","origin","overlinePosition","overlineThickness","panose1","path","pathLength","patternContentUnits","patternTransform","patternUnits","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","slope","spacing","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","strikethroughPosition","strikethroughThickness","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","u1","u2","underlinePosition","underlineThickness","unicode","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","values","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","widths","x","xHeight","x1","x2","xChannelSelector","xlink","xml","y","y1","y2","yChannelSelector","z","zoomAndPan","alignmentBaseline","baselineShift","clipPath","clipRule","clip","colorInterpolationFilters","colorInterpolation","colorProfile","colorRendering","color","cursor","direction","display","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontSizeAdjust","fontVariant","fontWeight","glyphOrientationHorizontal","glyphOrientationVertical","imageRendering","kerning","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","mask","opacity","pointerEvents","shapeRendering","stopColor","stopOpacity","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","stroke","textAnchor","textDecoration","textRendering","unicodeBidi","visibility","wordSpacing","writingMode","server_1","NOOPS","output","_i","defaultOptions_1","opt","callbackNames_1","callbackName","renderToString","__WEBPACK_AMD_DEFINE_FACTORY__","factory","findIndex","predicate","len","thisArg","kValue","find","ColumnManager","blockHozScrollEvent","headersElement","createHeadersElement","createHeaderElement","rowManager","columnsByIndex","columnsByField","scrollLeft","insertBefore","firstChild","el","headerVisible","initialize","setRowManager","manager","getHeadersElement","scrollHorizontal","left","hozAdjust","scrollWidth","marginLeft","modExists","frozenColumns","generateColumnsFromRowData","row","sorter","col","field","isNaN","match","setColumns","self","reset","def","_addColumn","_reIndexColumns","responsiveLayout","redraw","definition","before","nextToColumn","column","Column","colEl","index","findColumnIndex","parentIndex","getTopColumn","nextEl","nextSibling","unshift","registerColumnField","registerColumnPosition","reRegisterPosition","_verticalAlignHeaders","minHeight","clearVerticalAlign","getHeight","verticalAlign","columnVertAlign","adjustTableSize","findColumn","subject","ColumnComponent","_getSelf","HTMLElement","getColumnByField","getColumnByIndex","getFirstVisibileColumn","visible","getColumns","getRealColumns","traverse","getDefinitions","active","getDefinition","getDefinitionTree","getComponents","structured","getComponent","getWidth","moveColumn","after","_moveColumnInArray","columnMoved","columnManager","persistentLayout","persistence","save","updateRows","toIndex","fromIndex","cells","scrollToColumn","ifVisible","adjust","Promise","resolve","reject","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","warn","generateCells","generateCell","getFlexBaseWidth","totalWidth","fixedWidth","scrollHeight","clientHeight","minWidth","colWidth","columnMinWidth","addColumn","columnCalcs","activeRows","getMode","reinitializeWidth","reinitialize","deregisterColumn","getField","helpers","elVisible","resetScroll","update","footerManager","_column","getCells","getVisibility","show","isGroup","toggle","delete","getSubColumns","getParentColumn","parent","scrollTo","getTable","headerFilterFocus","setHeaderFilterFocus","reloadHeaderFilter","setHeaderFilterValue","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","contentElement","groupElement","createGroupElement","tooltip","hozAlign","fieldStructure","getFieldValue","setFieldValue","setField","checkDefinition","cellEvents","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","widthStyled","minWidthStyled","widthFixed","_mapDepricatedFunctionality","newCol","attachColumn","checkColumnVisibility","rowHandle","movableRows","moveRow","setHandle","_buildHeader","setAttribute","_this2","defaultOptionList","nestedFieldSeparator","_getNestedData","_getFlatData","_setNesteData","_setFlatData","hideInHtml","htmlOutput","setTooltip","headerTooltip","tooltipsHeader","localize","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","resizableColumns","resizeColumns","initializeColumn","headerFilter","headerFilterPlaceholder","setHeaderFilterColumnPlaceholder","movableColumns","topCalc","bottomCalc","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","headerTapHold","cellEdited","cellEditing","cellEditCancelled","sort","editor","edit","validator","mutator","accessor","cssClass","setMinWidth","tooltips","align","_buildColumnHeaderTitle","titleHolderElement","editableTitle","titleElement","focus","columnTitleChanged","text","_formatColumnHeaderTitle","formatter","contents","params","mockCell","titleFormatter","getFormatter","getValue","titleFormatterParams","Node","innerHTML","dataObj","structure","alignment","parentHeight","getGroupElement","offsetHeight","paddingTop","getFirstColumn","getLastColumn","updateBranches","colDefs","columnVisibilityChanged","silent","responsiveToggle","updateColumnVisibility","matchChildWidths","childWidth","maxWidth","setWidth","setWidthActual","checkCellHeights","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","cellCount","Cell","hideHeaderFilterElements","fitToData","showHeaderFilterElements","clearWidth","deleteCell","RowManager","createHolderElement","tableElement","createTableElement","firstRender","renderMode","activeRowsCount","displayRows","displayRowsCount","scrollTop","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","getTableElement","getRowPosition","setColumnManager","setRenderMode","groupBy","groupRows","scrollHeaders","scrollVertical","ajaxProgressiveLoad","ajax","nextPage","findRow","Row","RowComponent","getRowFromDataObject","getRowFromPosition","scrollToRow","rowTop","_this3","rowIndex","getDisplayRows","rowEl","scrollToRowPosition","scrollToRowIfVisible","elOffset","abs","_virtualRenderFill","renderInPosition","_this4","pagination","_setDataActual","reRenderInPosition","autoColumns","dataLoading","_wipeElements","history","selectRow","clearSelectionData","reactiveData","watchData","refreshActiveData","wipe","deleteRow","blockRedraw","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","rowDeleted","dataEdited","getData","updateGroupRows","addRow","pos","addRowActual","addRows","_this5","findAddRowPos","reverse","item","addRowPos","dispRows","paginationAddRow","page","getPageSize","assignRowToGroup","getGroup","_moveRowInArray","rowAdded","moveRowActual","rowMoved","toGroup","fromGroup","removeRow","insertRow","styleRow","clearData","getRowIndex","findRowIndex","getDisplayRowIndex","nextDisplayRow","rowOnly","nextRow","prevDisplayRow","prevRow","getDataCount","_genRemoteRequest","ajaxSorting","sorters","getSort","paginationDataSentNames","ajaxFiltering","filters","getFilters","setParams","sendRequest","then","catch","filterRefresh","setPage","loadData","sorterRefresh","loadOrignalData","progressiveLoad","stage","skipStage","cancelEdit","selectable","selectablePersistence","deselectRows","resetDisplayRows","frozenRows","isFrozen","getDisplayIndex","setDisplayIndex","getNextDisplayIndex","setDisplayRows","getRows","dataTree","setMaxRows","renderTable","layoutColumnsOnNewData","getVisibleRows","viewable","topEdge","bottomEdge","topFound","topRow","bottomRow","offsetTop","getRenderMode","topOffset","diff","virtualDom","renderStarted","_simpleRender","renderEmptyScroll","renderComplete","_clearVirtualDom","checkClassicModeGroupHeaderWidth","onlyGroupHeaders","paddingBottom","forceMove","holder","topPad","rowsHeight","topPadHeight","heightOccupied","ceil","rowHeight","initialized","normalizeHeight","vDomScrollHeight","countGroups","topDiff","bottomDiff","margin","_addTopRow","_removeBottomRow","_removeTopRow","_addBottomRow","topRowHeight","_quickNormalizeRowHeight","bottomRowHeight","virtualDomBuffer","otherHeight","external","maxHeight","tableWidth","browser","createEvent","initEvent","dispatchEvent","Event","_row","getCell","getIndex","getPosition","pageTo","setPageToRow","move","moveToRow","updateData","select","selectRows","deselect","toggleSelect","toggleRow","isSelected","isRowSelected","freeze","freezeRow","unfreeze","unfreezeRow","treeCollapse","collapseRow","treeExpand","expandRow","treeToggle","getTreeParent","getTreeChildren","reformat","getNextRow","getPrevRow","heightStyled","manualHeight","outerHeight","generateElement","detachElement","initializeRow","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","deleteCells","layoutRow","cellRendered","rowFormatter","resizableRows","resizeRows","reinitializeHeight","setHeight","clearHeight","transformRow","watchRow","_this6","attrname","block","unblock","setValueProcessData","getChildField","rowUpdated","getCellIndex","findCell","findNextEditableCell","nextCell","allowEdit","check","findPrevEditableCell","prevCell","toRow","_this7","deleteActual","_deselectRow","group","recalcRowGroup","CellComponent","_cell","getOldValue","getRow","getColumn","setValue","mutate","restoreOldValue","setValueActual","nav","checkHeight","oldValue","build","_configureCell","textAlign","tooltipGenerationMode","_generateTooltip","_bindClickEvents","_bindTouchEvents","_bindMouseEvents","bindEditor","initializeCell","component","preventDefault","selection","range","createTextRange","moveToElementText","getSelection","createRange","selectNode","removeAllRanges","addRange","_generateContents","formatValue","newValue","changed","transformCell","layoutElement","editCell","editing","getCurrentCell","calcs","next","right","prev","up","down","FooterManager","links","_initialize","footerElement","activate","deactivate","link","footerRedraw","browserSlow","initializeElement","initializeOptions","_create","comms","register","defaultOptions","autoResize","initialSort","initialFilter","initialHeaderFilter","columnHeaderSortMulti","sortOrderReverse","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardPasteParser","clipboardPasteAction","clipboardCopyConfig","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","blob","downloadComplete","downloadConfig","dataTreeElementColumn","dataTreeBranchElement","dataTreeChildIndent","dataTreeChildField","dataTreeCollapseElement","dataTreeExpandElement","dataTreeStartExpanded","dataTreeRowExpanded","dataTreeRowCollapsed","printAsHtml","printFormatter","printHeader","printFooter","printCopyStyle","printVisibleRows","printConfig","selectableRangeMode","selectableRollingSelection","selectableCheck","locale","langs","persistentSort","persistentFilter","persistenceID","persistenceMode","responsiveLayoutCollapseStartOpen","responsiveLayoutCollapseUseFormatters","responsiveLayoutCollapseFormatter","paginationSize","paginationButtonCount","paginationSizeSelector","paginationElement","paginationDataSent","paginationDataReceived","ajaxURL","ajaxURLGenerator","ajaxParams","ajaxConfig","ajaxContentType","ajaxRequestFunc","ajaxLoader","ajaxLoaderLoading","ajaxLoaderError","ajaxProgressiveLoadDelay","ajaxProgressiveLoadScrollMargin","groupStartOpen","groupValues","groupHeader","htmlOutputConfig","movableRowsConnectedTables","movableRowsSender","movableRowsReceiver","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","tableBuilt","rowSelectionChanged","rowSelected","rowDeselected","rowResized","columnResized","htmlImporting","htmlImported","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","groupToggleElement","groupClosedShowCalcs","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","pageLoaded","localized","validationFailed","historyUndo","historyRedo","_clearSelection","empty","_clearObjectPointers","bindModules","tagName","htmlTableImport","parseTable","_buildElement","_loadInitialData","_this8","mod","_detectBrowser","setHeaderFilterPlaceholder","installLang","setLocale","load","setSort","setFilter","resizeTable","print","deregister","unwatchData","clearBindings","ua","navigator","userAgent","setDataFromLocalFile","extensions","_this9","input","file","files","reader","FileReader","readAsText","onload","_setData","onerror","config","blockActiveRequest","inPosition","getUrl","setConfig","setUrl","searchRows","search","searchData","getHtml","htmlTableExport","printFullscreen","getAjaxUrl","replaceData","_this10","responses","addData","_this11","updateOrAddData","_this12","newRows","_this13","_this14","updateOrAddRow","_this15","updateRow","_this16","_this17","fromRow","copyToClipboard","selectorParams","copy","getColumnDefinitions","getColumnLayout","parseColumns","setColumnLayout","mergeDefinition","showColumn","hideColumn","toggleColumn","deleteColumn","_this18","getLocale","getLang","sortList","getSorters","clearSort","addFilter","all","getHeaderFilters","removeFilter","clearFilter","clearHeaderFilter","deselectRow","toggleSelectRow","getSelectedRows","getSelectedData","setMaxPage","_this19","setPageSize","previousPage","getPage","getPageMax","setGroupBy","groups","setGroupStartOpen","setGroupHeader","getGroups","getGroupedData","getCalcResults","getResults","navigatePrev","currentCell","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","undo","redo","getHistoryUndoSize","getHistoryRedoSize","filename","downloadToTab","tableComms","receive","moduleBindings","extendModule","registerModule","plugin","box","getBoundingClientRect","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","deepClone","tables","lookupTable","query","matches","results","matchElement","Layout","modes","fitData","fitDataFill","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","gap","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Localize","bindings","headerFilters","_setLangProp","desiredLocale","language","traverseLang","trans","_executeBindings","getText","pathArray","_getLangElement","root","level","rootPath","_loop","binding","items","loading","page_size","first","first_title","last","last_title","prev_title","next_title","Comms","getConnections","selectors","connections","con","send","connection","commsReceived","Accessor","allowedTypes","charAt","lookupAccessor","accessors","dataIn","Ajax","url","urlGenerator","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","loaderPromise","requestOrder","template","trim","defaultLoaderPromise","defaultURLGenerator","initializeProgressive","getParams","_loadDefaultConfig","defaultConfig","_loadDataProgressive","_loadDataStandard","_this20","generateParamsList","serializeParams","encoded","encodeURIComponent","requestNo","_this21","showLoader","hideLoader","showError","contentType","contentTypeFormatters","Accept","credentials","fetch","ok","json","status","statusText","Content-Type","FormData","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","rowsToData","generateRow","recalcGroup","getRowGroup","rowData","bottom","generateRowData","generateTopRow","generateBottomRow","disable","enable","paramKey","hasTopCalcs","hasBottomCalcs","getKey","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","avg","calcParams","precision","sum","Number","toFixed","count","Clipboard","copySelector","copySelectorParams","copyFormatter","copyFormatterParams","pasteParser","pasteAction","htmlElement","blocked","processConfig","generateContent","clipboardData","outerHTML","originalEvent","paste","setPasteParser","setPasteAction","columnHeaders","rowGroups","clipboardCopyHeader","originalSelectionText","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","valid","internal","sel","textRange","selectNodeContents","setSelector","setFormatter","execCommand","copySelectors","copyFormatters","generateSimpleHeaders","generateColumnGroupHeaders","_this22","colData","processColumnGroup","_this23","groupData","subGroup","subGroupData","groupHeadersToRows","parseColumnGroup","rowArray","buildComplexRows","_this24","processGroupData","_this25","getCalcRow","calcData","buildOutput","_this26","generateHTML","parseRowGroupData","calcObj","_this27","oddRow","evenRow","calcRow","firstRow","firstCell","firstGroup","styleCells","headerEl","addCalcRow","processRows","isCalc","j","mapElementStyles","header","headerHolderEl","columnEl","generateHeaders","getComputedStyle","processGroup","groupEl","groupCellEl","lookup","background-color","font-weight","font-family","font-size","border-top","border-left","border-right","border-bottom","fromStyle","userSelection","raw","headerFindSuccess","columnMap","shift","insert","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","dummyEl","firstCol","childArray","controlEl","generateControlElement","cloneNode","marginRight","paddingLeft","_this28","oldControl","replaceChild","_this29","getChildren","child","_this30","generateChildren","sub","_this31","childData","childRow","checkForRestyle","Download","fields","interceptCallback","downloadFunc","downloaders","processColumns","processDefinitions","processData","mime","triggerDownload","columnGroups","processedDefinitions","processDefinition","_this32","maxDepth","processedColumn","depth","downloadTitle","_this33","_this34","newTab","Blob","URL","createObjectURL","msSaveOrOpenBlob","csv","setFileContents","fileContents","titles","delimiter","parseRows","parseGroup","bom","pdf","headerDepth","autoTableParams","rowGroupStyles","fillColor","rowCalcStyles","jsPDFParams","jsPDF","unit","parseValue","parseRow","styles","doc","autoTable","addPageContent","head","documentProcessing","xlsx","sheetName","workbook","SheetNames","Sheets","groupRowIndexs","groupColumnIndexs","calcRowIndexs","generateSheet","sheet","XLSX","utils","sheet_add_aoa","encode_range","merges","merge","generateMerges","rowsToSheet","sheetOnly","sheets","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Edit","mouseClick","recursionBlock","invalidEdit","editable","editorParams","editors","clearEditor","focusCellNoEvent","forceEdit","cellEditor","rendered","blur","cancel","cellValue","onChange","padding","boxSizing","keyCode","textarea","whiteSpace","resize","heightNow","number","blurFunc","initialValue","listEl","dataItems","displayItems","currentItem","blurable","getUniqueColumnValues","sortValuesList","parseItems","inputValues","curentValue","dataList","displayList","processComplexListItem","listItemFormatter","setCurrentItem","chooseItem","fillList","hideList","cancelItem","stopImmediatePropagation","showList","autocomplete","allItems","filterList","term","intialLoad","searchObjs","searchFunc","showListOnEmpty","current","showInputValue","freetext","allowEmpty","itemList","star","maxStars","getAttribute","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","textOverflow","progress","mouseDrag","mouseDragWidth","percent","handle","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","indeterminate","marginTop","Filter","headerFilterElements","headerFilterColumns","prevSuccess","filterFunc","filterType","tagType","attrType","emptyFunc","headerFilterFunc","headerFilterFuncParams","fieldVal","colVal","generateHeaderFilterElement","filterElement","editorElement","cellWrapper","typingTimer","searchTrigger","_this35","headerElement","oldFilterElement","oldFilterElementIndex","oldColumnIndex","headerFilterEmptyCheck","headerFilterParams","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","filtersToArray","_this36","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","=","filterVal","rowVal","filterParams","<","<=",">",">=","!=","regex","RegExp","like","Format","crossElement","formatters","plaintext","renderedCallback","sanitizeHTML","entityMap","&","\"","'","/","`","emptyToSpace","html","money","integer","decimal","rgx","floatVal","decimalSym","thousandSym","thousand","symbol","symbolAfter","urlPrefix","labelField","urlField","image","truthy","allowTruthy","tick","tickElement","cross","datetime","inputFormat","outputFormat","invalid","invalidPlaceholder","newDatetime","moment","isValid","datetimediff","humanize","date","traffic","percentValue","colors","legend","legendColor","legendAlign","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","collapse","FrozenColumns","leftColumns","rightColumns","leftMargin","rightMargin","rightPadding","initializationMode","scrollEndTimer","edge","frozen","_this37","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","_this38","_this39","FrozenRows","styleRows","GroupComponent","_group","getParentGroup","toggleVisibility","groupManager","Group","generator","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","old","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","initializeGroupHeader","_this40","allowedValues","_createGroup","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","scrollHeader","removeGroup","getHeadersAndRows","noCalc","_visSet","getRowCount","compoment","addBindingsd","childNodes","GroupRows","langValue","lookupFunc","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","History","undoers","redoers","cellEdit","rowAdd","rowDelete","newRow","_rebindRow","rowMove","oldRow","HtmlTableImport","fieldIndex","hasIndex","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","optionsList","attrib","_attribValue","_findCol","exists","textContent","HtmlTableExport","cloneTableStyle","colVisProp","genereateTable","generateHeaderElements","generateBodyElements","_this41","_this42","columnVisCheck","_this43","_this44","bodyEl","text-align","padding-top","padding-left","padding-right","padding-bottom","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","mergedBindings","mapBindings","bindEvents","_this45","_loop2","actions","mapBinding","symbolsList","ctrl","code","checkBinding","ctrlKey","shiftKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","keyBlock","newPos","scrollMax","navLeft","navRight","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","touches","pageX","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectedTable","connectedRow","mouseup","tableRowDrop","pageY","previousSibling","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connect","disconnect","dropComplete","sender","senders","receiver","receivers","fromTable","toTable","Mutator","enabled","lookupMutator","mutators","mutatorEdit","Page","pageSizes","button","pagesElement","firstBut","prevBut","nextBut","lastBut","pageSizeSelect","generatePageSizeSelectList","_this46","itemEl","pageSelectLabel","_key2","paginationDataReceivedNames","trigger","_this47","_this48","_setPageButtons","leftSize","rightSize","_generatePageButton","_this49","_this50","_this51","_getRemotePage","oldParams","pageParams","_this52","_parseRemoteData","last_page","footer","current_page","Persistence","persistProps","localStorage","retreiveData","getItem","cookie","cookiePos","substr","oldCols","newCols","_findColumn","validateSorters","saveData","setItem","expireDate","setDate","getDate","toUTCString","definitions","Print","manualBlock","replaceTable","cleanup","footerContent","scrollX","scrollY","footerEl","tableEl","ReactiveData","origFuncs","currentVersion","configurable","pop","startRow","oldRows","writable","watchKey","getOwnPropertyDescriptor","set","unwatchRow","ResizeColumns","startColumn","startWidth","prevHandle","variableHeight","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","resizable","mouseMove","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","ResizeObserver","entry","observe","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","formatCollapsedData","responsive","generateCollapsedContent","generateCollapsedRowContent","working","generateCollapsedRowData","mockCellComponent","listContents","div","SelectRow","selecting","lastClickedRow","selectPrev","selectedRows","_rowSelectionChanged","endSelect","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","metaKey","toggledRow","_selectRow","rowInfo","selectedRow","Sort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","newSortList","findSorter","clearColumnHeaders","setColumnHeader","_sortItem","_sortRow","el1Comp","el2Comp","el1","el2","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","localeCompare","time","boolean","array","calc","alphanum","as","bs","a1","b1","L","rd","isFinite","Validate","_extractValidator","parts","_buildValidator","parameters","validators","float","numeric","unique","cellData","_activeElement","_contains","_propTypes","_componentOrElement","_elementType","_ModalManager","_Portal","_getContainer","_ownerDocument","_assertThisInitialized","ReferenceError","modalManager","Modal","_React$Component","_args","exited","onPortalRendered","onShow","containerClassName","removeKeydownListener","handleDocumentKeyDown","removeFocusListener","enforceFocus","onHide","restoreFocus","restoreLastFocus","setDialogRef","setBackdropRef","handleHidden","_this$props","onExited","handleBackdropClick","onBackdropClick","keyboard","onEscapeKeyDown","_isMounted","currentActiveElement","renderBackdrop","_this$props2","Transition","backdropTransition","appear","nextProps","transition","getSnapshotBeforeUpdate","prevProps","lastFocus","_this$props3","_this$props4","renderDialog","_this$props4$role","onExit","onExiting","onEnter","onEntering","onEntered","dialogProps","aria-modal","newProps","omitProps","unmountOnExit","Fragment","bool","oneOfType","oneOf","Manager","backup","fakeEvent","done","parseDuration","_parseDuration","str","mult","maybeOpts","mapToProps","$mapContextToProps","consumers","_forwardRef","getDisplayName","ensureConsumer","Consumer","maybeArrayOfConsumers","_ref$forwardRefAs","forwardRefAs","SingleConsumer","contextTransform","_extends2","propsWithRef","_extends3","reduceRight","Context","_len2","contexts","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","exec","escaped","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","token","segment","attachKeys","re","flags","sensitive","strict","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","q","u","v","w","aa","ba","A","B","g","h","ca","C","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","D","E","refs","updater","F","G","isReactComponent","forceUpdate","H","isPureReactComponent","I","J","K","__self","__source","M","$$typeof","_owner","N","P","Q","keyPrefix","R","U","S","T",":","escape","ea","fa","V","da","W","X","Children","only","createRef","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","_context","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","StrictMode","Suspense","createFactory","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","Y","Z","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","Da","Ea","Fa","Ga","Ha","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","animation","Xa","Ya","Za","$a","ab","bb","db","eb","fb","gb","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","ib","eventPool","jb","destructor","hb","getPooled","persist","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","vb","detail","wb","zb","xb","altKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","datetime-local","email","month","password","tel","week","Mb","nodeName","Nb","correspondingUseElement","Ob","Pb","Rb","_valueTracker","stopTracking","Qb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","_debugOwner","_debugSource","fileName","lineNumber","kc","lc","mc","nc","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","rc","sc","tc","pc","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","controlled","xc","yc","zc","Ac","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","clientX","clientY","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","sibling","gd","elapsedTime","pseudoElement","jd","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","od","pd","dataTransfer","qd","targetTouches","changedTouches","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Nd","HTMLIFrameElement","contentWindow","Od","Qd","focusedElem","selectionRange","Md","selectionStart","selectionEnd","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","Zd","ae","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","mathml","svg","ge","he","ie","je","MSApp","execUnsafeLocalFunction","namespaceURI","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","me","ne","oe","setProperty","substring","pe","menuitem","area","base","br","embed","hr","img","keygen","meta","param","track","wbr","qe","se","te","ue","ve","we","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","He","Ie","Je","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","elementType","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","Ve","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","jf","kf","baseState","tf","_reactInternalFiber","lf","nf","mf","payload","of","pf","qf","rf","sf","uf","shouldComponentUpdate","vf","contextType","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","UNSAFE_componentWillMount","componentWillMount","zf","Af","_stringRef","Bf","Cf","Map","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","pg","lastRenderedReducer","dispatch","qg","lastRenderedState","eagerReducer","eagerState","rg","deps","sg","tg","ug","vg","wg","readContext","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","Qg","getDerivedStateFromError","Rg","pendingContext","Sg","timedOutAt","Tg","Ug","hf","We","hydrate","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","stack","kh","lh","mh","nh","oh","ph","WeakSet","qh","rh","sh","th","vh","wh","xh","yh","_reactRootContainer","zh","wasMultiple","Ce","uh","hi","Xh","has","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Zh","pendingCommitExpirationTime","ef","Pd","Yh","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","Ri","Ti","Mi","commit","unmount","createBatch","Vi","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","Wi","Xi","global","previous","priorityLevel","requestAnimationFrame","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","objPrototype","toBind","descriptor","wontBind","fn","boundFn","boundMethod","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","any","arrayOf","instanceOf","objectOf","exact","checkPropTypes","PropTypes","noGlobal","getProto","class2type","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","jQuery","init","rtrim","isArrayLike","jquery","num","pushStack","elems","ret","prevObject","each","elem","eq","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","makeArray","inArray","second","grep","invert","callbackExpect","guid","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","booleans","whitespace","identifier","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escapedWhitespace","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","nid","newSelector","newContext","qsa","toSelector","testContext","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","what","simple","forward","ofType","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","not","matcher","unmatched","elemLang","hash","hasFocus","selectedIndex","even","odd","lt","gt","radio","checkbox","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","special","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","tr","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","buildFragment","scripts","ignored","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","checkClone","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","isSimulated","offsetX","offsetY","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","replaceWith","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","rboxStyle","curCSS","computed","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","border","expand","expanded","propHooks","run","eased","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","accepts","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","finalText","crossDomain","host","hasContent","ifModified","beforeSend","nativeStatusText","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","parentOffset","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","_querySelectorAll","_reactIs","isValidElementType","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","_addClass","_removeClass","_hasClass","replaceClassName","origClass","classToRemove","_hyphenate","rUpper","currentStyle","rposition","runStyle","runtimeStyle","rsLeft","pixelLeft","removeProperty","supportedTransforms","_isWindow","innerWidth","bodyIsOverflowing","_ref2","_ref3","BLACKLIST","exclude","_WaitForContainer","onContainerResolved","WaitForContainer","setContainer","_container","componentOrElement","Uint16Array","listing","pre","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","read","fallbackFrame","renderDOM","Infinity","renderToStaticMarkup","renderToNodeStream","renderToStaticNodeStream","DateEditor_1","MultiSelectEditor_1","MultiValueFormatter_1","alert","age","dob","rating","passed","pets","colorOptions","red","green","yellow","editableColumns","data-custom-attr","newData","date_fns_1","inputCss","Editor","setValueOnSuccess","ev","onKeyPress","onBlur","valueDt","awareOfUnicodeTokens","onKeyUp","ReactTags","autofocus","handleDelete","newValues","handleAddition","handleBlur","parentElement","suggestions","tags","allowNew","autoresize","minQueryLength","Tag","Input","Suggestions","KEYS","CLASS_NAMES","rootFocused","selectedTag","selectedTagName","searchInput","suggestionActive","suggestionDisabled","superclass","focused","expandable","inputEventHandlers","onFocus","handleFocus","onInput","handleInput","onKeyDown","handleKeyDown","handleInputChange","ref$1","delimiters","delimiterChars","handleDelimiter","allowBackspace","deleteTag","suggestion","addTag","handleClick","addOnBlur","handleValidate","clearInputOnDelete","this$1","TagComponent","tagComponent","onDelete","aria-live","aria-relevant","inputAttributes","listboxId","suggestionsFilter","maxSuggestionsLength","SIZER_STYLES","STYLE_PROPS","inputWidth","copyInputStyles","updateInputWidth","inputStyle","sizer","aria-autocomplete","aria-label","aria-owns","aria-activedescendant","aria-expanded","escapeForRegExp","markIt","filterSuggestions","handleMouseDown","aria-disabled","createCellEl","_createChainableTypeChecker","toInteger","dirtyNumber","NaN","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","dirtyOptions","additionalDigits","RangeError","dateStrings","dateString","timeString","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","setUTCFullYear","validateDate","dayOfYear","isLeapYear","isLeapYearIndex","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","parseDate","timestamp","hours","minutes","validateTime","seconds","parseTime","timezoneString","absoluteOffset","validateTimezone","parseTimezone","isoWeekYear","getUTCDay","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","addDays","dirtyAmount","amount","addMilliseconds","addHours","startOfWeek","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","getDay","setHours","cloneObject","dirtyObject","startOfISOWeek","startOfWeekOptions","getISOWeekYear","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","startOfDay","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","setISOWeekYear","dirtyISOWeekYear","addISOWeekYears","addMinutes","getDaysInMonth","monthIndex","getMonth","lastDayOfMonth","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","setMonth","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","minDistance","timeToCompare","currentDate","distance","closestTo","compareAsc","dateLeft","dateRight","compareDesc","differenceInCalendarISOWeekYears","MILLISECONDS_IN_WEEK","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarMonths","getQuarter","differenceInCalendarQuarters","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","differenceInDays","sign","difference","differenceInMilliseconds","differenceInHours","subISOWeekYears","differenceInISOWeekYears","differenceInMinutes","differenceInMonths","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","eachDayOfInterval","dirtyInterval","startDate","dates","eachWeekOfInterval","endDate","startDateWeek","endDateWeek","weeks","currentWeek","isSunday","isWeekend","eachWeekendOfInterval","dateInterval","weekends","startOfMonth","endOfMonth","eachWeekendOfMonth","startOfYear","cleanDate","endOfYear","eachWeekendOfYear","endOfDay","endOfDecade","decade","endOfHour","setMinutes","endOfWeek","endOfISOWeek","endOfWeekOptions","endOfISOWeekYear","setMilliseconds","getMilliseconds","endOfMinute","endOfQuarter","currentMonth","endOfSecond","formatDistanceLocale","lessThanXSeconds","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","formatDistance","addSuffix","comparison","formatRelative","baseDate","ordinalNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","defaulFormattingWidth","parsePattern","parseResult","firstWeekContainsDate","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","getUTCFullYear","getUTCISOWeek","startOfUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","getUTCWeek","firstWeek","startOfUTCWeekYear","dayPeriodEnum","addLeadingZeros","targetLength","formatTimezone","dirtyDelimeter","delimeter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezoneShort","signedYear","signedWeekYear","weekYear","getUTCMonth","isoWeek","dayOfMonth","setUTCMonth","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","timezoneOffset","_originalDate","originalDate","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","defaultLocale","utcDate","formatterOptions","firstCharacter","longFormatter","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","dirtyBaseDate","localizeOptions","months","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethodFn","roundingMethod","utcBaseDate","fromUnixTime","dirtyUnixTime","getDayOfYear","getDaysInYear","getDecade","getHours","getISODay","getISOWeek","getISOWeeksInYear","thisYear","valueOf","getMinutes","getOverlappingDaysInIntervals","differenceInMs","getSeconds","getUnixTime","getWeekYear","startOfWeekYear","getWeek","getWeekOfMonth","startWeekDay","getWeeksInMonth","getYear","isAfter","isBefore","isDate","isEqual","dirtyLeftDate","dirtyRightDate","isFirstDayOfMonth","isFriday","isLastDayOfMonth","isMonday","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameWeekOptions","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","startOfMinute","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameMonth","startOfQuarter","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameYear","isSaturday","isThursday","isTuesday","isWednesday","isWithinInterval","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfWeekOptions","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","setUTCDay","dirtyDay","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","parsers","priority","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","formatString","subFnOptions","setters","dateToSystemTimezone","uniquePrioritySetters","setterArray","convertedDate","roundToNearestMinutes","dirtyNearestTo","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","currentDay","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyMilliseconds","dirtyMinutes","dirtyMonth","setQuarter","dirtyQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","subDays","subHours","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","formatDistance_formatDistance","formatRelative_formatRelative","lastDayOfMonth_lastDayOfMonth","isAbsolute","pathname","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","part","valueEqual","isProduction","invariant","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unlisten","_possibleConstructorReturn","Router","instance","Constructor","_classCallCheck","computeMatch","_inherits","router","isExact","BrowserRouter","createHistory","patternCache","cacheCount","compilePath","cacheKey","compiledPattern","matchPath","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","Switch","_element$props","pathProp","computedMatch","isEmptyChildren","Route","nextContext","_context$router","staticContext","ControlRegister","[object Object]","_Single","Controls","RegisterControl","control","UnregisterControl","EventRegister","Listeners","RegisterListener","includes","UnregistListener","e2","EventAction","Log","BaseControl","super","Name","autoBind","GlobalState","eventRegister","Msg","controlRegister","IsEventListener","Get","Configuration","isModifiedEvent","Link","innerRef","_objectWithoutProperties","ApiQuery","AuthServices_AuthServices","URL_Auth","URL_UserInfo","AuthCoockieName","login","Login","Password","Successe","_SetTocken","Token","Logout","IsAuth","_GetTocken","_getCookie","decodeURIComponent","MenuControl","authServices","AuthServices","Event_OnAuthChange","react_default","es_Link","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","ThemeProvider","pascalCase","camelize","createWithBsPrefix","_ref$Component","BsComponent","bsPrefix","_ref2$as","resolvedPrefix","FormContext","controlId","FormGroup","_ref$as","Feedback","FormControl","_classes","isInvalid","_classes2","_classes3","FormCheckInput","isStatic","_useContext","custom","FormCheckLabel","FormCheck","inline","feedback","innerFormContext","hasLabel","Label","DEVICE_SIZES","Col","spans","brkPoint","_propValue$span","infix","FormLabel","srOnly","FormText","Form","validated","Check","Text","Notification_Notification","Timestring","UserControl","UserName","GetUserInfoAsync","Notification","MesEr","ResMessage","AuthClick","AuthAsync","LogoutClick","es_Form","FileExplorerServices_FileExplorerServices","URL_DirectoryItems","URL_ScanDirectory","URL_Delete","URL_Move","URL_Download","URL_CreateDirectory","elemID","directoryID","NewParent","OpenDownload","dirname","ParentID","createChainedFunction","funcs","acc","isTrivialHref","SafeAnchor","_this$props2$as","Button","variant","FileExplorerRow","ShoSelectColumn","Select","GetDirectory","CurrentDirectoryName","GetData","GetDataID","IsCheked","OnDirectoryClick","ChangeEvent","Type","es_Button","Size","FileExplorerControl","ChildRows","fileExplorerServices","FileExplorerServices","ExplorerControl","Event_OnItemsChange_Main","LoadDirectory","Event_OnItemsChange_Move","OnBackClick","OnSortClick","SortProperty","orders","ArrayCompare","OnScanDirClick","ScanDirectoryAsync","DirectoryGetItemsAsync","GetSelectedID","RooDirectoryID","ParentName","LogicPath","FileExplorerRow_FileExplorerRow","ParentComponent","esm_config","UNMOUNTED","EXITED","ENTERING","ENTERED","initialStatus","isMounting","enter","appearStatus","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","childProps","TransitionGroupContext","EXITING","_fadeStyles","fadeStyles","Fade","handleEnter","triggerBrowserReflow","innerProps","ModalDialog","centered","scrollable","dialogClass","useCommittedRef","useEventCallback","CloseButton","aria-hidden","ModalContext","ModalHeader","closeLabel","Selector","dialogAs","BootstrapModalManager","adjustAndStore","actual","dataset","restore","getScrollbarSize","DialogTransition","BackdropTransition","modalContext","setModalRef","_modal","handleDialogMouseDown","_waitingForMouseUp","handleMouseUp","_ignoreBackdropClick","updateDialogStyle","handleEntering","_len3","_key3","handleWindowResize","handleExited","_len4","_key4","backdropClassName","containerIsOverflowing","modalIsOverflowing","_this$props5","dialogClassName","Dialog","clickHandler","baseModalStyle","BaseModal","DecoratedModal","isClassy","_opts","_opts$forwardRefAs","createBootstrapComponent","Body","Header","Title","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","ExplorerActionsControl","MoveWindowsShow","MoveExplorer","MainExplorer","OnDownloadClick","OnDeleteClick","promises","DeleteAsync","Result","MesOk","OnMoveClick","OnCreateDirectoryClick","DirectoryName","CreateDirectoryAsync","OnMoveWindowCloseClick","OnMoveWindowClick","MoveAsync","es_Modal","aria-labelledby","FileExplorerControl_FileExplorerControl","UploadServices_UploadServices","URL_Start","URL_Upload","URL_Cansel","upload_chunk_size","_ContinueDownload","_file","_ParentID","OnProggresseChange","OnIDReceived","OnError","startByte","stopByte","bin_data","ChunkNumb","State","chunk","parent_id","start_info","_StartUploadAsync","_ReadBlobAsync","_UploadBlobAsync","Cansel","UploaderControl","ButtonUploadEnable","_state","FileInfo","ResultMsg","uploadServices","UploadServices","OnProgresseChange","UploadClick","UploadFileAsync","CancelClick","Process","ButtonToolbar","BootstrapControl","ToastifyTest","Leght","es_ButtonToolbar","FileExplorerPage","url_ID","searchParams","OnRegistersClick","MenuControl_MenuControl","UserControl_UserControl","ExplorerActionsControl_ExplorerActionsControl","UploaderControl_UploaderControl","BootstrapControl_BootstrapControl","isProp","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","SelectableContext","makeEventKey","eventKey","NavContext","TabContext","AbstractNav","navContext","handleSelect","parentOnSelect","nextActiveChild","getNextActiveChild","rbEventKey","_needsRefocus","attachRef","listNode","activeKey","getControlledId","getControllerId","activeChild","nextIndex","mapContextToProps","tabContext","NavItem","AbstractNavItem","navKey","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","cardHeaderBsPrefix","_useUncontrolled","fieldName","Utils","propsValue","handlerName","_useState","stateValue","wasProp","propsHandler","useUncontrolled","_useUncontrolled$as","justify","navbar","navbarContext","NavbarContext","cardContext","CardContext","Item","UserServices_UserServices","URL_GetUsers","URL_SetUsers","Groups","users","CreateUser","Active","Changes","EnterInGroup","CreateStubUser","Users","ShoGroups","UserGroups","UserListControl","userServices","UserServices","ButtonFormatter","OnGroupsClick","DeleteUserClick","columns_groups","DownloadUsers","GetUsersAsync","UploadUsers","SetUsersAsync","OnCellChange","data_row","OnCellChange_Groups","UpdateClick","CreateUserCick","new_user","user","OnGroupsClose","lib","AdministratorPage","ActiveWindows","OnUsersClick","es_Nav","UserListControl_UserListControl","es_BrowserRouter","react_router_dom_es_Switch","react_router_dom_es_Route"],"mappings":"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","file":"app_bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/build\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 87);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = qsa;\n// Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n var maybeID = selector[0] === '#',\n maybeClass = selector[0] === '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n isSimple = simpleSelectorRE.test(nameOnly),\n found;\n\n if (isSimple) {\n if (maybeID) {\n element = element.getElementById ? element : document;\n return (found = element.getElementById(nameOnly)) ? [found] : [];\n }\n\n if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n return toArray(element.getElementsByTagName(selector));\n }\n\n return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexports.clone = clone;\nfunction isSameArray(a, b) {\n var i = a.length;\n if (i !== b.length) {\n return false;\n }\n while (i--) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexports.isSameArray = isSameArray;\nfunction reactFormatter(JSX) {\n return function customFormatter(cell, formatterParams, onRendered) {\n //cell - the cell component\n //formatterParams - parameters set for the column\n //onRendered - function to call when the formatter has been rendered\n onRendered(function () {\n var cellEl = cell.getElement();\n var CompWithMoreProps = React.cloneElement(JSX, { cell: cell });\n react_dom_1.render(CompWithMoreProps, cellEl.querySelector('.formatterCell'));\n });\n return '<div class=\"formatterCell\"></div>';\n };\n}\nexports.reactFormatter = reactFormatter;\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(require(\"./listen\"));\n\nexports.listen = _listen.default;\nvar _default = {\n on: _on.default,\n off: _off.default,\n filter: _filter.default,\n listen: _listen.default\n};\nexports.default = _default;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction forwardRef(renderFn, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n propTypes = _ref.propTypes,\n defaultProps = _ref.defaultProps,\n _ref$allowFallback = _ref.allowFallback,\n allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n var render = function render(props, ref) {\n return renderFn(props, ref);\n };\n\n return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n return render(props, null);\n }, {\n displayName: displayName,\n propTypes: propTypes,\n defaultProps: defaultProps\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(require(\"dom-helpers/class\"));\n\nvar _style = _interopRequireDefault(require(\"dom-helpers/style\"));\n\nvar _scrollbarSize = _interopRequireDefault(require(\"dom-helpers/util/scrollbarSize\"));\n\nvar _isOverflowing = _interopRequireDefault(require(\"./utils/isOverflowing\"));\n\nvar _manageAriaHidden = require(\"./utils/manageAriaHidden\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = (0, _scrollbarSize.default)();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden' // we are only interested in the actual `style` here\n // becasue we will override it\n\n };\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n }\n\n (0, _style.default)(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var style = containerState.style;\n Object.keys(style).forEach(function (key) {\n container.style[key] = style[key];\n });\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.hideSiblings)(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: (0, _isOverflowing.default)(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class.default.addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.showSiblings)(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n (0, _manageAriaHidden.ariaHidden)(false, dialog);\n (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\nexports.__esModule = true;\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar React15Tabulator_1 = require(\"./React15Tabulator\");\nvar ReactTabulatorExample_1 = require(\"./ReactTabulatorExample\");\nvar Utils_1 = require(\"./Utils\");\nmodule.exports = {\n ReactTabulator: ReactTabulator_1[\"default\"],\n React15Tabulator: React15Tabulator_1[\"default\"],\n ReactTabulatorExample: ReactTabulatorExample_1[\"default\"],\n reactFormatter: Utils_1.reactFormatter\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n listen = function listen(node, eventName, handler, capture) {\n (0, _on.default)(node, eventName, handler, capture);\n return function () {\n (0, _off.default)(node, eventName, handler, capture);\n };\n };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n if (container == null) return defaultContainer;\n container = typeof container === 'function' ? container() : container;\n return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { // props.options are passed to Tabulator's options.\n data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // React 16.5.x - \"getDerivedStateFromProps\" replaces both \"componentWillMount\" & \"componentWillReceiveProps\"\n // This function will be ignored when running with React 15.6.x\n default_1.getDerivedStateFromProps = function (props, state) {\n // console.log('- getDerivedStateFromProps', props, state);\n var noData = !props.data || props.data.length === 0;\n if (!state && noData) {\n // first time (similar to: componentWillMount)\n return null;\n }\n if (state && state.data.length === 0 && props.data.length === 0) {\n return null;\n }\n if (state && props.data) {\n // this triggers componentDidUpdate\n if (!Utils_1.isSameArray(state.data, props.data)) {\n return __assign({}, state, { data: props.data });\n }\n }\n return {};\n };\n // componentDidUpdate(prevProps, prevState)\n default_1.prototype.componentDidUpdate = function () {\n this.table.setData(this.state.data);\n };\n default_1.prototype.render = function () {\n var _this = this;\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.pickSVGProps = exports.pickHTMLProps = undefined;\n\n\tvar _pickHtmlProps = __webpack_require__(1);\n\n\tvar _pickHtmlProps2 = _interopRequireDefault(_pickHtmlProps);\n\n\tvar _pickSvgProps = __webpack_require__(5);\n\n\tvar _pickSvgProps2 = _interopRequireDefault(_pickSvgProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.pickHTMLProps = _pickHtmlProps2.default;\n\texports.pickSVGProps = _pickSvgProps2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _htmlAttributes = __webpack_require__(2);\n\n\tvar _htmlAttributes2 = _interopRequireDefault(_htmlAttributes);\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar extra = ['about', 'datatype', 'defaultChecked', 'defaultValue', 'inlist', 'prefix', 'property', 'resource', 'typeof', 'vocab', 'autoCapitalize', 'autoCorrect', 'color', 'itemProp', 'itemScope', 'itemType', 'itemRef', 'itemID', 'security', 'unselectable', 'results', 'autoSave', 'allowtransparency', 'charSet', 'ismap', 'typemustmatch',\n\n\t// handlers:\n\t'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onFocus', 'onInput', 'onKeyDown', 'onKeyPress', 'onKeyUp', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'onScroll', 'onSubmit', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onWheel', 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate', 'onInvalid', 'onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut', 'onSelect', 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting', 'onLoad', 'onError', 'onAnimationStart', 'onAnimationEnd', 'onAnimationIteration', 'onTransitionEnd', 'onToggle'];\n\n\tvar ReactHTMLAttrs = _extends({}, _htmlAttributes2.default, extra.reduce(function (attrs, prop) {\n\t attrs[prop] = prop;\n\t return attrs;\n\t}, {}));\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(ReactHTMLAttrs[prop]) || /^(data|aria)-/.test(prop);\n\t});\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * html-attributes\n\t * https://github.com/alexmingoia/html-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module html-attributes\n\t */\n\n\tmodule.exports = {\n\t \"abbr\": \"abbr\",\n\t \"accept\": \"accept\",\n\t \"acceptCharset\": \"accept-charset\",\n\t \"accessKey\": \"accesskey\",\n\t \"action\": \"action\",\n\t \"allowFullScreen\": \"allowfullscreen\",\n\t \"allowTransparency\": \"allowtransparency\",\n\t \"alt\": \"alt\",\n\t \"async\": \"async\",\n\t \"autoComplete\": \"autocomplete\",\n\t \"autoFocus\": \"autofocus\",\n\t \"autoPlay\": \"autoplay\",\n\t \"cellPadding\": \"cellpadding\",\n\t \"cellSpacing\": \"cellspacing\",\n\t \"challenge\": \"challenge\",\n\t \"charset\": \"charset\",\n\t \"checked\": \"checked\",\n\t \"cite\": \"cite\",\n\t \"class\": \"class\",\n\t \"className\": \"class\",\n\t \"cols\": \"cols\",\n\t \"colSpan\": \"colspan\",\n\t \"command\": \"command\",\n\t \"content\": \"content\",\n\t \"contentEditable\": \"contenteditable\",\n\t \"contextMenu\": \"contextmenu\",\n\t \"controls\": \"controls\",\n\t \"coords\": \"coords\",\n\t \"crossOrigin\": \"crossorigin\",\n\t \"data\": \"data\",\n\t \"dateTime\": \"datetime\",\n\t \"default\": \"default\",\n\t \"defer\": \"defer\",\n\t \"dir\": \"dir\",\n\t \"disabled\": \"disabled\",\n\t \"download\": \"download\",\n\t \"draggable\": \"draggable\",\n\t \"dropzone\": \"dropzone\",\n\t \"encType\": \"enctype\",\n\t \"for\": \"for\",\n\t \"form\": \"form\",\n\t \"formAction\": \"formaction\",\n\t \"formEncType\": \"formenctype\",\n\t \"formMethod\": \"formmethod\",\n\t \"formNoValidate\": \"formnovalidate\",\n\t \"formTarget\": \"formtarget\",\n\t \"frameBorder\": \"frameBorder\",\n\t \"headers\": \"headers\",\n\t \"height\": \"height\",\n\t \"hidden\": \"hidden\",\n\t \"high\": \"high\",\n\t \"href\": \"href\",\n\t \"hrefLang\": \"hreflang\",\n\t \"htmlFor\": \"for\",\n\t \"httpEquiv\": \"http-equiv\",\n\t \"icon\": \"icon\",\n\t \"id\": \"id\",\n\t \"inputMode\": \"inputmode\",\n\t \"isMap\": \"ismap\",\n\t \"itemId\": \"itemid\",\n\t \"itemProp\": \"itemprop\",\n\t \"itemRef\": \"itemref\",\n\t \"itemScope\": \"itemscope\",\n\t \"itemType\": \"itemtype\",\n\t \"kind\": \"kind\",\n\t \"label\": \"label\",\n\t \"lang\": \"lang\",\n\t \"list\": \"list\",\n\t \"loop\": \"loop\",\n\t \"manifest\": \"manifest\",\n\t \"max\": \"max\",\n\t \"maxLength\": \"maxlength\",\n\t \"media\": \"media\",\n\t \"mediaGroup\": \"mediagroup\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"minLength\": \"minlength\",\n\t \"multiple\": \"multiple\",\n\t \"muted\": \"muted\",\n\t \"name\": \"name\",\n\t \"noValidate\": \"novalidate\",\n\t \"open\": \"open\",\n\t \"optimum\": \"optimum\",\n\t \"pattern\": \"pattern\",\n\t \"ping\": \"ping\",\n\t \"placeholder\": \"placeholder\",\n\t \"poster\": \"poster\",\n\t \"preload\": \"preload\",\n\t \"radioGroup\": \"radiogroup\",\n\t \"readOnly\": \"readonly\",\n\t \"rel\": \"rel\",\n\t \"required\": \"required\",\n\t \"role\": \"role\",\n\t \"rows\": \"rows\",\n\t \"rowSpan\": \"rowspan\",\n\t \"sandbox\": \"sandbox\",\n\t \"scope\": \"scope\",\n\t \"scoped\": \"scoped\",\n\t \"scrolling\": \"scrolling\",\n\t \"seamless\": \"seamless\",\n\t \"selected\": \"selected\",\n\t \"shape\": \"shape\",\n\t \"size\": \"size\",\n\t \"sizes\": \"sizes\",\n\t \"sortable\": \"sortable\",\n\t \"span\": \"span\",\n\t \"spellCheck\": \"spellcheck\",\n\t \"src\": \"src\",\n\t \"srcDoc\": \"srcdoc\",\n\t \"srcSet\": \"srcset\",\n\t \"start\": \"start\",\n\t \"step\": \"step\",\n\t \"style\": \"style\",\n\t \"tabIndex\": \"tabindex\",\n\t \"target\": \"target\",\n\t \"title\": \"title\",\n\t \"translate\": \"translate\",\n\t \"type\": \"type\",\n\t \"typeMustMatch\": \"typemustmatch\",\n\t \"useMap\": \"usemap\",\n\t \"value\": \"value\",\n\t \"width\": \"width\",\n\t \"wmode\": \"wmode\",\n\t \"wrap\": \"wrap\"\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _lodash = __webpack_require__(4);\n\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = function (filter) {\n\t return function (props) {\n\t if (!(0, _lodash2.default)(props)) throw new Error('props should be a plain object');\n\t var out = {};\n\t for (var key in props) {\n\t if (props.hasOwnProperty(key) && filter(key)) {\n\t out[key] = props[key];\n\t }\n\t }\n\t return out;\n\t };\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\n\t/** `Object#toString` result references. */\n\tvar objectTag = '[object Object]';\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/** Used to infer the `Object` constructor. */\n\tvar objectCtorString = funcToString.call(Object);\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Built-in value references. */\n\tvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.8.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\tfunction isPlainObject(value) {\n\t if (!isObjectLike(value) ||\n\t objectToString.call(value) != objectTag || isHostObject(value)) {\n\t return false;\n\t }\n\t var proto = getPrototype(value);\n\t if (proto === null) {\n\t return true;\n\t }\n\t var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n\t return (typeof Ctor == 'function' &&\n\t Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n\t}\n\n\tmodule.exports = isPlainObject;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tvar _svgAttributes = __webpack_require__(6);\n\n\tvar _svgAttributes2 = _interopRequireDefault(_svgAttributes);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(_svgAttributes2.default[prop]);\n\t});\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * svg-attributes\n\t * https://github.com/alexmingoia/svg-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module svg-attributes\n\t */\n\n\tmodule.exports = {\n\t /**\n\t * Regular attributes\n\t */\n\t \"accentHeight\": \"accent-height\",\n\t \"accumulate\": \"accumulate\",\n\t \"additive\": \"additive\",\n\t \"alphabetic\": \"alphabetic\",\n\t \"amplitude\": \"amplitude\",\n\t \"arabicForm\": \"arabic-form\",\n\t \"ascent\": \"ascent\",\n\t \"attributeName\": \"attributeName\",\n\t \"attributeType\": \"attributeType\",\n\t \"azimuth\": \"azimuth\",\n\t \"baseFrequency\": \"baseFrequency\",\n\t \"baseProfile\": \"baseProfile\",\n\t \"bbox\": \"bbox\",\n\t \"begin\": \"begin\",\n\t \"bias\": \"bias\",\n\t \"by\": \"by\",\n\t \"calcMode\": \"calcMode\",\n\t \"capHeight\": \"cap-height\",\n\t \"class\": \"class\",\n\t \"clipPathUnits\": \"clipPathUnits\",\n\t \"contentScriptType\": \"contentScriptType\",\n\t \"contentStyleType\": \"contentStyleType\",\n\t \"cx\": \"cx\",\n\t \"cy\": \"cy\",\n\t \"d\": \"d\",\n\t \"descent\": \"descent\",\n\t \"diffuseConstant\": \"diffuseConstant\",\n\t \"divisor\": \"divisor\",\n\t \"dur\": \"dur\",\n\t \"dx\": \"dx\",\n\t \"dy\": \"dy\",\n\t \"edgeMode\": \"edgeMode\",\n\t \"elevation\": \"elevation\",\n\t \"end\": \"end\",\n\t \"exponent\": \"exponent\",\n\t \"externalResourcesRequired\": \"externalResourcesRequired\",\n\t \"fill\": \"fill\",\n\t \"filterRes\": \"filterRes\",\n\t \"filterUnits\": \"filterUnits\",\n\t \"fontFamily\": \"font-family\",\n\t \"fontSize\": \"font-size\",\n\t \"fontStretch\": \"font-stretch\",\n\t \"fontStyle\": \"font-style\",\n\t \"format\": \"format\",\n\t \"from\": \"from\",\n\t \"fx\": \"fx\",\n\t \"fy\": \"fy\",\n\t \"g1\": \"g1\",\n\t \"g2\": \"g2\",\n\t \"glyphame\": \"glyph-name\",\n\t \"glyphRef\": \"glyphRef\",\n\t \"gradientTransform\": \"gradientTransform\",\n\t \"gradientUnits\": \"gradientUnits\",\n\t \"hanging\": \"hanging\",\n\t \"height\": \"height\",\n\t \"horizAdvX\": \"horiz-adv-x\",\n\t \"horizOriginX\": \"horiz-origin-x\",\n\t \"horizOriginY\": \"horiz-origin-y\",\n\t \"id\": \"id\",\n\t \"ideographic\": \"ideographic\",\n\t \"in\": \"in\",\n\t \"in2\": \"in2\",\n\t \"intercept\": \"intercept\",\n\t \"k\": \"k\",\n\t \"k1\": \"k1\",\n\t \"k2\": \"k2\",\n\t \"k3\": \"k3\",\n\t \"k4\": \"k4\",\n\t \"kernelMatrix\": \"kernelMatrix\",\n\t \"kernelUnitLength\": \"kernelUnitLength\",\n\t \"keyPoints\": \"keyPoints\",\n\t \"keySplines\": \"keySplines\",\n\t \"keyTimes\": \"keyTimes\",\n\t \"lang\": \"lang\",\n\t \"lengthAdjust\": \"lengthAdjust\",\n\t \"limitingConeAngle\": \"limitingConeAngle\",\n\t \"local\": \"local\",\n\t \"markerHeight\": \"markerHeight\",\n\t \"markerUnits\": \"markerUnits\",\n\t \"markerWidth\": \"markerWidth\",\n\t \"maskContentUnits\": \"maskContentUnits\",\n\t \"maskUnits\": \"maskUnits\",\n\t \"mathematical\": \"mathematical\",\n\t \"max\": \"max\",\n\t \"media\": \"media\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"mode\": \"mode\",\n\t \"name\": \"name\",\n\t \"numOctaves\": \"numOctaves\",\n\t \"offset\": \"offset\",\n\t \"onAbort\": \"onabort\",\n\t \"onActivate\": \"onactivate\",\n\t \"onBegin\": \"onbegin\",\n\t \"onClick\": \"onclick\",\n\t \"onEnd\": \"onend\",\n\t \"onError\": \"onerror\",\n\t \"onFocusIn\": \"onfocusin\",\n\t \"onFocusOut\": \"onfocusout\",\n\t \"onLoad\": \"onload\",\n\t \"onMouseDown\": \"onmousedown\",\n\t \"onMouseMove\": \"onmousemove\",\n\t \"onMouseOut\": \"onmouseout\",\n\t \"onMouseOver\": \"onmouseover\",\n\t \"onMouseUp\": \"onmouseup\",\n\t \"onRepeat\": \"onrepeat\",\n\t \"onResize\": \"onresize\",\n\t \"onScroll\": \"onscroll\",\n\t \"onUnload\": \"onunload\",\n\t \"onZoom\": \"onzoom\",\n\t \"operator\": \"operator\",\n\t \"order\": \"order\",\n\t \"orient\": \"orient\",\n\t \"orientation\": \"orientation\",\n\t \"origin\": \"origin\",\n\t \"overlinePosition\": \"overline-position\",\n\t \"overlineThickness\": \"overline-thickness\",\n\t \"panose1\": \"panose-1\",\n\t \"path\": \"path\",\n\t \"pathLength\": \"pathLength\",\n\t \"patternContentUnits\": \"patternContentUnits\",\n\t \"patternTransform\": \"patternTransform\",\n\t \"patternUnits\": \"patternUnits\",\n\t \"points\": \"points\",\n\t \"pointsAtX\": \"pointsAtX\",\n\t \"pointsAtY\": \"pointsAtY\",\n\t \"pointsAtZ\": \"pointsAtZ\",\n\t \"preserveAlpha\": \"preserveAlpha\",\n\t \"preserveAspectRatio\": \"preserveAspectRatio\",\n\t \"primitiveUnits\": \"primitiveUnits\",\n\t \"r\": \"r\",\n\t \"radius\": \"radius\",\n\t \"refX\": \"refX\",\n\t \"refY\": \"refY\",\n\t \"renderingIntent\": \"rendering-intent\",\n\t \"repeatCount\": \"repeatCount\",\n\t \"repeatDur\": \"repeatDur\",\n\t \"requiredExtensions\": \"requiredExtensions\",\n\t \"requiredFeatures\": \"requiredFeatures\",\n\t \"restart\": \"restart\",\n\t \"result\": \"result\",\n\t \"rotate\": \"rotate\",\n\t \"rx\": \"rx\",\n\t \"ry\": \"ry\",\n\t \"scale\": \"scale\",\n\t \"seed\": \"seed\",\n\t \"slope\": \"slope\",\n\t \"spacing\": \"spacing\",\n\t \"specularConstant\": \"specularConstant\",\n\t \"specularExponent\": \"specularExponent\",\n\t \"spreadMethod\": \"spreadMethod\",\n\t \"startOffset\": \"startOffset\",\n\t \"stdDeviation\": \"stdDeviation\",\n\t \"stemh\": \"stemh\",\n\t \"stemv\": \"stemv\",\n\t \"stitchTiles\": \"stitchTiles\",\n\t \"strikethroughPosition\": \"strikethrough-position\",\n\t \"strikethroughThickness\": \"strikethrough-thickness\",\n\t \"string\": \"string\",\n\t \"style\": \"style\",\n\t \"surfaceScale\": \"surfaceScale\",\n\t \"systemLanguage\": \"systemLanguage\",\n\t \"tableValues\": \"tableValues\",\n\t \"target\": \"target\",\n\t \"targetX\": \"targetX\",\n\t \"targetY\": \"targetY\",\n\t \"textLength\": \"textLength\",\n\t \"title\": \"title\",\n\t \"to\": \"to\",\n\t \"transform\": \"transform\",\n\t \"type\": \"type\",\n\t \"u1\": \"u1\",\n\t \"u2\": \"u2\",\n\t \"underlinePosition\": \"underline-position\",\n\t \"underlineThickness\": \"underline-thickness\",\n\t \"unicode\": \"unicode\",\n\t \"unicodeRange\": \"unicode-range\",\n\t \"unitsPerEm\": \"units-per-em\",\n\t \"vAlphabetic\": \"v-alphabetic\",\n\t \"vHanging\": \"v-hanging\",\n\t \"vIdeographic\": \"v-ideographic\",\n\t \"vMathematical\": \"v-mathematical\",\n\t \"values\": \"values\",\n\t \"version\": \"version\",\n\t \"vertAdvY\": \"vert-adv-y\",\n\t \"vertOriginX\": \"vert-origin-x\",\n\t \"vertOriginY\": \"vert-origin-y\",\n\t \"viewBox\": \"viewBox\",\n\t \"viewTarget\": \"viewTarget\",\n\t \"width\": \"width\",\n\t \"widths\": \"widths\",\n\t \"x\": \"x\",\n\t \"xHeight\": \"x-height\",\n\t \"x1\": \"x1\",\n\t \"x2\": \"x2\",\n\t \"xChannelSelector\": \"xChannelSelector\",\n\t \"xlink\": \"xlink\",\n\t \"xml\": \"xml\",\n\t \"y\": \"y\",\n\t \"y1\": \"y1\",\n\t \"y2\": \"y2\",\n\t \"yChannelSelector\": \"yChannelSelector\",\n\t \"z\": \"z\",\n\t \"zoomAndPan\": \"zoomAndPan\",\n\t /**\n\t * Presentation attributes\n\t */\n\t \"alignmentBaseline\": \"alignment-baseline\",\n\t \"baselineShift\": \"baseline-shift\",\n\t \"clipPath\": \"clip-path\",\n\t \"clipRule\": \"clip-rule\",\n\t \"clip\": \"clip\",\n\t \"colorInterpolationFilters\": \"color-interpolation-filters\",\n\t \"colorInterpolation\": \"color-interpolation\",\n\t \"colorProfile\": \"color-profile\",\n\t \"colorRendering\": \"color-rendering\",\n\t \"color\": \"color\",\n\t \"cursor\": \"cursor\",\n\t \"direction\": \"direction\",\n\t \"display\": \"display\",\n\t \"dominantBaseline\": \"dominant-baseline\",\n\t \"enableBackground\": \"enable-background\",\n\t \"fillOpacity\": \"fill-opacity\",\n\t \"fillRule\": \"fill-rule\",\n\t \"filter\": \"filter\",\n\t \"floodColor\": \"flood-color\",\n\t \"floodOpacity\": \"flood-opacity\",\n\t \"fontSizeAdjust\": \"font-size-adjust\",\n\t \"fontVariant\": \"font-variant\",\n\t \"fontWeight\": \"font-weight\",\n\t \"glyphOrientationHorizontal\": \"glyph-orientation-horizontal\",\n\t \"glyphOrientationVertical\": \"glyph-orientation-vertical\",\n\t \"imageRendering\": \"image-rendering\",\n\t \"kerning\": \"kerning\",\n\t \"letterSpacing\": \"letter-spacing\",\n\t \"lightingColor\": \"lighting-color\",\n\t \"markerEnd\": \"marker-end\",\n\t \"markerMid\": \"marker-mid\",\n\t \"markerStart\": \"marker-start\",\n\t \"mask\": \"mask\",\n\t \"opacity\": \"opacity\",\n\t \"overflow\": \"overflow\",\n\t \"pointerEvents\": \"pointer-events\",\n\t \"shapeRendering\": \"shape-rendering\",\n\t \"stopColor\": \"stop-color\",\n\t \"stopOpacity\": \"stop-opacity\",\n\t \"strokeDasharray\": \"stroke-dasharray\",\n\t \"strokeDashoffset\": \"stroke-dashoffset\",\n\t \"strokeLinecap\": \"stroke-linecap\",\n\t \"strokeLinejoin\": \"stroke-linejoin\",\n\t \"strokeMiterlimit\": \"stroke-miterlimit\",\n\t \"strokeOpacity\": \"stroke-opacity\",\n\t \"strokeWidth\": \"stroke-width\",\n\t \"stroke\": \"stroke\",\n\t \"textAnchor\": \"text-anchor\",\n\t \"textDecoration\": \"text-decoration\",\n\t \"textRendering\": \"text-rendering\",\n\t \"unicodeBidi\": \"unicode-bidi\",\n\t \"visibility\": \"visibility\",\n\t \"wordSpacing\": \"word-spacing\",\n\t \"writingMode\": \"writing-mode\"\n\t};\n\n\n/***/ }\n/******/ ]);","\"use strict\";\nexports.__esModule = true;\nvar server_1 = require(\"react-dom/server\");\n// .prettierignore (to keep relevant props together)\nvar NOOPS = function () { };\n// get callbacks from props (default: NOOP) to set them to Tabulator options later.\nexports.propsToOptions = function (props) {\n var output = {};\n var defaultOptions = ['height', 'layout', 'layoutColumnsOnNewData', 'columnMinWidth', 'columnVertAlign',\n 'resizableColumns', 'resizableRows', 'autoResize', 'tooltips', 'tooltipsHeader', 'tooltipGenerationMode',\n 'initialSort', 'initialFilter', 'footerElement', 'index', 'keybindings', 'clipboard', 'clipboardCopyStyled',\n 'clipboardCopySelector', 'clipboardCopyFormatter', 'clipboardCopyHeader', 'clipboardPasteParser',\n 'clipboardPasteAction', 'rowFormatter', 'placeholder'];\n for (var _i = 0, defaultOptions_1 = defaultOptions; _i < defaultOptions_1.length; _i++) {\n var opt = defaultOptions_1[_i];\n if (typeof props[opt] !== 'undefined') {\n output[opt] = props[opt];\n }\n }\n var callbackNames = ['tableBuilt', 'rowClick', 'rowDblClick', 'rowContext', 'rowTap', 'rowDblTap', 'rowTapHold',\n 'rowAdded', 'rowDeleted', 'rowMoved', 'rowUpdated', 'rowSelectionChanged', 'rowSelected', 'rowDeselected', 'rowResized',\n 'cellClick', 'cellDblClick', 'cellContext', 'cellTap', 'cellDblTap', 'cellTapHold', 'cellEditing', 'cellEdited', 'cellEditCancelled',\n 'columnMoved', 'columnResized', 'columnTitleChanged', 'columnVisibilityChanged',\n 'headerClick', 'headerDblClick', 'headerContext', 'headerTap', 'headerDblTap', 'headerTapHold',\n 'htmlImporting', 'htmlImported', 'dataLoading', 'dataLoaded', 'dataEdited',\n 'ajaxRequesting', 'ajaxResponse', 'ajaxError', 'dataFiltering', 'dataFiltered', 'dataSorting', 'dataSorted',\n 'renderStarted', 'renderComplete', 'pageLoaded', 'localized', 'dataGrouping', 'dataGrouped',\n 'groupVisibilityChanged', 'groupClick', 'groupDblClick', 'groupContext', 'groupTap', 'groupDblTap', 'groupTapHold',\n 'movableRowsSendingStart', 'movableRowsSent', 'movableRowsSentFailed', 'movableRowsSendingStop', 'movableRowsReceivingStart', 'movableRowsReceived', 'movableRowsReceivedFailed', 'movableRowsReceivingStop',\n 'validationFailed', 'clipboardCopied', 'clipboardPasted', 'clipboardPasteError',\n 'downloadDataFormatter', 'downloadReady', 'downloadComplete'];\n for (var _a = 0, callbackNames_1 = callbackNames; _a < callbackNames_1.length; _a++) {\n var callbackName = callbackNames_1[_a];\n output[callbackName] = props[callbackName] || NOOPS;\n }\n if (typeof props['footerElement'] === 'object') {\n // convert from JSX to HTML string (tabulator's footerElement accepts string)\n output['footerElement'] = server_1.renderToString(props['footerElement']);\n }\n return output;\n};\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* Tabulator v4.3.0 (c) Oliver Folkerd */\n\n;(function (global, factory) {\n\tif ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {\n\t\tmodule.exports = factory();\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else {\n\t\tglobal.Tabulator = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\n\n\tif (!Array.prototype.findIndex) {\n\n\t\tObject.defineProperty(Array.prototype, 'findIndex', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return k.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn k;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return -1.\n\n\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t});\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\n\n\tif (!Array.prototype.find) {\n\n\t\tObject.defineProperty(Array.prototype, 'find', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return kValue.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn kValue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return undefined.\n\n\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t});\n\t}\n\n\tvar ColumnManager = function ColumnManager(table) {\n\n\t\tthis.table = table; //hold parent table\n\n\n\t\tthis.blockHozScrollEvent = false;\n\n\t\tthis.headersElement = this.createHeadersElement();\n\n\t\tthis.element = this.createHeaderElement(); //containing element\n\n\n\t\tthis.rowManager = null; //hold row manager object\n\n\n\t\tthis.columns = []; // column definition object\n\n\n\t\tthis.columnsByIndex = []; //columns by index\n\n\n\t\tthis.columnsByField = {}; //columns by field\n\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\n\t};\n\n\t////////////// Setup Functions /////////////////\n\n\n\tColumnManager.prototype.createHeadersElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-headers\");\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.createHeaderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-header\");\n\n\t\tif (!this.table.options.headerVisible) {\n\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\t//scroll body along with header\n\n\n\t\t// self.element.addEventListener(\"scroll\", function(e){\n\n\n\t\t// \tif(!self.blockHozScrollEvent){\n\n\n\t\t// \t\tself.table.rowManager.scrollHorizontal(self.element.scrollLeft);\n\n\n\t\t// \t}\n\n\n\t\t// });\n\n\t};\n\n\t//link to row manager\n\n\n\tColumnManager.prototype.setRowManager = function (manager) {\n\n\t\tthis.rowManager = manager;\n\t};\n\n\t//return containing element\n\n\n\tColumnManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return header containing element\n\n\n\tColumnManager.prototype.getHeadersElement = function () {\n\n\t\treturn this.headersElement;\n\t};\n\n\t// ColumnManager.prototype.tempScrollBlock = function(){\n\n\n\t// \tclearTimeout(this.blockHozScrollEvent);\n\n\n\t// \tthis.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);\n\n\n\t// }\n\n\n\t//scroll horizontally to match table body\n\n\n\tColumnManager.prototype.scrollHorizontal = function (left) {\n\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\n\n\t\t// this.tempScrollBlock();\n\n\n\t\tthis.element.scrollLeft = left;\n\n\t\t//adjust for vertical scrollbar moving table when present\n\n\n\t\tif (left > scrollWidth) {\n\n\t\t\thozAdjust = left - scrollWidth;\n\n\t\t\tthis.element.style.marginLeft = -hozAdjust + \"px\";\n\t\t} else {\n\n\t\t\tthis.element.style.marginLeft = 0;\n\t\t}\n\n\t\t//keep frozen columns fixed in position\n\n\n\t\t//this._calcFrozenColumnsPos(hozAdjust + 3);\n\n\n\t\tthis.scrollLeft = left;\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.scrollHorizontal();\n\t\t}\n\t};\n\n\t///////////// Column Setup Functions /////////////\n\n\n\tColumnManager.prototype.generateColumnsFromRowData = function (data) {\n\n\t\tvar cols = [],\n\t\t row,\n\t\t sorter;\n\n\t\tif (data && data.length) {\n\n\t\t\trow = data[0];\n\n\t\t\tfor (var key in row) {\n\n\t\t\t\tvar col = {\n\n\t\t\t\t\tfield: key,\n\n\t\t\t\t\ttitle: key\n\n\t\t\t\t};\n\n\t\t\t\tvar value = row[key];\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\n\t\t\t\t\tcase \"undefined\":\n\n\t\t\t\t\t\tsorter = \"string\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\t\tsorter = \"boolean\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"object\":\n\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tcol.sorter = sorter;\n\n\t\t\t\tcols.push(col);\n\t\t\t}\n\n\t\t\tthis.table.options.columns = cols;\n\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t};\n\n\tColumnManager.prototype.setColumns = function (cols, row) {\n\n\t\tvar self = this;\n\n\t\twhile (self.headersElement.firstChild) {\n\t\t\tself.headersElement.removeChild(self.headersElement.firstChild);\n\t\t}self.columns = [];\n\n\t\tself.columnsByIndex = [];\n\n\t\tself.columnsByField = {};\n\n\t\t//reset frozen columns\n\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.reset();\n\t\t}\n\n\t\tcols.forEach(function (def, i) {\n\n\t\t\tself._addColumn(def);\n\t\t});\n\n\t\tself._reIndexColumns();\n\n\t\tif (self.table.options.responsiveLayout && self.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tself.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tself.redraw(true);\n\t};\n\n\tColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = new Column(definition, this),\n\t\t colEl = column.getElement(),\n\t\t index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\n\t\tif (nextToColumn && index > -1) {\n\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\n\n\t\t\tvar nextEl = nextToColumn.getElement();\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.unshift(column);\n\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.push(column);\n\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\n\t\treturn column;\n\t};\n\n\tColumnManager.prototype.registerColumnField = function (col) {\n\n\t\tif (col.definition.field) {\n\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t};\n\n\tColumnManager.prototype.registerColumnPosition = function (col) {\n\n\t\tthis.columnsByIndex.push(col);\n\t};\n\n\tColumnManager.prototype._reIndexColumns = function () {\n\n\t\tthis.columnsByIndex = [];\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t};\n\n\t//ensure column headers take up the correct amount of space in column groups\n\n\n\tColumnManager.prototype._verticalAlignHeaders = function () {\n\n\t\tvar self = this,\n\t\t minHeight = 0;\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tvar height;\n\n\t\t\tcolumn.clearVerticalAlign();\n\n\t\t\theight = column.getHeight();\n\n\t\t\tif (height > minHeight) {\n\n\t\t\t\tminHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(self.table.options.columnVertAlign, minHeight);\n\t\t});\n\n\t\tself.rowManager.adjustTableSize();\n\t};\n\n\t//////////////// Column Details /////////////////\n\n\n\tColumnManager.prototype.findColumn = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Column) {\n\n\t\t\t\t//subject is column element\n\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof ColumnComponent) {\n\n\t\t\t\t//subject is public column component\n\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the column header\n\n\n\t\t\t\tvar match = self.columns.find(function (column) {\n\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//subject should be treated as the field name of the column\n\n\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tColumnManager.prototype.getColumnByField = function (field) {\n\n\t\treturn this.columnsByField[field];\n\t};\n\n\tColumnManager.prototype.getColumnByIndex = function (index) {\n\n\t\treturn this.columnsByIndex[index];\n\t};\n\n\tColumnManager.prototype.getFirstVisibileColumn = function (index) {\n\n\t\tvar index = this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn col.visible;\n\t\t});\n\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t};\n\n\tColumnManager.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\tColumnManager.prototype.findColumnIndex = function (column) {\n\n\t\treturn this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn column === col;\n\t\t});\n\t};\n\n\t//return all columns that are not groups\n\n\n\tColumnManager.prototype.getRealColumns = function () {\n\n\t\treturn this.columnsByIndex;\n\t};\n\n\t//travers across columns and call action\n\n\n\tColumnManager.prototype.traverse = function (callback) {\n\n\t\tvar self = this;\n\n\t\tself.columnsByIndex.forEach(function (column, i) {\n\n\t\t\tcallback(column, i);\n\t\t});\n\t};\n\n\t//get defintions of actual columns\n\n\n\tColumnManager.prototype.getDefinitions = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (!active || active && column.visible) {\n\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get full nested definition tree\n\n\n\tColumnManager.prototype.getDefinitionTree = function () {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getComponents = function (structured) {\n\n\t\tvar self = this,\n\t\t output = [],\n\t\t columns = structured ? self.columns : self.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getWidth = function () {\n\n\t\tvar width = 0;\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\treturn width;\n\t};\n\n\tColumnManager.prototype.moveColumn = function (from, to, after) {\n\n\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.options.columnMoved) {\n\n\t\t\tthis.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\n\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\t};\n\n\tColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {\n\n\t\tvar fromIndex = columns.indexOf(from),\n\t\t toIndex;\n\n\t\tif (fromIndex > -1) {\n\n\t\t\tcolumns.splice(fromIndex, 1);\n\n\t\t\ttoIndex = columns.indexOf(to);\n\n\t\t\tif (toIndex > -1) {\n\n\t\t\t\tif (after) {\n\n\t\t\t\t\ttoIndex = toIndex + 1;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\n\t\t\tcolumns.splice(toIndex, 0, from);\n\n\t\t\tif (updateRows) {\n\n\t\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\n\t\t\t\t\tif (row.cells.length) {\n\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {\n\t\tvar _this = this;\n\n\t\tvar left = 0,\n\t\t offset = 0,\n\t\t adjust = 0,\n\t\t colEl = column.getElement();\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\tposition = _this.table.options.scrollToColumnPosition;\n\t\t\t}\n\n\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\tifVisible = _this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\n\t\t\t\t//align to correct position\n\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tadjust = -_this.element.clientWidth / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"right\":\n\n\t\t\t\t\t\tadjust = colEl.clientWidth - _this.headersElement.clientWidth;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//check column visibility\n\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\toffset = colEl.offsetLeft;\n\n\t\t\t\t\tif (offset > 0 && offset + colEl.offsetWidth < _this.element.clientWidth) {\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//calculate scroll position\n\n\n\t\t\t\tleft = colEl.offsetLeft + _this.element.scrollLeft + adjust;\n\n\t\t\t\tleft = Math.max(Math.min(left, _this.table.rowManager.element.scrollWidth - _this.table.rowManager.element.clientWidth), 0);\n\n\t\t\t\t_this.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t_this.scrollHorizontal(left);\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tColumnManager.prototype.generateCells = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cells = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\t//////////////// Column Management /////////////////\n\n\n\tColumnManager.prototype.getFlexBaseWidth = function () {\n\n\t\tvar self = this,\n\t\t totalWidth = self.table.element.clientWidth,\n\t\t //table element width\n\n\n\t\tfixedWidth = 0;\n\n\t\t//adjust for vertical scrollbar if present\n\n\n\t\tif (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {\n\n\t\t\ttotalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;\n\t\t}\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tvar width, minWidth, colWidth;\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth = column.definition.width || 0;\n\n\t\t\t\tminWidth = typeof column.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(column.minWidth);\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t}\n\t\t});\n\n\t\treturn fixedWidth;\n\t};\n\n\tColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\n\t\tthis._reIndexColumns();\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tthis.redraw();\n\n\t\tif (this.table.modules.layout.getMode() != \"fitColumns\") {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tthis._verticalAlignHeaders();\n\n\t\tthis.table.rowManager.reinitialize();\n\t};\n\n\t//remove column from system\n\n\n\tColumnManager.prototype.deregisterColumn = function (column) {\n\n\t\tvar field = column.getField(),\n\t\t index;\n\n\t\t//remove from field list\n\n\n\t\tif (field) {\n\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\n\t\t//remove from index list\n\n\n\t\tindex = this.columnsByIndex.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\n\t\t//remove from column list\n\n\n\t\tindex = this.columns.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tthis.redraw();\n\t};\n\n\t//redraw columns\n\n\n\tColumnManager.prototype.redraw = function (force) {\n\n\t\tif (force) {\n\n\t\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\n\t\t\t\tthis._verticalAlignHeaders();\n\t\t\t}\n\n\t\t\tthis.table.rowManager.resetScroll();\n\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\n\t\tif (this.table.modules.layout.getMode() == \"fitColumns\") {\n\n\t\t\tthis.table.modules.layout.layout();\n\t\t} else {\n\n\t\t\tif (force) {\n\n\t\t\t\tthis.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tif (force) {\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.redraw();\n\t\t\t}\n\t\t}\n\n\t\tthis.table.footerManager.redraw();\n\t};\n\n\t//public column object\n\n\tvar ColumnComponent = function ColumnComponent(column) {\n\n\t\tthis._column = column;\n\n\t\tthis.type = \"ColumnComponent\";\n\t};\n\n\tColumnComponent.prototype.getElement = function () {\n\n\t\treturn this._column.getElement();\n\t};\n\n\tColumnComponent.prototype.getDefinition = function () {\n\n\t\treturn this._column.getDefinition();\n\t};\n\n\tColumnComponent.prototype.getField = function () {\n\n\t\treturn this._column.getField();\n\t};\n\n\tColumnComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tColumnComponent.prototype.getVisibility = function () {\n\n\t\treturn this._column.visible;\n\t};\n\n\tColumnComponent.prototype.show = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.hide = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.hide();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.toggle = function () {\n\n\t\tif (this._column.visible) {\n\n\t\t\tthis.hide();\n\t\t} else {\n\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.delete = function () {\n\n\t\tthis._column.delete();\n\t};\n\n\tColumnComponent.prototype.getSubColumns = function () {\n\n\t\tvar output = [];\n\n\t\tif (this._column.columns.length) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tColumnComponent.prototype.getParentColumn = function () {\n\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype._getSelf = function () {\n\n\t\treturn this._column;\n\t};\n\n\tColumnComponent.prototype.scrollTo = function () {\n\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\n\t};\n\n\tColumnComponent.prototype.getTable = function () {\n\n\t\treturn this._column.table;\n\t};\n\n\tColumnComponent.prototype.headerFilterFocus = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterFocus(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.reloadHeaderFilter = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.reloadHeaderFilter(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.setHeaderFilterValue = function (value) {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterValue(this._column, value);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.getNextColumn = function () {\n\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype.getPrevColumn = function () {\n\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t};\n\n\tvar Column = function Column(def, parent) {\n\n\t\tvar self = this;\n\n\t\tthis.table = parent.table;\n\n\t\tthis.definition = def; //column definition\n\n\t\tthis.parent = parent; //hold parent object\n\n\t\tthis.type = \"column\"; //type of element\n\n\t\tthis.columns = []; //child columns\n\n\t\tthis.cells = []; //cells bound to this column\n\n\t\tthis.element = this.createElement(); //column header element\n\n\t\tthis.contentElement = false;\n\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\n\t\tthis.isGroup = false;\n\n\t\tthis.tooltip = false; //hold column tooltip\n\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\n\n\t\t//multi dimentional filed handling\n\n\t\tthis.field = \"\";\n\n\t\tthis.fieldStructure = \"\";\n\n\t\tthis.getFieldValue = \"\";\n\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.checkDefinition();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\n\t\tthis.cellEvents = {\n\n\t\t\tcellClick: false,\n\n\t\t\tcellDblClick: false,\n\n\t\t\tcellContext: false,\n\n\t\t\tcellTap: false,\n\n\t\t\tcellDblTap: false,\n\n\t\t\tcellTapHold: false,\n\n\t\t\tcellMouseEnter: false,\n\n\t\t\tcellMouseLeave: false,\n\n\t\t\tcellMouseOver: false,\n\n\t\t\tcellMouseOut: false,\n\n\t\t\tcellMouseMove: false\n\n\t\t};\n\n\t\tthis.width = null; //column width\n\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\n\n\t\tthis.minWidth = null; //column minimum width\n\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\n\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\n\t\tthis.visible = true; //default visible state\n\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\t//initialize column\n\n\t\tif (def.columns) {\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tdef.columns.forEach(function (def, i) {\n\n\t\t\t\tvar newCol = new Column(def, self);\n\n\t\t\t\tself.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tself.checkColumnVisibility();\n\t\t} else {\n\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tif (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists(\"moveRow\")) {\n\n\t\t\tthis.table.modules.moveRow.setHandle(true);\n\t\t}\n\n\t\tthis._buildHeader();\n\t};\n\n\tColumn.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.createGroupElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.checkDefinition = function () {\n\t\tvar _this2 = this;\n\n\t\tObject.keys(this.definition).forEach(function (key) {\n\n\t\t\tif (_this2.defaultOptionList.indexOf(key) === -1) {\n\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (_this2.field || _this2.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t};\n\n\tColumn.prototype.setField = function (field) {\n\n\t\tthis.field = field;\n\n\t\tthis.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];\n\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnPosition = function (column) {\n\n\t\tthis.parent.registerColumnPosition(column);\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnField = function (column) {\n\n\t\tthis.parent.registerColumnField(column);\n\t};\n\n\t//trigger position registration\n\n\tColumn.prototype.reRegisterPosition = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t};\n\n\tColumn.prototype._mapDepricatedFunctionality = function () {\n\n\t\tif (typeof this.definition.hideInHtml !== \"undefined\") {\n\n\t\t\tthis.definition.htmlOutput = !this.definition.hideInHtml;\n\n\t\t\tconsole.warn(\"hideInHtml column definition property is depricated, you should now use htmlOutput\");\n\t\t}\n\t};\n\n\tColumn.prototype.setTooltip = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\t//set header tooltips\n\n\t\tvar tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\tif (def.field) {\n\n\t\t\t\t\tself.table.modules.localize.bind(\"columns|\" + def.field, function (value) {\n\n\t\t\t\t\t\tself.element.setAttribute(\"title\", value || def.title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.element.setAttribute(\"title\", def.title);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (typeof tooltip == \"function\") {\n\n\t\t\t\t\ttooltip = tooltip(self.getComponent());\n\n\t\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\t\ttooltip = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself.element.setAttribute(\"title\", tooltip);\n\t\t\t}\n\t\t} else {\n\n\t\t\tself.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//build header element\n\n\tColumn.prototype._buildHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\twhile (self.element.firstChild) {\n\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t}if (def.headerVertical) {\n\n\t\t\tself.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif (def.headerVertical === \"flip\") {\n\n\t\t\t\tself.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tself.contentElement = self._bindEvents();\n\n\t\tself.contentElement = self._buildColumnHeaderContent();\n\n\t\tself.element.appendChild(self.contentElement);\n\n\t\tif (self.isGroup) {\n\n\t\t\tself._buildGroupHeader();\n\t\t} else {\n\n\t\t\tself._buildColumnHeader();\n\t\t}\n\n\t\tself.setTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (self.table.options.resizableColumns && self.table.modExists(\"resizeColumns\")) {\n\n\t\t\tself.table.modules.resizeColumns.initializeColumn(\"header\", self, self.element);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (def.headerFilter && self.table.modExists(\"filter\") && self.table.modExists(\"edit\")) {\n\n\t\t\tif (typeof def.headerFilterPlaceholder !== \"undefined\" && def.field) {\n\n\t\t\t\tself.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\n\t\t\t}\n\n\t\t\tself.table.modules.filter.initializeColumn(self);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.initializeColumn(self);\n\t\t}\n\n\t\t//set movable column\n\n\t\tif (self.table.options.movableColumns && !self.isGroup && self.table.modExists(\"moveColumn\")) {\n\n\t\t\tself.table.modules.moveColumn.initializeColumn(self);\n\t\t}\n\n\t\t//set calcs column\n\n\t\tif ((def.topCalc || def.bottomCalc) && self.table.modExists(\"columnCalcs\")) {\n\n\t\t\tself.table.modules.columnCalcs.initializeColumn(self);\n\t\t}\n\n\t\t//update header tooltip on mouse enter\n\n\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\tself.setTooltip();\n\t\t});\n\t};\n\n\tColumn.prototype._bindEvents = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//setup header click event bindings\n\n\t\tif (typeof def.headerClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tdef.headerClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tdef.headerDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerContext == \"function\") {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tdef.headerContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//setup header tap event bindings\n\n\t\tif (typeof def.headerTap == \"function\") {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tdef.headerTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblTap == \"function\") {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tdef.headerDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerTapHold == \"function\") {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tdef.headerTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\t//store column cell click event bindings\n\n\t\tif (typeof def.cellClick == \"function\") {\n\n\t\t\tself.cellEvents.cellClick = def.cellClick;\n\t\t}\n\n\t\tif (typeof def.cellDblClick == \"function\") {\n\n\t\t\tself.cellEvents.cellDblClick = def.cellDblClick;\n\t\t}\n\n\t\tif (typeof def.cellContext == \"function\") {\n\n\t\t\tself.cellEvents.cellContext = def.cellContext;\n\t\t}\n\n\t\t//store column mouse event bindings\n\n\t\tif (typeof def.cellMouseEnter == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseEnter = def.cellMouseEnter;\n\t\t}\n\n\t\tif (typeof def.cellMouseLeave == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseLeave = def.cellMouseLeave;\n\t\t}\n\n\t\tif (typeof def.cellMouseOver == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOver = def.cellMouseOver;\n\t\t}\n\n\t\tif (typeof def.cellMouseOut == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOut = def.cellMouseOut;\n\t\t}\n\n\t\tif (typeof def.cellMouseMove == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseMove = def.cellMouseMove;\n\t\t}\n\n\t\t//setup column cell tap event bindings\n\n\t\tif (typeof def.cellTap == \"function\") {\n\n\t\t\tself.cellEvents.cellTap = def.cellTap;\n\t\t}\n\n\t\tif (typeof def.cellDblTap == \"function\") {\n\n\t\t\tself.cellEvents.cellDblTap = def.cellDblTap;\n\t\t}\n\n\t\tif (typeof def.cellTapHold == \"function\") {\n\n\t\t\tself.cellEvents.cellTapHold = def.cellTapHold;\n\t\t}\n\n\t\t//setup column cell edit callbacks\n\n\t\tif (typeof def.cellEdited == \"function\") {\n\n\t\t\tself.cellEvents.cellEdited = def.cellEdited;\n\t\t}\n\n\t\tif (typeof def.cellEditing == \"function\") {\n\n\t\t\tself.cellEvents.cellEditing = def.cellEditing;\n\t\t}\n\n\t\tif (typeof def.cellEditCancelled == \"function\") {\n\n\t\t\tself.cellEvents.cellEditCancelled = def.cellEditCancelled;\n\t\t}\n\t};\n\n\t//build header element for header\n\n\tColumn.prototype._buildColumnHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t sortable;\n\n\t\t//set column sorter\n\n\t\tif (table.modExists(\"sort\")) {\n\n\t\t\ttable.modules.sort.initializeColumn(self, self.contentElement);\n\t\t}\n\n\t\t//set column formatter\n\n\t\tif (table.modExists(\"format\")) {\n\n\t\t\ttable.modules.format.initializeColumn(self);\n\t\t}\n\n\t\t//set column editor\n\n\t\tif (typeof def.editor != \"undefined\" && table.modExists(\"edit\")) {\n\n\t\t\ttable.modules.edit.initializeColumn(self);\n\t\t}\n\n\t\t//set colum validator\n\n\t\tif (typeof def.validator != \"undefined\" && table.modExists(\"validate\")) {\n\n\t\t\ttable.modules.validate.initializeColumn(self);\n\t\t}\n\n\t\t//set column mutator\n\n\t\tif (table.modExists(\"mutator\")) {\n\n\t\t\ttable.modules.mutator.initializeColumn(self);\n\t\t}\n\n\t\t//set column accessor\n\n\t\tif (table.modExists(\"accessor\")) {\n\n\t\t\ttable.modules.accessor.initializeColumn(self);\n\t\t}\n\n\t\t//set respoviveLayout\n\n\t\tif (_typeof(table.options.responsiveLayout) && table.modExists(\"responsiveLayout\")) {\n\n\t\t\ttable.modules.responsiveLayout.initializeColumn(self);\n\t\t}\n\n\t\t//set column visibility\n\n\t\tif (typeof def.visible != \"undefined\") {\n\n\t\t\tif (def.visible) {\n\n\t\t\t\tself.show(true);\n\t\t\t} else {\n\n\t\t\t\tself.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//asign additional css classes to column header\n\n\t\tif (def.cssClass) {\n\n\t\t\tvar classeNames = def.cssClass.split(\" \");\n\n\t\t\tclasseNames.forEach(function (className) {\n\n\t\t\t\tself.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif (def.field) {\n\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\n\t\tself.setMinWidth(typeof def.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(def.minWidth));\n\n\t\tself.reinitializeWidth();\n\n\t\t//set tooltip if present\n\n\t\tself.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;\n\n\t\t//set orizontal text alignment\n\n\t\tself.hozAlign = typeof self.definition.align == \"undefined\" ? \"\" : self.definition.align;\n\t};\n\n\tColumn.prototype._buildColumnHeaderContent = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table;\n\n\t\tvar contentElement = document.createElement(\"div\");\n\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tcontentElement.appendChild(self._buildColumnHeaderTitle());\n\n\t\treturn contentElement;\n\t};\n\n\t//build title element of column\n\n\tColumn.prototype._buildColumnHeaderTitle = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t title;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\n\t\tif (def.editableTitle) {\n\n\t\t\tvar titleElement = document.createElement(\"input\");\n\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", function (e) {\n\n\t\t\t\te.stopPropagation();\n\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", function () {\n\n\t\t\t\tdef.title = titleElement.value;\n\n\t\t\t\ttable.options.columnTitleChanged.call(self.table, self.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\ttitleElement.value = text || def.title || \" \";\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, text || def.title || \" \");\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t};\n\n\tColumn.prototype._formatColumnHeaderTitle = function (el, title) {\n\n\t\tvar formatter, contents, params, mockCell;\n\n\t\tif (this.definition.titleFormatter && this.table.modExists(\"format\")) {\n\n\t\t\tformatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);\n\n\t\t\tmockCell = {\n\n\t\t\t\tgetValue: function getValue() {\n\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\n\t\t\t\tgetElement: function getElement() {\n\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tparams = this.definition.titleFormatterParams || {};\n\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\n\t\t\tcontents = formatter.call(this.table.modules.format, mockCell, params);\n\n\t\t\tswitch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {\n\n\t\t\t\tcase \"object\":\n\n\t\t\t\t\tif (contents instanceof Node) {\n\n\t\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"undefined\":\n\n\t\t\t\tcase \"null\":\n\n\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tel.innerHTML = contents;\n\n\t\t\t}\n\t\t} else {\n\n\t\t\tel.innerHTML = title;\n\t\t}\n\t};\n\n\t//build header element for column group\n\n\tColumn.prototype._buildGroupHeader = function () {\n\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\tthis.element.appendChild(this.groupElement);\n\t};\n\n\t//flat field lookup\n\n\tColumn.prototype._getFlatData = function (data) {\n\n\t\treturn data[this.field];\n\t};\n\n\t//nested field lookup\n\n\tColumn.prototype._getNestedData = function (data) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length,\n\t\t output;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif (!dataObj) {\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//flat field set\n\n\tColumn.prototype._setFlatData = function (data, value) {\n\n\t\tif (this.field) {\n\n\t\t\tdata[this.field] = value;\n\t\t}\n\t};\n\n\t//nested field set\n\n\tColumn.prototype._setNesteData = function (data, value) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tif (i == length - 1) {\n\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t} else {\n\n\t\t\t\tif (!dataObj[structure[i]]) {\n\n\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t};\n\n\t//attach column to this group\n\n\tColumn.prototype.attachColumn = function (column) {\n\n\t\tvar self = this;\n\n\t\tif (self.groupElement) {\n\n\t\t\tself.columns.push(column);\n\n\t\t\tself.groupElement.appendChild(column.getElement());\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t};\n\n\t//vertically align header in column\n\n\tColumn.prototype.verticalAlign = function (alignment, height) {\n\n\t\t//calculate height of column header and group holder element\n\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;\n\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\n\t\tif (!this.isGroup && alignment !== \"top\") {\n\n\t\t\tif (alignment === \"bottom\") {\n\n\t\t\t\tthis.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + \"px\";\n\t\t\t} else {\n\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + \"px\";\n\t\t\t}\n\t\t}\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t};\n\n\t//clear vertical alignmenet\n\n\tColumn.prototype.clearVerticalAlign = function () {\n\n\t\tthis.element.style.paddingTop = \"\";\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.element.style.minHeight = \"\";\n\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\t};\n\n\t//// Retreive Column Information ////\n\n\n\t//return column header element\n\n\tColumn.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return colunm group element\n\n\tColumn.prototype.getGroupElement = function () {\n\n\t\treturn this.groupElement;\n\t};\n\n\t//return field name\n\n\tColumn.prototype.getField = function () {\n\n\t\treturn this.field;\n\t};\n\n\t//return the first column in a group\n\n\tColumn.prototype.getFirstColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return the last column in a group\n\n\tColumn.prototype.getLastColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[this.columns.length - 1].getLastColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\t//retreive the top column in a group of columns\n\n\tColumn.prototype.getTopColumn = function () {\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\treturn this.parent.getTopColumn();\n\t\t} else {\n\n\t\t\treturn this;\n\t\t}\n\t};\n\n\t//return column definition object\n\n\tColumn.prototype.getDefinition = function (updateBranches) {\n\n\t\tvar colDefs = [];\n\n\t\tif (this.isGroup && updateBranches) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tColumn.prototype.checkColumnVisibility = function () {\n\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif (visible) {\n\n\t\t\tthis.show();\n\n\t\t\tthis.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t} else {\n\n\t\t\tthis.hide();\n\t\t}\n\t};\n\n\t//show column\n\n\tColumn.prototype.show = function (silent, responsiveToggle) {\n\n\t\tif (!this.visible) {\n\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif (!this.isGroup && this.width === null) {\n\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\t//hide column\n\n\tColumn.prototype.hide = function (silent, responsiveToggle) {\n\n\t\tif (this.visible) {\n\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.matchChildWidths = function () {\n\n\t\tvar childWidth = 0;\n\n\t\tif (this.contentElement && this.columns.length) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = childWidth - 1 + \"px\";\n\t\t}\n\t};\n\n\tColumn.prototype.setWidth = function (width) {\n\n\t\tthis.widthFixed = true;\n\n\t\tthis.setWidthActual(width);\n\t};\n\n\tColumn.prototype.setWidthActual = function (width) {\n\n\t\tif (isNaN(width)) {\n\n\t\t\twidth = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tthis.width = width;\n\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif (!this.isGroup) {\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\t};\n\n\tColumn.prototype.checkCellHeights = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tif (cell.row.heightInitialized) {\n\n\t\t\t\tif (cell.row.getElement().offsetParent !== null) {\n\n\t\t\t\t\trows.push(cell.row);\n\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t} else {\n\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\t};\n\n\tColumn.prototype.getWidth = function () {\n\n\t\t// return this.element.offsetWidth;\n\n\t\treturn this.width;\n\t};\n\n\tColumn.prototype.getHeight = function () {\n\n\t\treturn this.element.offsetHeight;\n\t};\n\n\tColumn.prototype.setMinWidth = function (minWidth) {\n\n\t\tthis.minWidth = minWidth;\n\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setMinWidth();\n\t\t});\n\t};\n\n\tColumn.prototype.delete = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.delete();\n\t\t\t});\n\t\t}\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.table.columnManager.deregisterColumn(this);\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\t//generate cell for this column\n\n\tColumn.prototype.generateCell = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cell = new Cell(self, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t};\n\n\tColumn.prototype.nextColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index + 1) : false;\n\t};\n\n\tColumn.prototype.prevColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index - 1) : false;\n\t};\n\n\tColumn.prototype.reinitializeWidth = function (force) {\n\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\n\t\tif (typeof this.definition.width !== \"undefined\" && !force) {\n\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\t//hide header filters to prevent them altering column width\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.hideHeaderFilterElements();\n\t\t}\n\n\t\tthis.fitToData();\n\n\t\t//show header filters again after layout is complete\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.showHeaderFilterElements();\n\t\t}\n\t};\n\n\t//set column width to maximum cell width\n\n\tColumn.prototype.fitToData = function () {\n\n\t\tvar self = this;\n\n\t\tif (!this.widthFixed) {\n\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif (!self.width || !this.widthFixed) {\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif (width > maxWidth) {\n\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (maxWidth) {\n\n\t\t\t\tself.setWidthActual(maxWidth + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\tColumn.prototype.defaultOptionList = [\"title\", \"field\", \"columns\", \"visible\", \"align\", \"width\", \"minWidth\", \"widthGrow\", \"widthShrink\", \"resizable\", \"frozen\", \"responsive\", \"tooltip\", \"cssClass\", \"rowHandle\", \"hideInHtml\", \"print\", \"htmlOutput\", \"sorter\", \"sorterParams\", \"formatter\", \"formatterParams\", \"variableHeight\", \"editable\", \"editor\", \"editorParams\", \"validator\", \"mutator\", \"mutatorParams\", \"mutatorData\", \"mutatorDataParams\", \"mutatorEdit\", \"mutatorEditParams\", \"mutatorClipboard\", \"mutatorClipboardParams\", \"accessor\", \"accessorParams\", \"accessorData\", \"accessorDataParams\", \"accessorDownload\", \"accessorDownloadParams\", \"accessorClipboard\", \"accessorClipboardParams\", \"download\", \"downloadTitle\", \"topCalc\", \"topCalcParams\", \"topCalcFormatter\", \"topCalcFormatterParams\", \"bottomCalc\", \"bottomCalcParams\", \"bottomCalcFormatter\", \"bottomCalcFormatterParams\", \"cellClick\", \"cellDblClick\", \"cellContext\", \"cellTap\", \"cellDblTap\", \"cellTapHold\", \"cellMouseEnter\", \"cellMouseLeave\", \"cellMouseOver\", \"cellMouseOut\", \"cellMouseMove\", \"cellEditing\", \"cellEdited\", \"cellEditCancelled\", \"headerSort\", \"headerSortStartingDir\", \"headerSortTristate\", \"headerClick\", \"headerDblClick\", \"headerContext\", \"headerTap\", \"headerDblTap\", \"headerTapHold\", \"headerTooltip\", \"headerVertical\", \"editableTitle\", \"titleFormatter\", \"titleFormatterParams\", \"headerFilter\", \"headerFilterPlaceholder\", \"headerFilterParams\", \"headerFilterEmptyCheck\", \"headerFilterFunc\", \"headerFilterFuncParams\", \"headerFilterLiveFilter\", \"print\"];\n\n\t//////////////// Event Bindings /////////////////\n\n\n\t//////////////// Object Generation /////////////////\n\n\tColumn.prototype.getComponent = function () {\n\n\t\treturn new ColumnComponent(this);\n\t};\n\n\tvar RowManager = function RowManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.element = this.createHolderElement(); //containing element\n\n\t\tthis.tableElement = this.createTableElement(); //table element\n\n\t\tthis.columnManager = null; //hold column manager object\n\n\t\tthis.height = 0; //hold height of table element\n\n\n\t\tthis.firstRender = false; //handle first render\n\n\t\tthis.renderMode = \"classic\"; //current rendering mode\n\n\n\t\tthis.rows = []; //hold row data objects\n\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\n\t\tthis.activeRowsCount = 0; //count of active rows\n\n\n\t\tthis.displayRows = []; //rows currently on display in the table\n\n\t\tthis.displayRowsCount = 0; //count of display rows\n\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\n\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\tRowManager.prototype.createHolderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-tableHolder\");\n\n\t\tel.setAttribute(\"tabindex\", 0);\n\n\t\treturn el;\n\t};\n\n\tRowManager.prototype.createTableElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-table\");\n\n\t\treturn el;\n\t};\n\n\t//return containing element\n\n\tRowManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return table element\n\n\tRowManager.prototype.getTableElement = function () {\n\n\t\treturn this.tableElement;\n\t};\n\n\t//return position of row in table\n\n\tRowManager.prototype.getRowPosition = function (row, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows.indexOf(row);\n\t\t} else {\n\n\t\t\treturn this.rows.indexOf(row);\n\t\t}\n\t};\n\n\t//link to column manager\n\n\tRowManager.prototype.setColumnManager = function (manager) {\n\n\t\tthis.columnManager = manager;\n\t};\n\n\tRowManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\tself.setRenderMode();\n\n\t\t//initialize manager\n\n\t\tself.element.appendChild(self.tableElement);\n\n\t\tself.firstRender = true;\n\n\t\t//scroll header along with table body\n\n\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\tvar left = self.element.scrollLeft;\n\n\t\t\t//handle horizontal scrolling\n\n\t\t\tif (self.scrollLeft != left) {\n\n\t\t\t\tself.columnManager.scrollHorizontal(left);\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.table.modules.groupRows.scrollHeaders(left);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tself.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.scrollLeft = left;\n\t\t});\n\n\t\t//handle virtual dom scrolling\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\t\tvar top = self.element.scrollTop;\n\n\t\t\t\tvar dir = self.scrollTop > top;\n\n\t\t\t\t//handle verical scrolling\n\n\t\t\t\tif (self.scrollTop != top) {\n\n\t\t\t\t\tself.scrollTop = top;\n\n\t\t\t\t\tself.scrollVertical(dir);\n\n\t\t\t\t\tif (self.table.options.ajaxProgressiveLoad == \"scroll\") {\n\n\t\t\t\t\t\tself.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tself.scrollTop = top;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t////////////////// Row Manipulation //////////////////\n\n\n\tRowManager.prototype.findRow = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Row) {\n\n\t\t\t\t//subject is row element\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof RowComponent) {\n\n\t\t\t\t//subject is public row component\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the row\n\n\t\t\t\tvar match = self.rows.find(function (row) {\n\n\t\t\t\t\treturn row.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else if (typeof subject == \"undefined\" || subject === null) {\n\n\t\t\treturn false;\n\t\t} else {\n\n\t\t\t//subject should be treated as the index of the row\n\n\t\t\tvar _match = self.rows.find(function (row) {\n\n\t\t\t\treturn row.data[self.table.options.index] == subject;\n\t\t\t});\n\n\t\t\treturn _match || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getRowFromDataObject = function (data) {\n\n\t\tvar match = this.rows.find(function (row) {\n\n\t\t\treturn row.data === data;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\tRowManager.prototype.getRowFromPosition = function (position, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows[position];\n\t\t} else {\n\n\t\t\treturn this.rows[position];\n\t\t}\n\t};\n\n\tRowManager.prototype.scrollToRow = function (row, position, ifVisible) {\n\t\tvar _this3 = this;\n\n\t\tvar rowIndex = this.getDisplayRows().indexOf(row),\n\t\t rowEl = row.getElement(),\n\t\t rowTop,\n\t\t offset = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\t\tposition = _this3.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\t\tifVisible = _this3.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\tif (position === \"nearest\") {\n\n\t\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t\trowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.element.scrollTop - rowTop) > Math.abs(_this3.element.scrollTop + _this3.element.clientHeight - rowTop) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.vDomTop - rowIndex) > Math.abs(_this3.vDomBottom - rowIndex) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\tif (Tabulator.prototype.helpers.elVisible(rowEl)) {\n\n\t\t\t\t\t\toffset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top;\n\n\t\t\t\t\t\tif (offset > 0 && offset < _this3.element.clientHeight - rowEl.offsetHeight) {\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\n\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top + _this3.element.scrollTop;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t_this3._virtualRenderFill(rowIndex, true);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//align to correct position\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight + rowEl.offsetHeight;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\tRowManager.prototype.setData = function (data, renderInPosition) {\n\t\tvar _this4 = this;\n\n\t\tvar self = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (renderInPosition && _this4.getDisplayRows().length) {\n\n\t\t\t\tif (self.table.options.pagination) {\n\n\t\t\t\t\tself._setDataActual(data, true);\n\t\t\t\t} else {\n\n\t\t\t\t\t_this4.reRenderInPosition(function () {\n\n\t\t\t\t\t\tself._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (_this4.table.options.autoColumns) {\n\n\t\t\t\t\t_this4.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\n\t\t\t\t_this4.resetScroll();\n\n\t\t\t\t_this4._setDataActual(data);\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRowManager.prototype._setDataActual = function (data, renderInPosition) {\n\n\t\tvar self = this;\n\n\t\tself.table.options.dataLoading.call(this.table, data);\n\n\t\tthis._wipeElements();\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.clear();\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\n\t\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\t\tthis.table.modules.selectRow.clearSelectionData();\n\t\t\t}\n\n\t\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\tthis.table.modules.reactiveData.watchData(data);\n\t\t\t}\n\n\t\t\tdata.forEach(function (def, i) {\n\n\t\t\t\tif (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === \"object\") {\n\n\t\t\t\t\tvar row = new Row(def, self);\n\n\t\t\t\t\tself.rows.push(row);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.options.dataLoaded.call(this.table, data);\n\n\t\t\tself.refreshActiveData(false, false, renderInPosition);\n\t\t} else {\n\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data === 'undefined' ? 'undefined' : _typeof(data), \"\\nData: \", data);\n\t\t}\n\t};\n\n\tRowManager.prototype._wipeElements = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.wipe();\n\t\t}\n\n\t\tthis.rows = [];\n\t};\n\n\tRowManager.prototype.deleteRow = function (row, blockRedraw) {\n\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\t activeIndex = this.activeRows.indexOf(row);\n\n\t\tif (activeIndex > -1) {\n\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\n\t\tif (allIndex > -1) {\n\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tvar displayIndex = rows.indexOf(row);\n\n\t\t\tif (displayIndex > -1) {\n\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\tthis.table.options.rowDeleted.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t} else if (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.refreshActiveData(false, false, true);\n\t\t} else {\n\n\t\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\t\tthis.refreshActiveData(\"page\");\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.addRow = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowAdd\", row, { data: data, pos: pos, index: index });\n\t\t}\n\n\t\treturn row;\n\t};\n\n\t//add multiple rows\n\n\tRowManager.prototype.addRows = function (data, pos, index) {\n\t\tvar _this5 = this;\n\n\t\tvar self = this,\n\t\t length = 0,\n\t\t rows = [];\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpos = _this5.findAddRowPos(pos);\n\n\t\t\tif (!Array.isArray(data)) {\n\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\tlength = data.length - 1;\n\n\t\t\tif (typeof index == \"undefined\" && pos || typeof index !== \"undefined\" && !pos) {\n\n\t\t\t\tdata.reverse();\n\t\t\t}\n\n\t\t\tdata.forEach(function (item, i) {\n\n\t\t\t\tvar row = self.addRow(item, pos, index, true);\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\tif (_this5.table.options.groupBy && _this5.table.modExists(\"groupRows\")) {\n\n\t\t\t\t_this5.table.modules.groupRows.updateGroupRows(true);\n\t\t\t} else if (_this5.table.options.pagination && _this5.table.modExists(\"page\")) {\n\n\t\t\t\t_this5.refreshActiveData(false, false, true);\n\t\t\t} else {\n\n\t\t\t\t_this5.reRenderInPosition();\n\t\t\t}\n\n\t\t\t//recalc column calculations if present\n\n\t\t\tif (_this5.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t_this5.table.modules.columnCalcs.recalc(_this5.table.rowManager.activeRows);\n\t\t\t}\n\n\t\t\tresolve(rows);\n\t\t});\n\t};\n\n\tRowManager.prototype.findAddRowPos = function (pos) {\n\n\t\tif (typeof pos === \"undefined\") {\n\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\n\t\tif (pos === \"pos\") {\n\n\t\t\tpos = true;\n\t\t}\n\n\t\tif (pos === \"bottom\") {\n\n\t\t\tpos = false;\n\t\t}\n\n\t\treturn pos;\n\t};\n\n\tRowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\t top = this.findAddRowPos(pos),\n\t\t dispRows;\n\n\t\tif (!index && this.table.options.pagination && this.table.options.paginationAddRow == \"page\") {\n\n\t\t\tdispRows = this.getDisplayRows();\n\n\t\t\tif (top) {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[0];\n\t\t\t\t} else {\n\n\t\t\t\t\tif (this.activeRows.length) {\n\n\t\t\t\t\t\tindex = this.activeRows[this.activeRows.length - 1];\n\n\t\t\t\t\t\ttop = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[dispRows.length - 1];\n\n\t\t\t\t\ttop = dispRows.length < this.table.modules.page.getPageSize() ? false : true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tindex = this.findRow(index);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.assignRowToGroup(row);\n\n\t\t\tvar groupRows = row.getGroup().rows;\n\n\t\t\tif (groupRows.length > 1) {\n\n\t\t\t\tif (!index || index && groupRows.indexOf(index) == -1) {\n\n\t\t\t\t\tif (top) {\n\n\t\t\t\t\t\tif (groupRows[0] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[0];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (groupRows[groupRows.length - 1] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length - 1];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tvar allIndex = this.rows.indexOf(index),\n\t\t\t activeIndex = this.activeRows.indexOf(index);\n\n\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\n\t\t\t\tif (displayIndex > -1) {\n\n\t\t\t\t\trows.splice(top ? displayIndex : displayIndex + 1, 0, row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (activeIndex > -1) {\n\n\t\t\t\tthis.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);\n\t\t\t}\n\n\t\t\tif (allIndex > -1) {\n\n\t\t\t\tthis.rows.splice(top ? allIndex : allIndex + 1, 0, row);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (top) {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.unshift(row);\n\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t} else {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.push(row);\n\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.table.options.rowAdded.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\treturn row;\n\t};\n\n\tRowManager.prototype.moveRow = function (from, to, after) {\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowMove\", from, { pos: this.getRowPosition(from), to: to, after: after });\n\t\t}\n\n\t\tthis.moveRowActual(from, to, after);\n\n\t\tthis.table.options.rowMoved.call(this.table, from.getComponent());\n\t};\n\n\tRowManager.prototype.moveRowActual = function (from, to, after) {\n\n\t\tvar self = this;\n\n\t\tthis._moveRowInArray(this.rows, from, to, after);\n\n\t\tthis._moveRowInArray(this.activeRows, from, to, after);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tself._moveRowInArray(rows, from, to, after);\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tvar toGroup = to.getGroup();\n\n\t\t\tvar fromGroup = from.getGroup();\n\n\t\t\tif (toGroup === fromGroup) {\n\n\t\t\t\tthis._moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t} else {\n\n\t\t\t\tif (fromGroup) {\n\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._moveRowInArray = function (rows, from, to, after) {\n\n\t\tvar fromIndex, toIndex, start, end;\n\n\t\tif (from !== to) {\n\n\t\t\tfromIndex = rows.indexOf(from);\n\n\t\t\tif (fromIndex > -1) {\n\n\t\t\t\trows.splice(fromIndex, 1);\n\n\t\t\t\ttoIndex = rows.indexOf(to);\n\n\t\t\t\tif (toIndex > -1) {\n\n\t\t\t\t\tif (after) {\n\n\t\t\t\t\t\trows.splice(toIndex + 1, 0, from);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//restyle rows\n\n\t\t\tif (rows === this.getDisplayRows()) {\n\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex + 1;\n\n\t\t\t\tfor (var i = start; i <= end; i++) {\n\n\t\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.clearData = function () {\n\n\t\tthis.setData([]);\n\t};\n\n\tRowManager.prototype.getRowIndex = function (row) {\n\n\t\treturn this.findRowIndex(row, this.rows);\n\t};\n\n\tRowManager.prototype.getDisplayRowIndex = function (row) {\n\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\n\t\treturn index > -1 ? index : false;\n\t};\n\n\tRowManager.prototype.nextDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t nextRow = false;\n\n\t\tif (index !== false && index < this.displayRowsCount - 1) {\n\n\t\t\tnextRow = this.getDisplayRows()[index + 1];\n\t\t}\n\n\t\tif (nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")) {\n\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\n\t\treturn nextRow;\n\t};\n\n\tRowManager.prototype.prevDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t prevRow = false;\n\n\t\tif (index) {\n\n\t\t\tprevRow = this.getDisplayRows()[index - 1];\n\t\t}\n\n\t\tif (prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")) {\n\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\n\t\treturn prevRow;\n\t};\n\n\tRowManager.prototype.findRowIndex = function (row, list) {\n\n\t\tvar rowIndex;\n\n\t\trow = this.findRow(row);\n\n\t\tif (row) {\n\n\t\t\trowIndex = list.indexOf(row);\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getData = function (active, transform) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getComponents = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDataCount = function (active) {\n\n\t\treturn active ? this.activeRows.length : this.rows.length;\n\t};\n\n\tRowManager.prototype._genRemoteRequest = function () {\n\n\t\tvar self = this,\n\t\t table = self.table,\n\t\t options = table.options,\n\t\t params = {};\n\n\t\tif (table.modExists(\"page\")) {\n\n\t\t\t//set sort data if defined\n\n\t\t\tif (options.ajaxSorting) {\n\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\n\t\t\tif (options.ajaxFiltering) {\n\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(params, true);\n\t\t}\n\n\t\ttable.modules.ajax.sendRequest().then(function (data) {\n\n\t\t\tself.setData(data);\n\t\t}).catch(function (e) {});\n\t};\n\n\t//choose the path to refresh data after a filter update\n\n\tRowManager.prototype.filterRefresh = function () {\n\n\t\tvar table = this.table,\n\t\t options = table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxFiltering) {\n\n\t\t\tif (options.pagination == \"remote\" && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(\"filter\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\t//choose the path to refresh data after a sorter update\n\n\tRowManager.prototype.sorterRefresh = function (loadOrignalData) {\n\n\t\tvar table = this.table,\n\t\t options = this.table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxSorting) {\n\n\t\t\tif ((options.pagination == \"remote\" || options.progressiveLoad) && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(loadOrignalData ? \"filter\" : \"sort\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\tRowManager.prototype.scrollHorizontal = function (left) {\n\n\t\tthis.scrollLeft = left;\n\n\t\tthis.element.scrollLeft = left;\n\n\t\tif (this.table.options.groupBy) {\n\n\t\t\tthis.table.modules.groupRows.scrollHeaders(left);\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t}\n\t};\n\n\t//set active data set\n\n\tRowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {\n\n\t\tvar self = this,\n\t\t table = this.table,\n\t\t displayIndex;\n\n\t\tif (self.table.modExists(\"edit\")) {\n\n\t\t\tself.table.modules.edit.cancelEdit();\n\t\t}\n\n\t\tif (!stage) {\n\n\t\t\tstage = \"all\";\n\t\t}\n\n\t\tif (table.options.selectable && !table.options.selectablePersistence && table.modExists(\"selectRow\")) {\n\n\t\t\ttable.modules.selectRow.deselectRows();\n\t\t}\n\n\t\t//cascade through data refresh stages\n\n\t\tswitch (stage) {\n\n\t\t\tcase \"all\":\n\n\t\t\tcase \"filter\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"filter\")) {\n\n\t\t\t\t\t\tself.setActiveRows(table.modules.filter.filter(self.rows));\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.setActiveRows(self.rows.slice(0));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"sort\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"sort\")) {\n\n\t\t\t\t\t\ttable.modules.sort.sort(this.activeRows);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t//generic stage to allow for pipeline trigger after the data manipulation stage\n\n\t\t\tcase \"display\":\n\n\t\t\t\tthis.resetDisplayRows();\n\n\t\t\tcase \"freeze\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\t\t\t\tif (table.modules.frozenRows.isFrozen()) {\n\n\t\t\t\t\t\t\tif (!table.modules.frozenRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdisplayIndex = table.modules.frozenRows.getDisplayIndex();\n\n\t\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"group\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.groupBy && table.modExists(\"groupRows\")) {\n\n\t\t\t\t\t\tif (!table.modules.groupRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.groupRows.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"tree\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.dataTree && table.modExists(\"dataTree\")) {\n\n\t\t\t\t\t\tif (!table.modules.dataTree.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.dataTree.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t\tif (table.options.pagination && table.modExists(\"page\") && !renderInPosition) {\n\n\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\ttable.modules.page.reset();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase \"page\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.pagination && table.modExists(\"page\")) {\n\n\t\t\t\t\t\tif (!table.modules.page.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.page.getDisplayIndex();\n\n\t\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\t\ttable.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t}\n\n\t\tif (Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tif (renderInPosition) {\n\n\t\t\t\tself.reRenderInPosition();\n\t\t\t} else {\n\n\t\t\t\tself.renderTable();\n\n\t\t\t\tif (table.options.layoutColumnsOnNewData) {\n\n\t\t\t\t\tself.table.columnManager.redraw(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (table.modExists(\"columnCalcs\")) {\n\n\t\t\ttable.modules.columnCalcs.recalc(this.activeRows);\n\t\t}\n\t};\n\n\tRowManager.prototype.setActiveRows = function (activeRows) {\n\n\t\tthis.activeRows = activeRows;\n\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t};\n\n\t//reset display rows array\n\n\tRowManager.prototype.resetDisplayRows = function () {\n\n\t\tthis.displayRows = [];\n\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\n\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\tthis.table.modules.frozenRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.table.modules.page.setDisplayIndex(0);\n\t\t}\n\t};\n\n\tRowManager.prototype.getNextDisplayIndex = function () {\n\n\t\treturn this.displayRows.length;\n\t};\n\n\t//set display row pipeline data\n\n\tRowManager.prototype.setDisplayRows = function (displayRows, index) {\n\n\t\tvar output = true;\n\n\t\tif (index && typeof this.displayRows[index] != \"undefined\") {\n\n\t\t\tthis.displayRows[index] = displayRows;\n\n\t\t\toutput = true;\n\t\t} else {\n\n\t\t\tthis.displayRows.push(displayRows);\n\n\t\t\toutput = index = this.displayRows.length - 1;\n\t\t}\n\n\t\tif (index == this.displayRows.length - 1) {\n\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDisplayRows = function (index) {\n\n\t\tif (typeof index == \"undefined\") {\n\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];\n\t\t} else {\n\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t};\n\n\tRowManager.prototype.getVisibleRows = function (viewable) {\n\n\t\tvar topEdge = this.element.scrollTop,\n\t\t bottomEdge = this.element.clientHeight + topEdge,\n\t\t topFound = false,\n\t\t topRow = 0,\n\t\t bottomRow = 0,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (viewable) {\n\n\t\t\tthis.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tif (!topFound) {\n\n\t\t\t\t\t\tif (topEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttopFound = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (bottomEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\ttopRow = this.vDomTop;\n\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t};\n\n\t//repeat action accross display rows\n\n\tRowManager.prototype.displayRowIterator = function (callback) {\n\n\t\tthis.displayRows.forEach(callback);\n\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t};\n\n\t//return only actual rows (not group headers etc)\n\n\tRowManager.prototype.getRows = function () {\n\n\t\treturn this.rows;\n\t};\n\n\t///////////////// Table Rendering /////////////////\n\n\n\t//trigger rerender of table in current position\n\n\tRowManager.prototype.reRenderInPosition = function (callback) {\n\n\t\tif (this.getRenderMode() == \"virtual\") {\n\n\t\t\tvar scrollTop = this.element.scrollTop;\n\n\t\t\tvar topRow = false;\n\n\t\t\tvar topOffset = false;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tvar rows = this.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\t\tif (topOffset === false || Math.abs(diff) < topOffset) {\n\n\t\t\t\t\t\ttopOffset = diff;\n\n\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\n\t\t\tthis._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.setRenderMode = function () {\n\n\t\tif ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {\n\n\t\t\tthis.renderMode = \"virtual\";\n\t\t} else {\n\n\t\t\tthis.renderMode = \"classic\";\n\t\t}\n\t};\n\n\tRowManager.prototype.getRenderMode = function () {\n\n\t\treturn this.renderMode;\n\t};\n\n\tRowManager.prototype.renderTable = function () {\n\n\t\tvar self = this;\n\n\t\tself.table.options.renderStarted.call(this.table);\n\n\t\tself.element.scrollTop = 0;\n\n\t\tswitch (self.renderMode) {\n\n\t\t\tcase \"classic\":\n\n\t\t\t\tself._simpleRender();\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"virtual\":\n\n\t\t\t\tself._virtualRenderFill();\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif (self.firstRender) {\n\n\t\t\tif (self.displayRowsCount) {\n\n\t\t\t\tself.firstRender = false;\n\n\t\t\t\tself.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tself.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (!self.displayRowsCount) {\n\n\t\t\tif (self.table.options.placeholder) {\n\n\t\t\t\tif (this.renderMode) {\n\n\t\t\t\t\tself.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\t}\n\n\t\t\t\tself.getElement().appendChild(self.table.options.placeholder);\n\t\t\t}\n\t\t}\n\n\t\tself.table.options.renderComplete.call(this.table);\n\t};\n\n\t//simple render on heightless table\n\n\tRowManager.prototype._simpleRender = function () {\n\n\t\tthis._clearVirtualDom();\n\n\t\tif (this.displayRowsCount) {\n\n\t\t\tthis.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\tRowManager.prototype.checkClassicModeGroupHeaderWidth = function () {\n\n\t\tvar self = this,\n\t\t element = this.tableElement,\n\t\t onlyGroupHeaders = true;\n\n\t\tself.getDisplayRows().forEach(function (row, index) {\n\n\t\t\tself.styleRow(row, index);\n\n\t\t\telement.appendChild(row.getElement());\n\n\t\t\trow.initialize(true);\n\n\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\n\t\tif (onlyGroupHeaders) {\n\n\t\t\telement.style.minWidth = self.table.columnManager.getWidth() + \"px\";\n\t\t} else {\n\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t};\n\n\t//show scrollbars on empty table div\n\n\tRowManager.prototype.renderEmptyScroll = function () {\n\n\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\n\t\tthis.tableElement.style.minHeight = \"1px\";\n\n\t\tthis.tableElement.style.visibility = \"hidden\";\n\t};\n\n\tRowManager.prototype._clearVirtualDom = function () {\n\n\t\tvar element = this.tableElement;\n\n\t\tif (this.table.options.placeholder && this.table.options.placeholder.parentNode) {\n\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\n\t\t}\n\n\t\t// element.children.detach();\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.style.paddingTop = \"\";\n\n\t\telement.style.paddingBottom = \"\";\n\n\t\telement.style.minWidth = \"\";\n\n\t\telement.style.minHeight = \"\";\n\n\t\telement.style.visibility = \"\";\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\n\t\tthis.vDomBottom = 0;\n\n\t\tthis.vDomTopPad = 0;\n\n\t\tthis.vDomBottomPad = 0;\n\t};\n\n\tRowManager.prototype.styleRow = function (row, index) {\n\n\t\tvar rowEl = row.getElement();\n\n\t\tif (index % 2) {\n\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t} else {\n\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t};\n\n\t//full virtual render\n\n\tRowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {\n\n\t\tvar self = this,\n\t\t element = self.tableElement,\n\t\t holder = self.element,\n\t\t topPad = 0,\n\t\t rowsHeight = 0,\n\t\t topPadHeight = 0,\n\t\t i = 0,\n\t\t onlyGroupHeaders = true,\n\t\t rows = self.getDisplayRows();\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif (!position) {\n\n\t\t\tself._clearVirtualDom();\n\t\t} else {\n\n\t\t\twhile (element.firstChild) {\n\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t} //check if position is too close to bottom of table\n\n\t\t\tvar heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;\n\n\t\t\tif (heightOccupied < self.height) {\n\n\t\t\t\tposition -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);\n\n\t\t\t\tif (position < 0) {\n\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\n\t\t\ttopPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);\n\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tself.vDomTop = position;\n\n\t\t\tself.vDomBottom = position - 1;\n\n\t\t\twhile ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {\n\n\t\t\t\tvar index = self.vDomBottom + 1,\n\t\t\t\t row = rows[index],\n\t\t\t\t rowHeight = 0;\n\n\t\t\t\tself.styleRow(row, index);\n\n\t\t\t\telement.appendChild(row.getElement());\n\n\t\t\t\tif (!row.initialized) {\n\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!row.heightInitialized) {\n\n\t\t\t\t\t\trow.normalizeHeight(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowHeight = row.getHeight();\n\n\t\t\t\tif (i < topPad) {\n\n\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t} else {\n\n\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (rowHeight > this.vDomWindowBuffer) {\n\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t}\n\n\t\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\t\tonlyGroupHeaders = false;\n\t\t\t\t}\n\n\t\t\t\tself.vDomBottom++;\n\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tif (!position) {\n\n\t\t\t\tthis.vDomTopPad = 0;\n\n\t\t\t\t//adjust rowheight to match average of rendered elements\n\n\t\t\t\tself.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\n\n\t\t\t\tself.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);\n\n\t\t\t\tself.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;\n\t\t\t} else {\n\n\t\t\t\tself.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;\n\n\t\t\t\tself.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\n\t\t\telement.style.paddingTop = self.vDomTopPad + \"px\";\n\n\t\t\telement.style.paddingBottom = self.vDomBottomPad + \"px\";\n\n\t\t\tif (forceMove) {\n\n\t\t\t\tthis.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\n\t\t\tif (this.element.scrollWidth > this.element.offsetWidth && forceMove) {\n\n\t\t\t\tthis.scrollTop += this.element.offsetHeight - this.element.clientHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\telement.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + \"px\" : \"\";\n\n\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\tif (self.table.modules.layout.getMode() != \"fitDataFill\" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {\n\n\t\t\t\t\tself.tableElement.style.minWidth = self.table.columnManager.getWidth();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\t//handle vertical scrolling\n\n\tRowManager.prototype.scrollVertical = function (dir) {\n\n\t\tvar topDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\tvar bottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\n\t\tif (-topDiff > margin || bottomDiff > margin) {\n\n\t\t\t//if big scroll redraw table;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tthis._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tif (dir) {\n\n\t\t\t\t//scrolling up\n\n\t\t\t\tif (topDiff < 0) {\n\n\t\t\t\t\tthis._addTopRow(-topDiff);\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff < 0) {\n\n\t\t\t\t\t//hide bottom row if needed\n\n\t\t\t\t\tif (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeBottomRow(-bottomDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//scrolling down\n\n\t\t\t\tif (topDiff >= 0) {\n\n\t\t\t\t\t//hide top row if needed\n\n\t\t\t\t\tif (this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeTopRow(topDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff >= 0) {\n\n\t\t\t\t\tthis._addBottomRow(bottomDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._addTopRow = function (topDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomTop) {\n\n\t\t\tvar index = this.vDomTop - 1,\n\t\t\t topRow = rows[index],\n\t\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide top row if needed\n\n\t\t\tif (topDiff >= topRowHeight) {\n\n\t\t\t\tthis.styleRow(topRow, index);\n\n\t\t\t\ttable.insertBefore(topRow.getElement(), table.firstChild);\n\n\t\t\t\tif (!topRow.initialized || !topRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomTopNewRows.push(topRow);\n\n\t\t\t\t\tif (!topRow.heightInitialized) {\n\n\t\t\t\t\t\ttopRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttopRow.initialize();\n\n\t\t\t\tthis.vDomTopPad -= topRowHeight;\n\n\t\t\t\tif (this.vDomTopPad < 0) {\n\n\t\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (!index) {\n\n\t\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosTop -= topRowHeight;\n\n\t\t\t\tthis.vDomTop--;\n\t\t\t}\n\n\t\t\ttopDiff = -(this.scrollTop - this.vDomScrollPosTop);\n\n\t\t\tif (topRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = topRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addTopRow(topDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomTopNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeTopRow = function (topDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t topRow = this.getDisplayRows()[this.vDomTop],\n\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (topDiff >= topRowHeight) {\n\n\t\t\tvar rowEl = topRow.getElement();\n\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.vDomTopPad += topRowHeight;\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;\n\n\t\t\tthis.vDomTop++;\n\n\t\t\ttopDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\t\tthis._removeTopRow(topDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._addBottomRow = function (bottomDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomBottom < this.displayRowsCount - 1) {\n\n\t\t\tvar index = this.vDomBottom + 1,\n\t\t\t bottomRow = rows[index],\n\t\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide bottom row if needed\n\n\t\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\t\tthis.styleRow(bottomRow, index);\n\n\t\t\t\ttable.appendChild(bottomRow.getElement());\n\n\t\t\t\tif (!bottomRow.initialized || !bottomRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomBottomNewRows.push(bottomRow);\n\n\t\t\t\t\tif (!bottomRow.heightInitialized) {\n\n\t\t\t\t\t\tbottomRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbottomRow.initialize();\n\n\t\t\t\tthis.vDomBottomPad -= bottomRowHeight;\n\n\t\t\t\tif (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {\n\n\t\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosBottom += bottomRowHeight;\n\n\t\t\t\tthis.vDomBottom++;\n\t\t\t}\n\n\t\t\tbottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\t\tif (bottomRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = bottomRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addBottomRow(bottomDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomBottomNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeBottomRow = function (bottomDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t bottomRow = this.getDisplayRows()[this.vDomBottom],\n\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\tvar rowEl = bottomRow.getElement();\n\n\t\t\tif (rowEl.parentNode) {\n\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.vDomBottomPad += bottomRowHeight;\n\n\t\t\tif (this.vDomBottomPad < 0) {\n\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\tthis.vDomScrollPosBottom -= bottomRowHeight;\n\n\t\t\tthis.vDomBottom--;\n\n\t\t\tbottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);\n\n\t\t\tthis._removeBottomRow(bottomDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._quickNormalizeRowHeight = function (rows) {\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\n\t\trows.length = 0;\n\t};\n\n\t//normalize height of active rows\n\n\tRowManager.prototype.normalizeHeight = function () {\n\n\t\tthis.activeRows.forEach(function (row) {\n\n\t\t\trow.normalizeHeight();\n\t\t});\n\t};\n\n\t//adjust the height of the table holder to fit in the Tabulator element\n\n\tRowManager.prototype.adjustTableSize = function () {\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tthis.height = this.element.clientHeight;\n\n\t\t\tthis.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;\n\n\t\t\tvar otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);\n\n\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t}\n\t};\n\n\t//renitialize all rows\n\n\tRowManager.prototype.reinitialize = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.reinitialize();\n\t\t});\n\t};\n\n\t//redraw table\n\n\tRowManager.prototype.redraw = function (force) {\n\n\t\tvar pos = 0,\n\t\t left = this.scrollLeft;\n\n\t\tthis.adjustTableSize();\n\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\n\t\tif (!force) {\n\n\t\t\tif (self.renderMode == \"classic\") {\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.refreshActiveData(\"group\", false, false);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._simpleRender();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tthis.reRenderInPosition();\n\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t}\n\n\t\t\tif (!this.displayRowsCount) {\n\n\t\t\t\tif (this.table.options.placeholder) {\n\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\t\t}\n\t};\n\n\tRowManager.prototype.resetScroll = function () {\n\n\t\tthis.element.scrollLeft = 0;\n\n\t\tthis.element.scrollTop = 0;\n\n\t\tif (this.table.browser === \"ie\") {\n\n\t\t\tvar event = document.createEvent(\"Event\");\n\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\n\t\t\tthis.element.dispatchEvent(event);\n\t\t} else {\n\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t};\n\n\t//public row object\n\n\tvar RowComponent = function RowComponent(row) {\n\n\t\tthis._row = row;\n\t};\n\n\tRowComponent.prototype.getData = function (transform) {\n\n\t\treturn this._row.getData(transform);\n\t};\n\n\tRowComponent.prototype.getElement = function () {\n\n\t\treturn this._row.getElement();\n\t};\n\n\tRowComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tRowComponent.prototype.getCell = function (column) {\n\n\t\tvar cell = this._row.getCell(column);\n\n\t\treturn cell ? cell.getComponent() : false;\n\t};\n\n\tRowComponent.prototype.getIndex = function () {\n\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t};\n\n\tRowComponent.prototype.getPosition = function (active) {\n\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\n\t};\n\n\tRowComponent.prototype.delete = function () {\n\n\t\treturn this._row.delete();\n\t};\n\n\tRowComponent.prototype.scrollTo = function () {\n\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\n\t};\n\n\tRowComponent.prototype.pageTo = function () {\n\n\t\tif (this._row.table.modExists(\"page\", true)) {\n\n\t\t\treturn this._row.table.modules.page.setPageToRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.move = function (to, after) {\n\n\t\tthis._row.moveToRow(to, after);\n\t};\n\n\tRowComponent.prototype.update = function (data) {\n\n\t\treturn this._row.updateData(data);\n\t};\n\n\tRowComponent.prototype.normalizeHeight = function () {\n\n\t\tthis._row.normalizeHeight(true);\n\t};\n\n\tRowComponent.prototype.select = function () {\n\n\t\tthis._row.table.modules.selectRow.selectRows(this._row);\n\t};\n\n\tRowComponent.prototype.deselect = function () {\n\n\t\tthis._row.table.modules.selectRow.deselectRows(this._row);\n\t};\n\n\tRowComponent.prototype.toggleSelect = function () {\n\n\t\tthis._row.table.modules.selectRow.toggleRow(this._row);\n\t};\n\n\tRowComponent.prototype.isSelected = function () {\n\n\t\treturn this._row.table.modules.selectRow.isRowSelected(this._row);\n\t};\n\n\tRowComponent.prototype._getSelf = function () {\n\n\t\treturn this._row;\n\t};\n\n\tRowComponent.prototype.freeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.freezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.unfreeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.unfreezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeCollapse = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.collapseRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeExpand = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.expandRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeToggle = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.toggleRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.getTreeParent = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeParent(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.getTreeChildren = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeChildren(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.reformat = function () {\n\n\t\treturn this._row.reinitialize();\n\t};\n\n\tRowComponent.prototype.getGroup = function () {\n\n\t\treturn this._row.getGroup().getComponent();\n\t};\n\n\tRowComponent.prototype.getTable = function () {\n\n\t\treturn this._row.table;\n\t};\n\n\tRowComponent.prototype.getNextRow = function () {\n\n\t\tvar row = this._row.nextRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tRowComponent.prototype.getPrevRow = function () {\n\n\t\tvar row = this._row.prevRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tvar Row = function Row(data, parent) {\n\n\t\tthis.table = parent.table;\n\n\t\tthis.parent = parent;\n\n\t\tthis.data = {};\n\n\t\tthis.type = \"row\"; //type of element\n\n\t\tthis.element = this.createElement();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.cells = [];\n\n\t\tthis.height = 0; //hold element height\n\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\n\n\t\tthis.manualHeight = false; //user has manually set row height\n\n\t\tthis.outerHeight = 0; //holde lements outer height\n\n\t\tthis.initialized = false; //element has been rendered\n\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\n\n\t\tthis.setData(data);\n\n\t\tthis.generateElement();\n\t};\n\n\tRow.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\n\t\tel.setAttribute(\"role\", \"row\");\n\n\t\treturn el;\n\t};\n\n\tRow.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tRow.prototype.detachElement = function () {\n\n\t\tif (this.element && this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.generateElement = function () {\n\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//set row selection characteristics\n\n\t\tif (self.table.options.selectable !== false && self.table.modExists(\"selectRow\")) {\n\n\t\t\tself.table.modules.selectRow.initializeRow(this);\n\t\t}\n\n\t\t//setup movable rows\n\n\t\tif (self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeRow(this);\n\t\t}\n\n\t\t//setup data tree\n\n\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\")) {\n\n\t\t\tself.table.modules.dataTree.initializeRow(this);\n\t\t}\n\n\t\t//handle row click events\n\n\t\tif (self.table.options.rowClick) {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\n\t\t\t\tself.table.options.rowClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblClick) {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tself.table.options.rowDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowContext) {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tself.table.options.rowContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//handle mouse events\n\n\t\tif (self.table.options.rowMouseEnter) {\n\n\t\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseEnter(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseLeave) {\n\n\t\t\tself.element.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseLeave(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOver) {\n\n\t\t\tself.element.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOver(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOut) {\n\n\t\t\tself.element.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOut(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseMove) {\n\n\t\t\tself.element.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseMove(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tself.table.options.rowTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.table.options.rowDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tself.table.options.rowTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\tRow.prototype.generateCells = function () {\n\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t};\n\n\t//functions to setup on first render\n\n\tRow.prototype.initialize = function (force) {\n\n\t\tvar self = this;\n\n\t\tif (!self.initialized || force) {\n\n\t\t\tself.deleteCells();\n\n\t\t\twhile (self.element.firstChild) {\n\t\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t\t} //handle frozen cells\n\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\t\tthis.table.modules.frozenColumns.layoutRow(this);\n\t\t\t}\n\n\t\t\tthis.generateCells();\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tself.element.appendChild(cell.getElement());\n\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\n\t\t\tif (force) {\n\n\t\t\t\tself.normalizeHeight();\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\n\t\t\t\tself.table.modules.dataTree.layoutRow(this);\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.responsiveLayout === \"collapse\" && self.table.modExists(\"responsiveLayout\")) {\n\n\t\t\t\tself.table.modules.responsiveLayout.layoutRow(this);\n\t\t\t}\n\n\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t}\n\n\t\t\t//set resizable handles\n\n\t\t\tif (self.table.options.resizableRows && self.table.modExists(\"resizeRows\")) {\n\n\t\t\t\tself.table.modules.resizeRows.initializeRow(self);\n\t\t\t}\n\n\t\t\tself.initialized = true;\n\t\t}\n\t};\n\n\tRow.prototype.reinitializeHeight = function () {\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t};\n\n\tRow.prototype.reinitialize = function () {\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (!this.manualHeight) {\n\n\t\t\tthis.height = 0;\n\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\t//get heights when doing bulk row style calcs in virtual DOM\n\n\tRow.prototype.calcHeight = function (force) {\n\n\t\tvar maxHeight = 0,\n\t\t minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tvar height = cell.getHeight();\n\n\t\t\tif (height > maxHeight) {\n\n\t\t\t\tmaxHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tif (force) {\n\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t} else {\n\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t}\n\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t};\n\n\t//set of cells\n\n\tRow.prototype.setCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setHeight();\n\t\t});\n\n\t\tthis.heightInitialized = true;\n\t};\n\n\tRow.prototype.clearCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.clearHeight();\n\t\t});\n\t};\n\n\t//normalize the height of elements in the row\n\n\tRow.prototype.normalizeHeight = function (force) {\n\n\t\tif (force) {\n\n\t\t\tthis.clearCellHeight();\n\t\t}\n\n\t\tthis.calcHeight(force);\n\n\t\tthis.setCellHeight();\n\t};\n\n\t// Row.prototype.setHeight = function(height){\n\n\t// \tthis.height = height;\n\n\n\t// \tthis.setCellHeight();\n\n\t// };\n\n\n\t//set height of rows\n\n\tRow.prototype.setHeight = function (height, force) {\n\n\t\tif (this.height != height || force) {\n\n\t\t\tthis.manualHeight = true;\n\n\t\t\tthis.height = height;\n\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\n\t\t\tthis.setCellHeight();\n\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\n\tRow.prototype.getHeight = function () {\n\n\t\treturn this.outerHeight;\n\t};\n\n\t//return rows outer Width\n\n\tRow.prototype.getWidth = function () {\n\n\t\treturn this.element.offsetWidth;\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tRow.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\t//////////////// Data Management /////////////////\n\n\n\tRow.prototype.setData = function (data) {\n\n\t\tif (this.table.modExists(\"mutator\")) {\n\n\t\t\tdata = this.table.modules.mutator.transformRow(data, \"data\");\n\t\t}\n\n\t\tthis.data = data;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.table.modules.reactiveData.watchRow(this);\n\t\t}\n\t};\n\n\t//update the rows data\n\n\tRow.prototype.updateData = function (data) {\n\t\tvar _this6 = this;\n\n\t\tvar self = this,\n\t\t visible = Tabulator.prototype.helpers.elVisible(this.element);\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.block();\n\t\t\t}\n\n\t\t\t//mutate incomming data if needed\n\n\t\t\tif (self.table.modExists(\"mutator\")) {\n\n\t\t\t\tdata = self.table.modules.mutator.transformRow(data, \"data\", true);\n\t\t\t}\n\n\t\t\t//set data\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tself.data[attrname] = data[attrname];\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.unblock();\n\t\t\t}\n\n\t\t\t//update affected cells only\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tvar cell = _this6.getCell(attrname);\n\n\t\t\t\tif (cell) {\n\n\t\t\t\t\tif (cell.getValue() != data[attrname]) {\n\n\t\t\t\t\t\tcell.setValueProcessData(data[attrname]);\n\n\t\t\t\t\t\tif (visible) {\n\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Partial reinitialization if visible\n\n\t\t\tif (visible) {\n\n\t\t\t\tself.normalizeHeight();\n\n\t\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t_this6.initialized = false;\n\n\t\t\t\t_this6.height = 0;\n\n\t\t\t\t_this6.heightStyled = \"\";\n\t\t\t}\n\n\t\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\") && typeof data[_this6.table.modules.dataTree.getChildField()] !== \"undefined\") {\n\n\t\t\t\t_this6.table.modules.dataTree.initializeRow(_this6);\n\n\t\t\t\t_this6.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t\t\t}\n\n\t\t\t//self.reinitialize();\n\n\n\t\t\tself.table.options.rowUpdated.call(_this6.table, self.getComponent());\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.getData = function (transform) {\n\n\t\tvar self = this;\n\n\t\tif (transform) {\n\n\t\t\tif (self.table.modExists(\"accessor\")) {\n\n\t\t\t\treturn self.table.modules.accessor.transformRow(self.data, transform);\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn this.data;\n\t\t}\n\t};\n\n\tRow.prototype.getCell = function (column) {\n\n\t\tvar match = false;\n\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\n\t\tmatch = this.cells.find(function (cell) {\n\n\t\t\treturn cell.column === column;\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tRow.prototype.getCellIndex = function (findCell) {\n\n\t\treturn this.cells.findIndex(function (cell) {\n\n\t\t\treturn cell === findCell;\n\t\t});\n\t};\n\n\tRow.prototype.findNextEditableCell = function (index) {\n\n\t\tvar nextCell = false;\n\n\t\tif (index < this.cells.length - 1) {\n\n\t\t\tfor (var i = index + 1; i < this.cells.length; i++) {\n\n\t\t\t\tvar cell = this.cells[i];\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tvar allowEdit = true;\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tnextCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nextCell;\n\t};\n\n\tRow.prototype.findPrevEditableCell = function (index) {\n\n\t\tvar prevCell = false;\n\n\t\tif (index > 0) {\n\n\t\t\tfor (var i = index - 1; i >= 0; i--) {\n\n\t\t\t\tvar cell = this.cells[i],\n\t\t\t\t allowEdit = true;\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tprevCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn prevCell;\n\t};\n\n\tRow.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\tRow.prototype.nextRow = function () {\n\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.prevRow = function () {\n\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.moveToRow = function (to, before) {\n\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\n\t\tif (toRow) {\n\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t};\n\n\t///////////////////// Actions /////////////////////\n\n\n\tRow.prototype.delete = function () {\n\t\tvar _this7 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar index = _this7.table.rowManager.getRowIndex(_this7);\n\n\t\t\t_this7.deleteActual();\n\n\t\t\tif (_this7.table.options.history && _this7.table.modExists(\"history\")) {\n\n\t\t\t\tif (index) {\n\n\t\t\t\t\tindex = _this7.table.rowManager.rows[index - 1];\n\t\t\t\t}\n\n\t\t\t\t_this7.table.modules.history.action(\"rowDelete\", _this7, { data: _this7.getData(), pos: !index, index: index });\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.deleteActual = function (blockRedraw) {\n\n\t\tvar index = this.table.rowManager.getRowIndex(this);\n\n\t\t//deselect row if it is selected\n\n\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\tthis.table.modules.selectRow._deselectRow(this, true);\n\t\t}\n\n\t\t// if(this.table.options.dataTree && this.table.modExists(\"dataTree\")){\n\n\t\t// \tthis.table.modules.dataTree.collapseRow(this, true);\n\n\t\t// }\n\n\n\t\t//remove any reactive data watchers from row object\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {}\n\n\t\t// this.table.modules.reactiveData.unwatchRow(this);\n\n\t\t//remove from group\n\n\t\tif (this.modules.group) {\n\n\t\t\tthis.modules.group.removeRow(this);\n\t\t}\n\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\n\t\tthis.deleteCells();\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\t//recalc column calculations if present\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this);\n\t\t\t} else {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRow.prototype.deleteCells = function () {\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t};\n\n\tRow.prototype.wipe = function () {\n\n\t\tthis.deleteCells();\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}this.element = false;\n\n\t\tthis.modules = {};\n\n\t\tif (this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.getGroup = function () {\n\n\t\treturn this.modules.group || false;\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tRow.prototype.getComponent = function () {\n\n\t\treturn new RowComponent(this);\n\t};\n\n\t//public row object\n\n\tvar CellComponent = function CellComponent(cell) {\n\n\t\tthis._cell = cell;\n\t};\n\n\tCellComponent.prototype.getValue = function () {\n\n\t\treturn this._cell.getValue();\n\t};\n\n\tCellComponent.prototype.getOldValue = function () {\n\n\t\treturn this._cell.getOldValue();\n\t};\n\n\tCellComponent.prototype.getElement = function () {\n\n\t\treturn this._cell.getElement();\n\t};\n\n\tCellComponent.prototype.getRow = function () {\n\n\t\treturn this._cell.row.getComponent();\n\t};\n\n\tCellComponent.prototype.getData = function () {\n\n\t\treturn this._cell.row.getData();\n\t};\n\n\tCellComponent.prototype.getField = function () {\n\n\t\treturn this._cell.column.getField();\n\t};\n\n\tCellComponent.prototype.getColumn = function () {\n\n\t\treturn this._cell.column.getComponent();\n\t};\n\n\tCellComponent.prototype.setValue = function (value, mutate) {\n\n\t\tif (typeof mutate == \"undefined\") {\n\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t};\n\n\tCellComponent.prototype.restoreOldValue = function () {\n\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t};\n\n\tCellComponent.prototype.edit = function (force) {\n\n\t\treturn this._cell.edit(force);\n\t};\n\n\tCellComponent.prototype.cancelEdit = function () {\n\n\t\tthis._cell.cancelEdit();\n\t};\n\n\tCellComponent.prototype.nav = function () {\n\n\t\treturn this._cell.nav();\n\t};\n\n\tCellComponent.prototype.checkHeight = function () {\n\n\t\tthis._cell.checkHeight();\n\t};\n\n\tCellComponent.prototype.getTable = function () {\n\n\t\treturn this._cell.table;\n\t};\n\n\tCellComponent.prototype._getSelf = function () {\n\n\t\treturn this._cell;\n\t};\n\n\tvar Cell = function Cell(column, row) {\n\n\t\tthis.table = column.table;\n\n\t\tthis.column = column;\n\n\t\tthis.row = row;\n\n\t\tthis.element = null;\n\n\t\tthis.value = null;\n\n\t\tthis.oldValue = null;\n\n\t\tthis.height = null;\n\n\t\tthis.width = null;\n\n\t\tthis.minWidth = null;\n\n\t\tthis.build();\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\t//generate element\n\n\tCell.prototype.build = function () {\n\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\t};\n\n\tCell.prototype.generateElement = function () {\n\n\t\tthis.element = document.createElement('div');\n\n\t\tthis.element.className = \"tabulator-cell\";\n\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\n\t\tthis.element = this.element;\n\t};\n\n\tCell.prototype._configureCell = function () {\n\n\t\tvar self = this,\n\t\t cellEvents = self.column.cellEvents,\n\t\t element = self.element,\n\t\t field = this.column.getField();\n\n\t\t//set text alignment\n\n\t\telement.style.textAlign = self.column.hozAlign;\n\n\t\tif (field) {\n\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\n\t\tif (self.column.definition.cssClass) {\n\n\t\t\tvar classNames = self.column.definition.cssClass.split(\" \");\n\n\t\t\tclassNames.forEach(function (className) {\n\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\t//update tooltip on mouse enter\n\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\") {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself._generateTooltip();\n\t\t\t});\n\t\t}\n\n\t\tself._bindClickEvents(cellEvents);\n\n\t\tself._bindTouchEvents(cellEvents);\n\n\t\tself._bindMouseEvents(cellEvents);\n\n\t\tif (self.column.modules.edit) {\n\n\t\t\tself.table.modules.edit.bindEditor(self);\n\t\t}\n\n\t\tif (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeCell(self);\n\t\t}\n\n\t\t//hide cell if not visible\n\n\t\tif (!self.column.visible) {\n\n\t\t\tself.hide();\n\t\t}\n\t};\n\n\tCell.prototype._bindClickEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\t//set event bindings\n\n\t\tif (cellEvents.cellClick || self.table.options.cellClick) {\n\n\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellClick) {\n\n\t\t\t\t\tcellEvents.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellClick) {\n\n\t\t\t\t\tself.table.options.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblClick || this.table.options.cellDblClick) {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellDblClick) {\n\n\t\t\t\t\tcellEvents.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellDblClick) {\n\n\t\t\t\t\tself.table.options.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// IE\n\n\t\t\t\t\tvar range = document.body.createTextRange();\n\n\t\t\t\t\trange.moveToElementText(self.element);\n\n\t\t\t\t\trange.select();\n\t\t\t\t} else if (window.getSelection) {\n\n\t\t\t\t\tvar range = document.createRange();\n\n\t\t\t\t\trange.selectNode(self.element);\n\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\n\t\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellContext || this.table.options.cellContext) {\n\n\t\t\telement.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellContext) {\n\n\t\t\t\t\tcellEvents.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellContext) {\n\n\t\t\t\t\tself.table.options.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindMouseEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\tif (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseEnter) {\n\n\t\t\t\t\tcellEvents.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseEnter) {\n\n\t\t\t\t\tself.table.options.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {\n\n\t\t\telement.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseLeave) {\n\n\t\t\t\t\tcellEvents.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseLeave) {\n\n\t\t\t\t\tself.table.options.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {\n\n\t\t\telement.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOver) {\n\n\t\t\t\t\tcellEvents.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOver) {\n\n\t\t\t\t\tself.table.options.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {\n\n\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOut) {\n\n\t\t\t\t\tcellEvents.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOut) {\n\n\t\t\t\t\tself.table.options.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseMove) {\n\n\t\t\t\t\tcellEvents.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseMove) {\n\n\t\t\t\t\tself.table.options.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindTouchEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\tif (cellEvents.cellTap || this.table.options.cellTap) {\n\n\t\t\ttap = false;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTap) {\n\n\t\t\t\t\t\tcellEvents.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTap) {\n\n\t\t\t\t\t\tself.table.options.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblTap || this.table.options.cellDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellDblTap) {\n\n\t\t\t\t\t\tcellEvents.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellDblTap) {\n\n\t\t\t\t\t\tself.table.options.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellTapHold || this.table.options.cellTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTapHold) {\n\n\t\t\t\t\t\tcellEvents.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTapHold) {\n\n\t\t\t\t\t\tself.table.options.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\t//generate cell contents\n\n\tCell.prototype._generateContents = function () {\n\n\t\tvar val;\n\n\t\tif (this.table.modExists(\"format\")) {\n\n\t\t\tval = this.table.modules.format.formatValue(this);\n\t\t} else {\n\n\t\t\tval = this.element.innerHTML = this.value;\n\t\t}\n\n\t\tswitch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {\n\n\t\t\tcase \"object\":\n\n\t\t\t\tif (val instanceof Node) {\n\n\t\t\t\t\t//clear previous cell contents\n\n\t\t\t\t\twhile (this.element.firstChild) {\n\t\t\t\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t\t\t\t}this.element.appendChild(val);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif (val != null) {\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"undefined\":\n\n\t\t\tcase \"null\":\n\n\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tthis.element.innerHTML = val;\n\n\t\t}\n\t};\n\n\tCell.prototype.cellRendered = function () {\n\n\t\tif (this.table.modExists(\"format\") && this.table.modules.format.cellRendered) {\n\n\t\t\tthis.table.modules.format.cellRendered(this);\n\t\t}\n\t};\n\n\t//generate tooltip text\n\n\tCell.prototype._generateTooltip = function () {\n\n\t\tvar tooltip = this.column.tooltip;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\ttooltip = this.value;\n\t\t\t} else if (typeof tooltip == \"function\") {\n\n\t\t\t\ttooltip = tooltip(this.getComponent());\n\n\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\ttooltip = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof tooltip === \"undefined\") {\n\n\t\t\t\ttooltip = \"\";\n\t\t\t}\n\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\n\t\t} else {\n\n\t\t\tthis.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//////////////////// Getters ////////////////////\n\n\tCell.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tCell.prototype.getValue = function () {\n\n\t\treturn this.value;\n\t};\n\n\tCell.prototype.getOldValue = function () {\n\n\t\treturn this.oldValue;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tCell.prototype.setValue = function (value, mutate) {\n\n\t\tvar changed = this.setValueProcessData(value, mutate),\n\t\t component;\n\n\t\tif (changed) {\n\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\t\tthis.table.modules.history.action(\"cellEdit\", this, { oldValue: this.oldValue, newValue: this.value });\n\t\t\t}\n\n\t\t\tcomponent = this.getComponent();\n\n\t\t\tif (this.column.cellEvents.cellEdited) {\n\n\t\t\t\tthis.column.cellEvents.cellEdited.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEdited.call(this.table, component);\n\n\t\t\tthis.table.options.dataEdited.call(this.table, this.table.rowManager.getData());\n\t\t}\n\t};\n\n\tCell.prototype.setValueProcessData = function (value, mutate) {\n\n\t\tvar changed = false;\n\n\t\tif (this.value != value) {\n\n\t\t\tchanged = true;\n\n\t\t\tif (mutate) {\n\n\t\t\t\tif (this.column.modules.mutate) {\n\n\t\t\t\t\tvalue = this.table.modules.mutator.transformCell(this, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif (changed && this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.column.definition.topCalc || this.column.definition.bottomCalc) {\n\n\t\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\t\tif (this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnCalcs != \"table\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this.row);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t};\n\n\tCell.prototype.setValueActual = function (value) {\n\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.block();\n\t\t}\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.unblock();\n\t\t}\n\n\t\tthis._generateContents();\n\n\t\tthis._generateTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (this.table.options.resizableColumns && this.table.modExists(\"resizeColumns\")) {\n\n\t\t\tthis.table.modules.resizeColumns.initializeColumn(\"cell\", this.column, this.element);\n\t\t}\n\n\t\t//handle frozen cells\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layoutElement(this.element, this.column);\n\t\t}\n\t};\n\n\tCell.prototype.setWidth = function () {\n\n\t\tthis.width = this.column.width;\n\n\t\tthis.element.style.width = this.column.widthStyled;\n\t};\n\n\tCell.prototype.clearWidth = function () {\n\n\t\tthis.width = \"\";\n\n\t\tthis.element.style.width = \"\";\n\t};\n\n\tCell.prototype.getWidth = function () {\n\n\t\treturn this.width || this.element.offsetWidth;\n\t};\n\n\tCell.prototype.setMinWidth = function () {\n\n\t\tthis.minWidth = this.column.minWidth;\n\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t};\n\n\tCell.prototype.checkHeight = function () {\n\n\t\t// var height = this.element.css(\"height\");\n\n\t\tthis.row.reinitializeHeight();\n\t};\n\n\tCell.prototype.clearHeight = function () {\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.height = null;\n\t};\n\n\tCell.prototype.setHeight = function () {\n\n\t\tthis.height = this.row.height;\n\n\t\tthis.element.style.height = this.row.heightStyled;\n\t};\n\n\tCell.prototype.getHeight = function () {\n\n\t\treturn this.height || this.element.offsetHeight;\n\t};\n\n\tCell.prototype.show = function () {\n\n\t\tthis.element.style.display = \"\";\n\t};\n\n\tCell.prototype.hide = function () {\n\n\t\tthis.element.style.display = \"none\";\n\t};\n\n\tCell.prototype.edit = function (force) {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\treturn this.table.modules.edit.editCell(this, force);\n\t\t}\n\t};\n\n\tCell.prototype.cancelEdit = function () {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\tvar editing = this.table.modules.edit.getCurrentCell();\n\n\t\t\tif (editing && editing._getSelf() === this) {\n\n\t\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t\t}\n\t\t}\n\t};\n\n\tCell.prototype.delete = function () {\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.element = false;\n\n\t\tthis.column.deleteCell(this);\n\n\t\tthis.row.deleteCell(this);\n\n\t\tthis.calcs = {};\n\t};\n\n\t//////////////// Navigation /////////////////\n\n\n\tCell.prototype.nav = function () {\n\n\t\tvar self = this,\n\t\t nextCell = false,\n\t\t index = this.row.getCellIndex(this);\n\n\t\treturn {\n\n\t\t\tnext: function next() {\n\n\t\t\t\tvar nextCell = this.right(),\n\t\t\t\t nextRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tnextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\t\tif (nextRow) {\n\n\t\t\t\t\t\tnextCell = nextRow.findNextEditableCell(-1);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tprev: function prev() {\n\n\t\t\t\tvar nextCell = this.left(),\n\t\t\t\t prevRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tprevRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\t\tif (prevRow) {\n\n\t\t\t\t\t\tnextCell = prevRow.findPrevEditableCell(prevRow.cells.length);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tleft: function left() {\n\n\t\t\t\tnextCell = self.row.findPrevEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tright: function right() {\n\n\t\t\t\tnextCell = self.row.findNextEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tup: function up() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tdown: function down() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\t};\n\n\tCell.prototype.getIndex = function () {\n\n\t\tthis.row.getCellIndex(this);\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tCell.prototype.getComponent = function () {\n\n\t\treturn new CellComponent(this);\n\t};\n\n\tvar FooterManager = function FooterManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.active = false;\n\n\t\tthis.element = this.createElement(); //containing element\n\n\t\tthis.external = false;\n\n\t\tthis.links = [];\n\n\t\tthis._initialize();\n\t};\n\n\tFooterManager.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t};\n\n\tFooterManager.prototype._initialize = function (element) {\n\n\t\tif (this.table.options.footerElement) {\n\n\t\t\tswitch (_typeof(this.table.options.footerElement)) {\n\n\t\t\t\tcase \"string\":\n\n\t\t\t\t\tif (this.table.options.footerElement[0] === \"<\") {\n\n\t\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.external = true;\n\n\t\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t};\n\n\tFooterManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tFooterManager.prototype.append = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.appendChild(element);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.prepend = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.remove = function (element) {\n\n\t\telement.parentNode.removeChild(element);\n\n\t\tthis.deactivate();\n\t};\n\n\tFooterManager.prototype.deactivate = function (force) {\n\n\t\tif (!this.element.firstChild || force) {\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.active = false;\n\t\t}\n\n\t\t// this.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.activate = function (parent) {\n\n\t\tif (!this.active) {\n\n\t\t\tthis.active = true;\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\n\t\tif (parent) {\n\n\t\t\tthis.links.push(parent);\n\t\t}\n\t};\n\n\tFooterManager.prototype.redraw = function () {\n\n\t\tthis.links.forEach(function (link) {\n\n\t\t\tlink.footerRedraw();\n\t\t});\n\t};\n\n\tvar Tabulator = function Tabulator(element, options) {\n\n\t\tthis.options = {};\n\n\t\tthis.columnManager = null; // hold Column Manager\n\n\t\tthis.rowManager = null; //hold Row Manager\n\n\t\tthis.footerManager = null; //holder Footer Manager\n\n\t\tthis.browser = \"\"; //hold current browser type\n\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\n\n\t\tthis.modules = {}; //hold all modules bound to this table\n\n\n\t\tthis.initializeElement(element);\n\n\t\tthis.initializeOptions(options || {});\n\n\t\tthis._create();\n\n\t\tTabulator.prototype.comms.register(this); //register table for inderdevice communication\n\t};\n\n\t//default setup options\n\n\tTabulator.prototype.defaultOptions = {\n\n\t\theight: false, //height of tabulator\n\n\n\t\tlayout: \"fitData\", ///layout type \"fitColumns\" | \"fitData\"\n\n\t\tlayoutColumnsOnNewData: false, //update column widths on setData\n\n\n\t\tcolumnMinWidth: 40, //minimum global width for a column\n\n\t\tcolumnVertAlign: \"top\", //vertical alignment of column headers\n\n\n\t\tresizableColumns: true, //resizable columns\n\n\t\tresizableRows: false, //resizable rows\n\n\t\tautoResize: true, //auto resize table\n\n\n\t\tcolumns: [], //store for colum header info\n\n\n\t\tdata: [], //default starting data\n\n\n\t\tautoColumns: false, //build columns from data row structure\n\n\n\t\treactiveData: false, //enable data reactivity\n\n\n\t\tnestedFieldSeparator: \".\", //seperatpr for nested data\n\n\n\t\ttooltips: false, //Tool tip value\n\n\t\ttooltipsHeader: false, //Tool tip for headers\n\n\t\ttooltipGenerationMode: \"load\", //when to generate tooltips\n\n\n\t\tinitialSort: false, //initial sorting criteria\n\n\t\tinitialFilter: false, //initial filtering criteria\n\n\t\tinitialHeaderFilter: false, //initial header filtering criteria\n\n\n\t\tcolumnHeaderSortMulti: true, //multiple or single column sorting\n\n\n\t\tsortOrderReverse: false, //reverse internal sort ordering\n\n\n\t\tfooterElement: false, //hold footer element\n\n\n\t\tindex: \"id\", //filed for row index\n\n\n\t\tkeybindings: [], //array for keybindings\n\n\n\t\tclipboard: false, //enable clipboard\n\n\t\tclipboardCopyStyled: true, //formatted table data\n\n\t\tclipboardCopySelector: \"active\", //method of chosing which data is coppied to the clipboard\n\n\t\tclipboardCopyFormatter: \"table\", //convert data to a clipboard string\n\n\t\tclipboardPasteParser: \"table\", //convert pasted clipboard data to rows\n\n\t\tclipboardPasteAction: \"insert\", //how to insert pasted data into the table\n\n\t\tclipboardCopyConfig: false, //clipboard config\n\n\n\t\tclipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard\n\n\t\tclipboardPasted: function clipboardPasted() {}, //data has been pasted into the table\n\n\t\tclipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table\n\n\n\t\tdownloadDataFormatter: false, //function to manipulate table data before it is downloaded\n\n\t\tdownloadReady: function downloadReady(data, blob) {\n\t\t\treturn blob;\n\t\t}, //function to manipulate download data\n\n\t\tdownloadComplete: false, //function to manipulate download data\n\n\t\tdownloadConfig: false, //download config\n\n\n\t\tdataTree: false, //enable data tree\n\n\t\tdataTreeElementColumn: false,\n\n\t\tdataTreeBranchElement: true, //show data tree branch element\n\n\t\tdataTreeChildIndent: 9, //data tree child indent in px\n\n\t\tdataTreeChildField: \"_children\", //data tre column field to look for child rows\n\n\t\tdataTreeCollapseElement: false, //data tree row collapse element\n\n\t\tdataTreeExpandElement: false, //data tree row expand element\n\n\t\tdataTreeStartExpanded: false,\n\n\t\tdataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded\n\n\t\tdataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed\n\n\n\t\tprintAsHtml: false, //enable print as html\n\n\t\tprintFormatter: false, //printing page formatter\n\n\t\tprintHeader: false, //page header contents\n\n\t\tprintFooter: false, //page footer contents\n\n\t\tprintCopyStyle: true, //enable print as html styling\n\n\t\tprintVisibleRows: true, //restrict print to visible rows only\n\n\t\tprintConfig: {}, //print config options\n\n\n\t\taddRowPos: \"bottom\", //position to insert blank rows, top|bottom\n\n\n\t\tselectable: \"highlight\", //highlight rows on hover\n\n\t\tselectableRangeMode: \"drag\", //highlight rows on hover\n\n\t\tselectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached\n\n\t\tselectablePersistence: true, // maintain selection when table view is updated\n\n\t\tselectableCheck: function selectableCheck(data, row) {\n\t\t\treturn true;\n\t\t}, //check wheather row is selectable\n\n\n\t\theaderFilterPlaceholder: false, //placeholder text to display in header filters\n\n\n\t\theaderVisible: true, //hide header\n\n\n\t\thistory: false, //enable edit history\n\n\n\t\tlocale: false, //current system language\n\n\t\tlangs: {},\n\n\t\tvirtualDom: true, //enable DOM virtualization\n\n\t\tvirtualDomBuffer: 0, // set virtual DOM buffer size\n\n\n\t\tpersistentLayout: false, //store column layout in memory\n\n\t\tpersistentSort: false, //store sorting in memory\n\n\t\tpersistentFilter: false, //store filters in memory\n\n\t\tpersistenceID: \"\", //key for persistent storage\n\n\t\tpersistenceMode: true, //mode for storing persistence information\n\n\n\t\tresponsiveLayout: false, //responsive layout flags\n\n\t\tresponsiveLayoutCollapseStartOpen: true, //start showing collapsed data\n\n\t\tresponsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter\n\n\t\tresponsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter\n\n\n\t\tpagination: false, //set pagination type\n\n\t\tpaginationSize: false, //set number of rows to a page\n\n\t\tpaginationButtonCount: 5, // set count of page button\n\n\t\tpaginationSizeSelector: false, //add pagination size selector element\n\n\t\tpaginationElement: false, //element to hold pagination numbers\n\n\t\tpaginationDataSent: {}, //pagination data sent to the server\n\n\t\tpaginationDataReceived: {}, //pagination data received from the server\n\n\t\tpaginationAddRow: \"page\", //add rows on table or page\n\n\n\t\tajaxURL: false, //url for ajax loading\n\n\t\tajaxURLGenerator: false,\n\n\t\tajaxParams: {}, //params for ajax loading\n\n\t\tajaxConfig: \"get\", //ajax request type\n\n\t\tajaxContentType: \"form\", //ajax request type\n\n\t\tajaxRequestFunc: false, //promise function\n\n\t\tajaxLoader: true, //show loader\n\n\t\tajaxLoaderLoading: false, //loader element\n\n\t\tajaxLoaderError: false, //loader element\n\n\t\tajaxFiltering: false,\n\n\t\tajaxSorting: false,\n\n\t\tajaxProgressiveLoad: false, //progressive loading\n\n\t\tajaxProgressiveLoadDelay: 0, //delay between requests\n\n\t\tajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins\n\n\n\t\tgroupBy: false, //enable table grouping and set field to group by\n\n\t\tgroupStartOpen: true, //starting state of group\n\n\t\tgroupValues: false,\n\n\t\tgroupHeader: false, //header generation function\n\n\n\t\thtmlOutputConfig: false, //html outypu config\n\n\n\t\tmovableColumns: false, //enable movable columns\n\n\n\t\tmovableRows: false, //enable movable rows\n\n\t\tmovableRowsConnectedTables: false, //tables for movable rows to be connected to\n\n\t\tmovableRowsSender: false,\n\n\t\tmovableRowsReceiver: \"insert\",\n\n\t\tmovableRowsSendingStart: function movableRowsSendingStart() {},\n\n\t\tmovableRowsSent: function movableRowsSent() {},\n\n\t\tmovableRowsSentFailed: function movableRowsSentFailed() {},\n\n\t\tmovableRowsSendingStop: function movableRowsSendingStop() {},\n\n\t\tmovableRowsReceivingStart: function movableRowsReceivingStart() {},\n\n\t\tmovableRowsReceived: function movableRowsReceived() {},\n\n\t\tmovableRowsReceivedFailed: function movableRowsReceivedFailed() {},\n\n\t\tmovableRowsReceivingStop: function movableRowsReceivingStop() {},\n\n\t\tscrollToRowPosition: \"top\",\n\n\t\tscrollToRowIfVisible: true,\n\n\t\tscrollToColumnPosition: \"left\",\n\n\t\tscrollToColumnIfVisible: true,\n\n\t\trowFormatter: false,\n\n\t\tplaceholder: false,\n\n\t\t//table building callbacks\n\n\t\ttableBuilding: function tableBuilding() {},\n\n\t\ttableBuilt: function tableBuilt() {},\n\n\t\t//render callbacks\n\n\t\trenderStarted: function renderStarted() {},\n\n\t\trenderComplete: function renderComplete() {},\n\n\t\t//row callbacks\n\n\t\trowClick: false,\n\n\t\trowDblClick: false,\n\n\t\trowContext: false,\n\n\t\trowTap: false,\n\n\t\trowDblTap: false,\n\n\t\trowTapHold: false,\n\n\t\trowMouseEnter: false,\n\n\t\trowMouseLeave: false,\n\n\t\trowMouseOver: false,\n\n\t\trowMouseOut: false,\n\n\t\trowMouseMove: false,\n\n\t\trowAdded: function rowAdded() {},\n\n\t\trowDeleted: function rowDeleted() {},\n\n\t\trowMoved: function rowMoved() {},\n\n\t\trowUpdated: function rowUpdated() {},\n\n\t\trowSelectionChanged: function rowSelectionChanged() {},\n\n\t\trowSelected: function rowSelected() {},\n\n\t\trowDeselected: function rowDeselected() {},\n\n\t\trowResized: function rowResized() {},\n\n\t\t//cell callbacks\n\n\t\t//row callbacks\n\n\t\tcellClick: false,\n\n\t\tcellDblClick: false,\n\n\t\tcellContext: false,\n\n\t\tcellTap: false,\n\n\t\tcellDblTap: false,\n\n\t\tcellTapHold: false,\n\n\t\tcellMouseEnter: false,\n\n\t\tcellMouseLeave: false,\n\n\t\tcellMouseOver: false,\n\n\t\tcellMouseOut: false,\n\n\t\tcellMouseMove: false,\n\n\t\tcellEditing: function cellEditing() {},\n\n\t\tcellEdited: function cellEdited() {},\n\n\t\tcellEditCancelled: function cellEditCancelled() {},\n\n\t\t//column callbacks\n\n\t\tcolumnMoved: false,\n\n\t\tcolumnResized: function columnResized() {},\n\n\t\tcolumnTitleChanged: function columnTitleChanged() {},\n\n\t\tcolumnVisibilityChanged: function columnVisibilityChanged() {},\n\n\t\t//HTML iport callbacks\n\n\t\thtmlImporting: function htmlImporting() {},\n\n\t\thtmlImported: function htmlImported() {},\n\n\t\t//data callbacks\n\n\t\tdataLoading: function dataLoading() {},\n\n\t\tdataLoaded: function dataLoaded() {},\n\n\t\tdataEdited: function dataEdited() {},\n\n\t\t//ajax callbacks\n\n\t\tajaxRequesting: function ajaxRequesting() {},\n\n\t\tajaxResponse: false,\n\n\t\tajaxError: function ajaxError() {},\n\n\t\t//filtering callbacks\n\n\t\tdataFiltering: false,\n\n\t\tdataFiltered: false,\n\n\t\t//sorting callbacks\n\n\t\tdataSorting: function dataSorting() {},\n\n\t\tdataSorted: function dataSorted() {},\n\n\t\t//grouping callbacks\n\n\t\tgroupToggleElement: \"arrow\",\n\n\t\tgroupClosedShowCalcs: false,\n\n\t\tdataGrouping: function dataGrouping() {},\n\n\t\tdataGrouped: false,\n\n\t\tgroupVisibilityChanged: function groupVisibilityChanged() {},\n\n\t\tgroupClick: false,\n\n\t\tgroupDblClick: false,\n\n\t\tgroupContext: false,\n\n\t\tgroupTap: false,\n\n\t\tgroupDblTap: false,\n\n\t\tgroupTapHold: false,\n\n\t\tcolumnCalcs: true,\n\n\t\t//pagination callbacks\n\n\t\tpageLoaded: function pageLoaded() {},\n\n\t\t//localization callbacks\n\n\t\tlocalized: function localized() {},\n\n\t\t//validation has failed\n\n\t\tvalidationFailed: function validationFailed() {},\n\n\t\t//history callbacks\n\n\t\thistoryUndo: function historyUndo() {},\n\n\t\thistoryRedo: function historyRedo() {}\n\n\t};\n\n\tTabulator.prototype.initializeOptions = function (options) {\n\n\t\t//warn user if option is not available\n\n\t\tfor (var key in options) {\n\n\t\t\tif (typeof this.defaultOptions[key] === \"undefined\") {\n\n\t\t\t\tconsole.warn(\"Invalid table constructor option:\", key);\n\t\t\t}\n\t\t}\n\n\t\t//assign options to table\n\n\t\tfor (var key in this.defaultOptions) {\n\n\t\t\tif (key in options) {\n\n\t\t\t\tthis.options[key] = options[key];\n\t\t\t} else {\n\n\t\t\t\tif (Array.isArray(this.defaultOptions[key])) {\n\n\t\t\t\t\tthis.options[key] = [];\n\t\t\t\t} else if (_typeof(this.defaultOptions[key]) === \"object\") {\n\n\t\t\t\t\tthis.options[key] = {};\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.options[key] = this.defaultOptions[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.initializeElement = function (element) {\n\n\t\tif (typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement) {\n\n\t\t\tthis.element = element;\n\n\t\t\treturn true;\n\t\t} else if (typeof element === \"string\") {\n\n\t\t\tthis.element = document.querySelector(element);\n\n\t\t\tif (this.element) {\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//convert depricated functionality to new functions\n\n\tTabulator.prototype._mapDepricatedFunctionality = function () {};\n\n\tTabulator.prototype._clearSelection = function () {\n\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\n\t\tif (window.getSelection) {\n\n\t\t\tif (window.getSelection().empty) {\n\t\t\t\t// Chrome\n\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) {\n\t\t\t\t// Firefox\n\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) {\n\t\t\t// IE?\n\n\t\t\tdocument.selection.empty();\n\t\t}\n\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t};\n\n\t//concreate table\n\n\tTabulator.prototype._create = function () {\n\n\t\tthis._clearObjectPointers();\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\tthis.bindModules();\n\n\t\tif (this.element.tagName === \"TABLE\") {\n\n\t\t\tif (this.modExists(\"htmlTableImport\", true)) {\n\n\t\t\t\tthis.modules.htmlTableImport.parseTable();\n\t\t\t}\n\t\t}\n\n\t\tthis.columnManager = new ColumnManager(this);\n\n\t\tthis.rowManager = new RowManager(this);\n\n\t\tthis.footerManager = new FooterManager(this);\n\n\t\tthis.columnManager.setRowManager(this.rowManager);\n\n\t\tthis.rowManager.setColumnManager(this.columnManager);\n\n\t\tthis._buildElement();\n\n\t\tthis._loadInitialData();\n\t};\n\n\t//clear pointers to objects in default config object\n\n\tTabulator.prototype._clearObjectPointers = function () {\n\n\t\tthis.options.columns = this.options.columns.slice(0);\n\n\t\tif (!this.options.reactiveData) {\n\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t};\n\n\t//build tabulator element\n\n\tTabulator.prototype._buildElement = function () {\n\t\tvar _this8 = this;\n\n\t\tvar element = this.element,\n\t\t mod = this.modules,\n\t\t options = this.options;\n\n\t\toptions.tableBuilding.call(this);\n\n\t\telement.classList.add(\"tabulator\");\n\n\t\telement.setAttribute(\"role\", \"grid\");\n\n\t\t//empty element\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t} //set table height\n\n\t\tif (options.height) {\n\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\n\t\t\telement.style.height = options.height;\n\t\t}\n\n\t\tthis.columnManager.initialize();\n\n\t\tthis.rowManager.initialize();\n\n\t\tthis._detectBrowser();\n\n\t\tif (this.modExists(\"layout\", true)) {\n\n\t\t\tmod.layout.initialize(options.layout);\n\t\t}\n\n\t\t//set localization\n\n\t\tif (options.headerFilterPlaceholder !== false) {\n\n\t\t\tmod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor (var locale in options.langs) {\n\n\t\t\tmod.localize.installLang(locale, options.langs[locale]);\n\t\t}\n\n\t\tmod.localize.setLocale(options.locale);\n\n\t\t//configure placeholder element\n\n\t\tif (typeof options.placeholder == \"string\") {\n\n\t\t\tvar el = document.createElement(\"div\");\n\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\n\t\t\tvar span = document.createElement(\"span\");\n\n\t\t\tspan.innerHTML = options.placeholder;\n\n\t\t\tel.appendChild(span);\n\n\t\t\toptions.placeholder = el;\n\t\t}\n\n\t\t//build table elements\n\n\t\telement.appendChild(this.columnManager.getElement());\n\n\t\telement.appendChild(this.rowManager.getElement());\n\n\t\tif (options.footerElement) {\n\n\t\t\tthis.footerManager.activate();\n\t\t}\n\n\t\tif ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists(\"persistence\", true)) {\n\n\t\t\tmod.persistence.initialize(options.persistenceMode, options.persistenceID);\n\t\t}\n\n\t\tif (options.persistentLayout && this.modExists(\"persistence\", true)) {\n\n\t\t\toptions.columns = mod.persistence.load(\"columns\", options.columns);\n\t\t}\n\n\t\tif (options.movableRows && this.modExists(\"moveRow\")) {\n\n\t\t\tmod.moveRow.initialize();\n\t\t}\n\n\t\tif (options.autoColumns && this.options.data) {\n\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\n\t\tif (this.modExists(\"columnCalcs\")) {\n\n\t\t\tmod.columnCalcs.initialize();\n\t\t}\n\n\t\tthis.columnManager.setColumns(options.columns);\n\n\t\tif (options.dataTree && this.modExists(\"dataTree\", true)) {\n\n\t\t\tmod.dataTree.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"frozenRows\")) {\n\n\t\t\tthis.modules.frozenRows.initialize();\n\t\t}\n\n\t\tif ((options.persistentSort || options.initialSort) && this.modExists(\"sort\", true)) {\n\n\t\t\tvar sorters = [];\n\n\t\t\tif (options.persistentSort && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tsorters = mod.persistence.load(\"sort\");\n\n\t\t\t\tif (sorters === false && options.initialSort) {\n\n\t\t\t\t\tsorters = options.initialSort;\n\t\t\t\t}\n\t\t\t} else if (options.initialSort) {\n\n\t\t\t\tsorters = options.initialSort;\n\t\t\t}\n\n\t\t\tmod.sort.setSort(sorters);\n\t\t}\n\n\t\tif ((options.persistentFilter || options.initialFilter) && this.modExists(\"filter\", true)) {\n\n\t\t\tvar filters = [];\n\n\t\t\tif (options.persistentFilter && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tfilters = mod.persistence.load(\"filter\");\n\n\t\t\t\tif (filters === false && options.initialFilter) {\n\n\t\t\t\t\tfilters = options.initialFilter;\n\t\t\t\t}\n\t\t\t} else if (options.initialFilter) {\n\n\t\t\t\tfilters = options.initialFilter;\n\t\t\t}\n\n\t\t\tmod.filter.setFilter(filters);\n\t\t}\n\n\t\tif (options.initialHeaderFilter && this.modExists(\"filter\", true)) {\n\n\t\t\toptions.initialHeaderFilter.forEach(function (item) {\n\n\t\t\t\tvar column = _this8.columnManager.findColumn(item.field);\n\n\t\t\t\tif (column) {\n\n\t\t\t\t\tmod.filter.setHeaderFilterValue(column, item.value);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tmod.ajax.initialize();\n\t\t}\n\n\t\tif (options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\tmod.page.initialize();\n\t\t}\n\n\t\tif (options.groupBy && this.modExists(\"groupRows\", true)) {\n\n\t\t\tmod.groupRows.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tmod.keybindings.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"selectRow\")) {\n\n\t\t\tmod.selectRow.clearSelectionData(true);\n\t\t}\n\n\t\tif (options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tmod.resizeTable.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"clipboard\")) {\n\n\t\t\tmod.clipboard.initialize();\n\t\t}\n\n\t\tif (options.printAsHtml && this.modExists(\"print\")) {\n\n\t\t\tmod.print.initialize();\n\t\t}\n\n\t\toptions.tableBuilt.call(this);\n\t};\n\n\tTabulator.prototype._loadInitialData = function () {\n\n\t\tvar self = this;\n\n\t\tif (self.options.pagination && self.modExists(\"page\")) {\n\n\t\t\tself.modules.page.reset(true);\n\n\t\t\tif (self.options.pagination == \"local\") {\n\n\t\t\t\tif (self.options.data.length) {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t} else {\n\n\t\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (self.options.ajaxURL) {\n\n\t\t\t\t\tself.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData([]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (self.options.data.length) {\n\n\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t} else {\n\n\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//deconstructor\n\n\tTabulator.prototype.destroy = function () {\n\n\t\tvar element = this.element;\n\n\t\tTabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication\n\n\n\t\tif (this.options.reactiveData && this.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.modules.reactiveData.unwatchData();\n\t\t}\n\n\t\t//clear row data\n\n\t\tthis.rowManager.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tthis.rowManager.rows = [];\n\n\t\tthis.rowManager.activeRows = [];\n\n\t\tthis.rowManager.displayRows = [];\n\n\t\t//clear event bindings\n\n\t\tif (this.options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tthis.modules.resizeTable.clearBindings();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tthis.modules.keybindings.clearBindings();\n\t\t}\n\n\t\t//clear DOM\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.classList.remove(\"tabulator\");\n\t};\n\n\tTabulator.prototype._detectBrowser = function () {\n\n\t\tvar ua = navigator.userAgent;\n\n\t\tif (ua.indexOf(\"Trident\") > -1) {\n\n\t\t\tthis.browser = \"ie\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Edge\") > -1) {\n\n\t\t\tthis.browser = \"edge\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Firefox\") > -1) {\n\n\t\t\tthis.browser = \"firefox\";\n\n\t\t\tthis.browserSlow = false;\n\t\t} else {\n\n\t\t\tthis.browser = \"other\";\n\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\t//loca data from local file\n\n\tTabulator.prototype.setDataFromLocalFile = function (extensions) {\n\t\tvar _this9 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar input = document.createElement(\"input\");\n\n\t\t\tinput.type = \"file\";\n\n\t\t\tinput.accept = extensions || \".json,application/json\";\n\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\n\t\t\t\tvar file = input.files[0],\n\t\t\t\t reader = new FileReader(),\n\t\t\t\t data;\n\n\t\t\t\treader.readAsText(file);\n\n\t\t\t\treader.onload = function (e) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\n\t\t\t\t\t} catch (e) {\n\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\n\n\t\t\t\t\t\treject(e);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this9._setData(data).then(function (data) {\n\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\t\tresolve(err);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\treader.onerror = function (e) {\n\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tinput.click();\n\t\t});\n\t};\n\n\t//load data\n\n\tTabulator.prototype.setData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config);\n\t};\n\n\tTabulator.prototype._setData = function (data, params, config, inPosition) {\n\n\t\tvar self = this;\n\n\t\tif (typeof data === \"string\") {\n\n\t\t\tif (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0) {\n\n\t\t\t\t//data is a json encoded string\n\n\t\t\t\treturn self.rowManager.setData(JSON.parse(data), inPosition);\n\t\t\t} else {\n\n\t\t\t\tif (self.modExists(\"ajax\", true)) {\n\n\t\t\t\t\tif (params) {\n\n\t\t\t\t\t\tself.modules.ajax.setParams(params);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config) {\n\n\t\t\t\t\t\tself.modules.ajax.setConfig(config);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.modules.ajax.setUrl(data);\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (data) {\n\n\t\t\t\t//asume data is already an object\n\n\t\t\t\treturn self.rowManager.setData(data, inPosition);\n\t\t\t} else {\n\n\t\t\t\t//no data provided, check if ajaxURL is present;\n\n\t\t\t\tif (self.modExists(\"ajax\") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t//empty data\n\n\t\t\t\t\treturn self.rowManager.setData([], inPosition);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//clear data\n\n\tTabulator.prototype.clearData = function () {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tthis.rowManager.clearData();\n\t};\n\n\t//get table data array\n\n\tTabulator.prototype.getData = function (active) {\n\n\t\treturn this.rowManager.getData(active);\n\t};\n\n\t//get table data array count\n\n\tTabulator.prototype.getDataCount = function (active) {\n\n\t\treturn this.rowManager.getDataCount(active);\n\t};\n\n\t//search for specific row components\n\n\tTabulator.prototype.searchRows = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"rows\", field, type, value);\n\t\t}\n\t};\n\n\t//search for specific data\n\n\tTabulator.prototype.searchData = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"data\", field, type, value);\n\t\t}\n\t};\n\n\t//get table html\n\n\tTabulator.prototype.getHtml = function (visible, style, config) {\n\n\t\tif (this.modExists(\"htmlTableExport\", true)) {\n\n\t\t\treturn this.modules.htmlTableExport.getHtml(visible, style, config);\n\t\t}\n\t};\n\n\t//get print html\n\n\tTabulator.prototype.print = function (visible, style, config) {\n\n\t\tif (this.modExists(\"print\", true)) {\n\n\t\t\treturn this.modules.print.printFullscreen(visible, style, config);\n\t\t}\n\t};\n\n\t//retrieve Ajax URL\n\n\tTabulator.prototype.getAjaxUrl = function () {\n\n\t\tif (this.modExists(\"ajax\", true)) {\n\n\t\t\treturn this.modules.ajax.getUrl();\n\t\t}\n\t};\n\n\t//replace data, keeping table in position with same sort\n\n\tTabulator.prototype.replaceData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config, true);\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateData = function (data) {\n\t\tvar _this10 = this;\n\n\t\tvar self = this;\n\n\t\tvar responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this10.modExists(\"ajax\")) {\n\n\t\t\t\t_this10.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\tresponses++;\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.addData = function (data, pos, index) {\n\t\tvar _this11 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this11.modExists(\"ajax\")) {\n\n\t\t\t\t_this11.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\t_this11.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\trows.forEach(function (row) {\n\n\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(output);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateOrAddData = function (data) {\n\t\tvar _this12 = this;\n\n\t\tvar self = this,\n\t\t rows = [],\n\t\t responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this12.modExists(\"ajax\")) {\n\n\t\t\t\t_this12.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tresponses++;\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(row.getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.addRows(item).then(function (newRows) {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRow = function (index) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRowFromPosition = function (position, active) {\n\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//delete row from table\n\n\tTabulator.prototype.deleteRow = function (index) {\n\t\tvar _this13 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this13.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\trow.delete().then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Delete Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//add row to table\n\n\tTabulator.prototype.addRow = function (data, pos, index) {\n\t\tvar _this14 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\t_this14.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t//recalc column calculations if present\n\n\t\t\t\tif (_this14.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t_this14.modules.columnCalcs.recalc(_this14.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t});\n\t\t});\n\t};\n\n\t//update a row if it exitsts otherwise create it\n\n\tTabulator.prototype.updateOrAddRow = function (index, data) {\n\t\tvar _this15 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this15.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\trow = _this15.rowManager.addRows(data).then(function (rows) {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//update row data\n\n\tTabulator.prototype.updateRow = function (index, data) {\n\t\tvar _this16 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this16.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Update Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//scroll to row in DOM\n\n\tTabulator.prototype.scrollToRow = function (index, position, ifVisible) {\n\t\tvar _this17 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this17.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\t_this17.rowManager.scrollToRow(row, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Scroll Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.moveRow = function (from, to, after) {\n\n\t\tvar fromRow = this.rowManager.findRow(from);\n\n\t\tif (fromRow) {\n\n\t\t\tfromRow.moveToRow(to, after);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t};\n\n\tTabulator.prototype.getRows = function (active) {\n\n\t\treturn this.rowManager.getComponents(active);\n\t};\n\n\t//get position of row in table\n\n\tTabulator.prototype.getRowPosition = function (index, active) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn this.rowManager.getRowPosition(row, active);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//copy table data to clipboard\n\n\tTabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {\n\n\t\tif (this.modExists(\"clipboard\", true)) {\n\n\t\t\tthis.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);\n\t\t}\n\t};\n\n\t/////////////// Column Functions ///////////////\n\n\n\tTabulator.prototype.setColumns = function (definition) {\n\n\t\tthis.columnManager.setColumns(definition);\n\t};\n\n\tTabulator.prototype.getColumns = function (structured) {\n\n\t\treturn this.columnManager.getComponents(structured);\n\t};\n\n\tTabulator.prototype.getColumn = function (field) {\n\n\t\tvar col = this.columnManager.findColumn(field);\n\n\t\tif (col) {\n\n\t\t\treturn col.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getColumnDefinitions = function () {\n\n\t\treturn this.columnManager.getDefinitionTree();\n\t};\n\n\tTabulator.prototype.getColumnLayout = function () {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\treturn this.modules.persistence.parseColumns(this.columnManager.getColumns());\n\t\t}\n\t};\n\n\tTabulator.prototype.setColumnLayout = function (layout) {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\tthis.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.showColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.show();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.hideColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.hide();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t} else {\n\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.addColumn = function (definition, before, field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tthis.columnManager.addColumn(definition, before, column);\n\t};\n\n\tTabulator.prototype.deleteColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.delete();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//scroll to column in DOM\n\n\tTabulator.prototype.scrollToColumn = function (field, position, ifVisible) {\n\t\tvar _this18 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar column = _this18.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\t_this18.columnManager.scrollToColumn(column, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\n\t\t\t\treject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////// Localization Functions ////////////\n\n\tTabulator.prototype.setLocale = function (locale) {\n\n\t\tthis.modules.localize.setLocale(locale);\n\t};\n\n\tTabulator.prototype.getLocale = function () {\n\n\t\treturn this.modules.localize.getLocale();\n\t};\n\n\tTabulator.prototype.getLang = function (locale) {\n\n\t\treturn this.modules.localize.getLang(locale);\n\t};\n\n\t//////////// General Public Functions ////////////\n\n\n\t//redraw list without updating data\n\n\tTabulator.prototype.redraw = function (force) {\n\n\t\tthis.columnManager.redraw(force);\n\n\t\tthis.rowManager.redraw(force);\n\t};\n\n\tTabulator.prototype.setHeight = function (height) {\n\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\n\t\tthis.element.style.height = this.options.height;\n\n\t\tthis.rowManager.redraw();\n\t};\n\n\t///////////////////// Sorting ////////////////////\n\n\n\t//trigger sort\n\n\tTabulator.prototype.setSort = function (sortList, dir) {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.setSort(sortList, dir);\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSorters = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\treturn this.modules.sort.getSort();\n\t\t}\n\t};\n\n\tTabulator.prototype.clearSort = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.clear();\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\n\t//set standard filters\n\n\tTabulator.prototype.setFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.setFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//add filter to array\n\n\tTabulator.prototype.addFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.addFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//get all filters\n\n\tTabulator.prototype.getFilters = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getFilters(all);\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterFocus = function (field) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterFocus(column);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterValue = function (field, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterValue(column, value);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.getHeaderFilters = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getHeaderFilters();\n\t\t}\n\t};\n\n\t//remove filter from array\n\n\tTabulator.prototype.removeFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.removeFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear filters\n\n\tTabulator.prototype.clearFilter = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearFilter(all);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear header filters\n\n\tTabulator.prototype.clearHeaderFilter = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearHeaderFilter();\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\tTabulator.prototype.selectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.selectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.deselectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.deselectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleSelectRow = function (row) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.toggleRow(row);\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedRows = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedRows();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedData = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedData();\n\t\t}\n\t};\n\n\t//////////// Pagination Functions ////////////\n\n\n\tTabulator.prototype.setMaxPage = function (max) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setMaxPage(max);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setPage = function (page) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.setPage(page);\n\t\t} else {\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\treject();\n\t\t\t});\n\t\t}\n\t};\n\n\tTabulator.prototype.setPageToRow = function (row) {\n\t\tvar _this19 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this19.options.pagination && _this19.modExists(\"page\")) {\n\n\t\t\t\trow = _this19.rowManager.findRow(row);\n\n\t\t\t\tif (row) {\n\n\t\t\t\t\t_this19.modules.page.setPageToRow(row).then(function () {\n\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.setPageSize = function (size) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setPageSize(size);\n\n\t\t\tthis.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageSize = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\treturn this.modules.page.getPageSize();\n\t\t}\n\t};\n\n\tTabulator.prototype.previousPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.previousPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.nextPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.nextPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageMax = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPageMax();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t///////////////// Grouping Functions ///////////////\n\n\n\tTabulator.prototype.setGroupBy = function (groups) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupBy = groups;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tthis.rowManager.refreshActiveData(\"display\");\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupStartOpen = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupStartOpen = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupHeader = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupHeader = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getGroups = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.modules.groupRows.getGroups(true);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t// get grouped table data in the same format as getData()\n\n\tTabulator.prototype.getGroupedData = function () {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();\n\t\t}\n\t};\n\n\t///////////////// Column Calculation Functions ///////////////\n\n\tTabulator.prototype.getCalcResults = function () {\n\n\t\tif (this.modExists(\"columnCalcs\", true)) {\n\n\t\t\treturn this.modules.columnCalcs.getResults();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Navigation Management //////////////\n\n\n\tTabulator.prototype.navigatePrev = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().prev();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateNext = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().next();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateLeft = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().left();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateRight = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().right();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateUp = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().up();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateDown = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().down();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/////////////// History Management //////////////\n\n\tTabulator.prototype.undo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.undo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.redo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.redo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryUndoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryUndoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryRedoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryRedoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Download Management //////////////\n\n\n\tTabulator.prototype.download = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options);\n\t\t}\n\t};\n\n\tTabulator.prototype.downloadToTab = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options, true);\n\t\t}\n\t};\n\n\t/////////// Inter Table Communications ///////////\n\n\n\tTabulator.prototype.tableComms = function (table, module, action, data) {\n\n\t\tthis.modules.comms.receive(table, module, action, data);\n\t};\n\n\t////////////// Extension Management //////////////\n\n\n\t//object to hold module\n\n\tTabulator.prototype.moduleBindings = {};\n\n\t//extend module\n\n\tTabulator.prototype.extendModule = function (name, property, values) {\n\n\t\tif (Tabulator.prototype.moduleBindings[name]) {\n\n\t\t\tvar source = Tabulator.prototype.moduleBindings[name].prototype[property];\n\n\t\t\tif (source) {\n\n\t\t\t\tif ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == \"object\") {\n\n\t\t\t\t\tfor (var key in values) {\n\n\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t}\n\t};\n\n\t//add module to tabulator\n\n\tTabulator.prototype.registerModule = function (name, module) {\n\n\t\tvar self = this;\n\n\t\tTabulator.prototype.moduleBindings[name] = module;\n\t};\n\n\t//ensure that module are bound to instantiated function\n\n\tTabulator.prototype.bindModules = function () {\n\n\t\tthis.modules = {};\n\n\t\tfor (var name in Tabulator.prototype.moduleBindings) {\n\n\t\t\tthis.modules[name] = new Tabulator.prototype.moduleBindings[name](this);\n\t\t}\n\t};\n\n\t//Check for module\n\n\tTabulator.prototype.modExists = function (plugin, required) {\n\n\t\tif (this.modules[plugin]) {\n\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\tif (required) {\n\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.helpers = {\n\n\t\telVisible: function elVisible(el) {\n\n\t\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t\t},\n\n\t\telOffset: function elOffset(el) {\n\n\t\t\tvar box = el.getBoundingClientRect();\n\n\t\t\treturn {\n\n\t\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\n\t\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\n\t\t\t};\n\t\t},\n\n\t\tdeepClone: function deepClone(obj) {\n\n\t\t\tvar clone = Array.isArray(obj) ? [] : {};\n\n\t\t\tfor (var i in obj) {\n\n\t\t\t\tif (obj[i] != null && _typeof(obj[i]) === \"object\") {\n\n\t\t\t\t\tif (obj[i] instanceof Date) {\n\n\t\t\t\t\t\tclone[i] = new Date(obj[i]);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tclone[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn clone;\n\t\t}\n\n\t};\n\n\tTabulator.prototype.comms = {\n\n\t\ttables: [],\n\n\t\tregister: function register(table) {\n\n\t\t\tTabulator.prototype.comms.tables.push(table);\n\t\t},\n\n\t\tderegister: function deregister(table) {\n\n\t\t\tvar index = Tabulator.prototype.comms.tables.indexOf(table);\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tTabulator.prototype.comms.tables.splice(index, 1);\n\t\t\t}\n\t\t},\n\n\t\tlookupTable: function lookupTable(query) {\n\n\t\t\tvar results = [],\n\t\t\t matches,\n\t\t\t match;\n\n\t\t\tif (typeof query === \"string\") {\n\n\t\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\t\tif (matches.length) {\n\n\t\t\t\t\tfor (var i = 0; i < matches.length; i++) {\n\n\t\t\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(matches[i]);\n\n\t\t\t\t\t\tif (match) {\n\n\t\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement || query instanceof Tabulator) {\n\n\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(query);\n\n\t\t\t\tif (match) {\n\n\t\t\t\t\tresults.push(match);\n\t\t\t\t}\n\t\t\t} else if (Array.isArray(query)) {\n\n\t\t\t\tquery.forEach(function (item) {\n\n\t\t\t\t\tresults = results.concat(Tabulator.prototype.comms.lookupTable(item));\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\n\t\t\treturn results;\n\t\t},\n\n\t\tmatchElement: function matchElement(element) {\n\n\t\t\treturn Tabulator.prototype.comms.tables.find(function (table) {\n\n\t\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t\t});\n\t\t}\n\n\t};\n\n\tvar Layout = function Layout(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.mode = null;\n\t};\n\n\t//initialize layout system\n\n\n\tLayout.prototype.initialize = function (layout) {\n\n\t\tif (this.modes[layout]) {\n\n\t\t\tthis.mode = layout;\n\t\t} else {\n\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t};\n\n\tLayout.prototype.getMode = function () {\n\n\t\treturn this.mode;\n\t};\n\n\t//trigger table layout\n\n\n\tLayout.prototype.layout = function () {\n\n\t\tthis.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\n\t};\n\n\t//layout render functions\n\n\n\tLayout.prototype.modes = {\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitData\": function fitData(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitDataFill\": function fitDataFill(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit\n\n\n\t\t\"fitColumns\": function fitColumns(columns) {\n\n\t\t\tvar self = this;\n\n\t\t\tvar totalWidth = self.table.element.clientWidth; //table element width\n\n\n\t\t\tvar fixedWidth = 0; //total width of columns with a defined width\n\n\n\t\t\tvar flexWidth = 0; //total width available to flexible columns\n\n\n\t\t\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\n\n\n\t\t\tvar flexColWidth = 0; //desired width of flexible columns\n\n\n\t\t\tvar flexColumns = []; //array of flexible width columns\n\n\n\t\t\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\n\n\t\t\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\n\n\n\t\t\tvar overflowWidth = 0; //horizontal overflow width\n\n\n\t\t\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\n\t\t\tfunction calcWidth(width) {\n\n\t\t\t\tvar colWidth;\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\treturn colWidth;\n\t\t\t}\n\n\t\t\t//ensure columns resize to take up the correct amount of space\n\n\n\t\t\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols) {\n\n\t\t\t\tvar oversizeCols = [],\n\t\t\t\t oversizeSpace = 0,\n\t\t\t\t remainingSpace = 0,\n\t\t\t\t nextColWidth = 0,\n\t\t\t\t gap = 0,\n\t\t\t\t changeUnits = 0,\n\t\t\t\t undersizeCols = [];\n\n\t\t\t\tfunction calcGrow(col) {\n\n\t\t\t\t\treturn colWidth * (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\n\t\t\t\tfunction calcShrink(col) {\n\n\t\t\t\t\treturn calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (col, i) {\n\n\t\t\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\n\t\t\t\t\tif (col.column.minWidth >= width) {\n\n\t\t\t\t\t\toversizeCols.push(col);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tundersizeCols.push(col);\n\n\t\t\t\t\t\tchangeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (oversizeCols.length) {\n\n\t\t\t\t\toversizeCols.forEach(function (col) {\n\n\t\t\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\n\t\t\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t\t\t});\n\n\t\t\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;\n\n\t\t\t\t\tgap = remainingSpace - nextColWidth * changeUnits;\n\n\t\t\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t\t\t} else {\n\n\t\t\t\t\tgap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;\n\n\t\t\t\t\tundersizeCols.forEach(function (column) {\n\n\t\t\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\t//adjust for vertical scrollbar if present\n\n\n\t\t\tif (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {\n\n\t\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t\t}\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tvar width, minWidth, colWidth;\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\twidth = column.definition.width;\n\n\t\t\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\t\t\tif (width) {\n\n\t\t\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\t\t\tif (column.definition.widthShrink) {\n\n\t\t\t\t\t\t\tfixedShrinkColumns.push({\n\n\t\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\t\twidth: colWidth > minWidth ? colWidth : minWidth\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tflexColumns.push({\n\n\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\twidth: 0\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//calculate available space\n\n\n\t\t\tflexWidth = totalWidth - fixedWidth;\n\n\t\t\t//calculate correct column size\n\n\n\t\t\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t\t\t//generate column widths\n\n\n\t\t\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t\t\t//increase width of last column to account for rounding errors\n\n\n\t\t\tif (flexColumns.length && gapFill > 0) {\n\n\t\t\t\tflexColumns[flexColumns.length - 1].width += +gapFill;\n\t\t\t}\n\n\t\t\t//caculate space for columns to be shrunk into\n\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tflexWidth -= col.width;\n\t\t\t});\n\n\t\t\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t\t\t//shrink oversize columns if there is no available space\n\n\n\t\t\tif (overflowWidth > 0 && flexShrinkUnits) {\n\n\t\t\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t\t\t}\n\n\t\t\t//decrease width of last column to account for rounding errors\n\n\n\t\t\tif (fixedShrinkColumns.length) {\n\n\t\t\t\tfixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;\n\t\t\t}\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\n\t\t\tfixedShrinkColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"layout\", Layout);\n\n\tvar Localize = function Localize(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.locale = \"default\"; //current locale\n\n\t\tthis.lang = false; //current language\n\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t};\n\n\t//set header placehoder\n\n\tLocalize.prototype.setHeaderFilterPlaceholder = function (placeholder) {\n\n\t\tthis.langs.default.headerFilters.default = placeholder;\n\t};\n\n\t//set header filter placeholder by column\n\n\tLocalize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {\n\n\t\tthis.langs.default.headerFilters.columns[column] = placeholder;\n\n\t\tif (this.lang && !this.lang.headerFilters.columns[column]) {\n\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\n\t\t}\n\t};\n\n\t//setup a lang description object\n\n\tLocalize.prototype.installLang = function (locale, lang) {\n\n\t\tif (this.langs[locale]) {\n\n\t\t\tthis._setLangProp(this.langs[locale], lang);\n\t\t} else {\n\n\t\t\tthis.langs[locale] = lang;\n\t\t}\n\t};\n\n\tLocalize.prototype._setLangProp = function (lang, values) {\n\n\t\tfor (var key in values) {\n\n\t\t\tif (lang[key] && _typeof(lang[key]) == \"object\") {\n\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t} else {\n\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set current locale\n\n\tLocalize.prototype.setLocale = function (desiredLocale) {\n\n\t\tvar self = this;\n\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching languge values\n\n\t\tfunction traverseLang(trans, path) {\n\n\t\t\tfor (var prop in trans) {\n\n\t\t\t\tif (_typeof(trans[prop]) == \"object\") {\n\n\t\t\t\t\tif (!path[prop]) {\n\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t} else {\n\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determing correct locale to load\n\n\t\tif (desiredLocale === true && navigator.language) {\n\n\t\t\t//get local from system\n\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif (desiredLocale) {\n\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\n\t\t\tif (!self.langs[desiredLocale]) {\n\n\t\t\t\tvar prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif (self.langs[prefix]) {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.locale = desiredLocale;\n\n\t\t//load default lang template\n\n\t\tself.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});\n\n\t\tif (desiredLocale != \"default\") {\n\n\t\t\ttraverseLang(self.langs[desiredLocale], self.lang);\n\t\t}\n\n\t\tself.table.options.localized.call(self.table, self.locale, self.lang);\n\n\t\tself._executeBindings();\n\t};\n\n\t//get current locale\n\n\tLocalize.prototype.getLocale = function (locale) {\n\n\t\treturn self.locale;\n\t};\n\n\t//get lang object for given local or current if none provided\n\n\tLocalize.prototype.getLang = function (locale) {\n\n\t\treturn locale ? this.langs[locale] : this.lang;\n\t};\n\n\t//get text for current locale\n\n\tLocalize.prototype.getText = function (path, value) {\n\n\t\tvar path = value ? path + \"|\" + value : path,\n\t\t pathArray = path.split(\"|\"),\n\t\t text = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\n\t\t// }\n\n\n\t\treturn text || \"\";\n\t};\n\n\t//traverse langs object and find localized copy\n\n\tLocalize.prototype._getLangElement = function (path, locale) {\n\n\t\tvar self = this;\n\n\t\tvar root = self.lang;\n\n\t\tpath.forEach(function (level) {\n\n\t\t\tvar rootPath;\n\n\t\t\tif (root) {\n\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif (typeof rootPath != \"undefined\") {\n\n\t\t\t\t\troot = rootPath;\n\t\t\t\t} else {\n\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t};\n\n\t//set update binding\n\n\tLocalize.prototype.bind = function (path, callback) {\n\n\t\tif (!this.bindings[path]) {\n\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t};\n\n\t//itterate through bindings and trigger updates\n\n\tLocalize.prototype._executeBindings = function () {\n\n\t\tvar self = this;\n\n\t\tvar _loop = function _loop(path) {\n\n\t\t\tself.bindings[path].forEach(function (binding) {\n\n\t\t\t\tbinding(self.getText(path), self.lang);\n\t\t\t});\n\t\t};\n\n\t\tfor (var path in self.bindings) {\n\t\t\t_loop(path);\n\t\t}\n\t};\n\n\t//Localized text listings\n\n\tLocalize.prototype.langs = {\n\n\t\t\"default\": { //hold default locale text\n\n\t\t\t\"groups\": {\n\n\t\t\t\t\"item\": \"item\",\n\n\t\t\t\t\"items\": \"items\"\n\n\t\t\t},\n\n\t\t\t\"columns\": {},\n\n\t\t\t\"ajax\": {\n\n\t\t\t\t\"loading\": \"Loading\",\n\n\t\t\t\t\"error\": \"Error\"\n\n\t\t\t},\n\n\t\t\t\"pagination\": {\n\n\t\t\t\t\"page_size\": \"Page Size\",\n\n\t\t\t\t\"first\": \"First\",\n\n\t\t\t\t\"first_title\": \"First Page\",\n\n\t\t\t\t\"last\": \"Last\",\n\n\t\t\t\t\"last_title\": \"Last Page\",\n\n\t\t\t\t\"prev\": \"Prev\",\n\n\t\t\t\t\"prev_title\": \"Prev Page\",\n\n\t\t\t\t\"next\": \"Next\",\n\n\t\t\t\t\"next_title\": \"Next Page\"\n\n\t\t\t},\n\n\t\t\t\"headerFilters\": {\n\n\t\t\t\t\"default\": \"filter column...\",\n\n\t\t\t\t\"columns\": {}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"localize\", Localize);\n\n\tvar Comms = function Comms(table) {\n\n\t\tthis.table = table;\n\t};\n\n\tComms.prototype.getConnections = function (selectors) {\n\n\t\tvar self = this,\n\t\t connections = [],\n\t\t connection;\n\n\t\tconnection = Tabulator.prototype.comms.lookupTable(selectors);\n\n\t\tconnection.forEach(function (con) {\n\n\t\t\tif (self.table !== con) {\n\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t};\n\n\tComms.prototype.send = function (selectors, module, action, data) {\n\n\t\tvar self = this,\n\t\t connections = this.getConnections(selectors);\n\n\t\tconnections.forEach(function (connection) {\n\n\t\t\tconnection.tableComms(self.table.element, module, action, data);\n\t\t});\n\n\t\tif (!connections.length && selectors) {\n\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t};\n\n\tComms.prototype.receive = function (table, module, action, data) {\n\n\t\tif (this.table.modExists(module)) {\n\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"comms\", Comms);\n\n\tvar Accessor = function Accessor(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\"]; //list of accessor types\n\t};\n\n\t//initialize column accessor\n\tAccessor.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t accessor;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\taccessor = self.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor: accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}, Accessor.prototype.lookupAccessor = function (value) {\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.accessors[value]) {\n\t\t\t\t\taccessor = this.accessors[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t};\n\n\t//apply accessor to row\n\tAccessor.prototype.transformRow = function (dataIn, type) {\n\t\tvar self = this,\n\t\t key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1));\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Tabulator.prototype.helpers.deepClone(dataIn || {});\n\n\t\tself.table.columnManager.traverse(function (column) {\n\t\t\tvar value, accessor, params, component;\n\n\t\t\tif (column.modules.accessor) {\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif (value != \"undefined\") {\n\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, component) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, component));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t},\n\n\t//default accessors\n\tAccessor.prototype.accessors = {};\n\n\tTabulator.prototype.registerModule(\"accessor\", Accessor);\n\tvar Ajax = function Ajax(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = false; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\n\t\tthis.msgElement = this.createMsgElement(); //message element\n\t\tthis.loadingElement = false;\n\t\tthis.errorElement = false;\n\t\tthis.loaderPromise = false;\n\n\t\tthis.progressiveLoad = false;\n\t\tthis.loading = false;\n\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\n\t};\n\n\t//initialize setup options\n\tAjax.prototype.initialize = function () {\n\t\tvar template;\n\n\t\tthis.loaderElement.appendChild(this.msgElement);\n\n\t\tif (this.table.options.ajaxLoaderLoading) {\n\t\t\tif (typeof this.table.options.ajaxLoaderLoading == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderLoading.trim();\n\t\t\t\tthis.loadingElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.loadingElement = this.table.options.ajaxLoaderLoading;\n\t\t\t}\n\t\t}\n\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;\n\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;\n\n\t\tif (this.table.options.ajaxLoaderError) {\n\t\t\tif (typeof this.table.options.ajaxLoaderError == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderError.trim();\n\t\t\t\tthis.errorElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.errorElement = this.table.options.ajaxLoaderError;\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.options.ajaxParams) {\n\t\t\tthis.setParams(this.table.options.ajaxParams);\n\t\t}\n\n\t\tif (this.table.options.ajaxConfig) {\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\n\t\t}\n\n\t\tif (this.table.options.ajaxURL) {\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\t\tif (this.table.options.ajaxProgressiveLoad) {\n\t\t\tif (this.table.options.pagination) {\n\t\t\t\tthis.progressiveLoad = false;\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t} else {\n\t\t\t\tif (this.table.modExists(\"page\")) {\n\t\t\t\t\tthis.progressiveLoad = this.table.options.ajaxProgressiveLoad;\n\t\t\t\t\tthis.table.modules.page.initializeProgressive(this.progressiveLoad);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"Pagination plugin is required for progressive ajax loading\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.createLoaderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-loader\");\n\t\treturn el;\n\t};\n\n\tAjax.prototype.createMsgElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-loader-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\n\t\treturn el;\n\t};\n\n\t//set ajax params\n\tAjax.prototype.setParams = function (params, update) {\n\t\tif (update) {\n\t\t\tthis.params = this.params || {};\n\n\t\t\tfor (var key in params) {\n\t\t\t\tthis.params[key] = params[key];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.params = params;\n\t\t}\n\t};\n\n\tAjax.prototype.getParams = function () {\n\t\treturn this.params || {};\n\t};\n\n\t//load config object\n\tAjax.prototype.setConfig = function (config) {\n\t\tthis._loadDefaultConfig();\n\n\t\tif (typeof config == \"string\") {\n\t\t\tthis.config.method = config;\n\t\t} else {\n\t\t\tfor (var key in config) {\n\t\t\t\tthis.config[key] = config[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//create config object from default\n\tAjax.prototype._loadDefaultConfig = function (force) {\n\t\tvar self = this;\n\t\tif (!self.config || force) {\n\n\t\t\tself.config = {};\n\n\t\t\t//load base config from defaults\n\t\t\tfor (var key in self.defaultConfig) {\n\t\t\t\tself.config[key] = self.defaultConfig[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set request url\n\tAjax.prototype.setUrl = function (url) {\n\t\tthis.url = url;\n\t};\n\n\t//get request url\n\tAjax.prototype.getUrl = function () {\n\t\treturn this.url;\n\t};\n\n\t//lstandard loading function\n\tAjax.prototype.loadData = function (inPosition) {\n\t\tvar self = this;\n\n\t\tif (this.progressiveLoad) {\n\t\t\treturn this._loadDataProgressive();\n\t\t} else {\n\t\t\treturn this._loadDataStandard(inPosition);\n\t\t}\n\t};\n\n\tAjax.prototype.nextPage = function (diff) {\n\t\tvar margin;\n\n\t\tif (!this.loading) {\n\n\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;\n\n\t\t\tif (diff < margin) {\n\t\t\t\tthis.table.modules.page.nextPage().then(function () {}).catch(function () {});\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.blockActiveRequest = function () {\n\t\tthis.requestOrder++;\n\t};\n\n\tAjax.prototype._loadDataProgressive = function () {\n\t\tthis.table.rowManager.setData([]);\n\t\treturn this.table.modules.page.setPage(1);\n\t};\n\n\tAjax.prototype._loadDataStandard = function (inPosition) {\n\t\tvar _this20 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\t_this20.sendRequest(inPosition).then(function (data) {\n\t\t\t\t_this20.table.rowManager.setData(data, inPosition).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (e) {\n\t\t\t\t\treject(e);\n\t\t\t\t});\n\t\t\t}).catch(function (e) {\n\t\t\t\treject(e);\n\t\t\t});\n\t\t});\n\t};\n\n\tAjax.prototype.generateParamsList = function (data, prefix) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tprefix = prefix || \"\";\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (item, i) {\n\t\t\t\toutput = output.concat(self.generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t\t});\n\t\t} else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === \"object\") {\n\t\t\tfor (var key in data) {\n\t\t\t\toutput = output.concat(self.generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push({ key: prefix, value: data });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tAjax.prototype.serializeParams = function (params) {\n\t\tvar output = this.generateParamsList(params),\n\t\t encoded = [];\n\n\t\toutput.forEach(function (item) {\n\t\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t\t});\n\n\t\treturn encoded.join(\"&\");\n\t};\n\n\t//send ajax request\n\tAjax.prototype.sendRequest = function (silent) {\n\t\tvar _this21 = this;\n\n\t\tvar self = this,\n\t\t url = self.url,\n\t\t requestNo,\n\t\t esc,\n\t\t query;\n\n\t\tself.requestOrder++;\n\t\trequestNo = self.requestOrder;\n\n\t\tself._loadDefaultConfig();\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (self.table.options.ajaxRequesting.call(_this21.table, self.url, self.params) !== false) {\n\n\t\t\t\tself.loading = true;\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.showLoader();\n\t\t\t\t}\n\n\t\t\t\t_this21.loaderPromise(url, self.config, self.params).then(function (data) {\n\t\t\t\t\tif (requestNo === self.requestOrder) {\n\t\t\t\t\t\tif (self.table.options.ajaxResponse) {\n\t\t\t\t\t\t\tdata = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\n\t\t\t\t\tself.hideLoader();\n\n\t\t\t\t\tself.loading = false;\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error: \", error);\n\t\t\t\t\tself.table.options.ajaxError.call(self.table, error);\n\n\t\t\t\t\tself.showError();\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tself.hideLoader();\n\t\t\t\t\t}, 3000);\n\n\t\t\t\t\tself.loading = false;\n\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.showLoader = function () {\n\t\tvar shouldLoad = typeof this.table.options.ajaxLoader === \"function\" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;\n\n\t\tif (shouldLoad) {\n\n\t\t\tthis.hideLoader();\n\n\t\t\twhile (this.msgElement.firstChild) {\n\t\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t\t}this.msgElement.classList.remove(\"tabulator-error\");\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\n\n\t\t\tif (this.loadingElement) {\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\n\t\t\t} else {\n\t\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|loading\");\n\t\t\t}\n\n\t\t\tthis.table.element.appendChild(this.loaderElement);\n\t\t}\n\t};\n\n\tAjax.prototype.showError = function () {\n\t\tthis.hideLoader();\n\n\t\twhile (this.msgElement.firstChild) {\n\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t}this.msgElement.classList.remove(\"tabulator-loading\");\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\n\n\t\tif (this.errorElement) {\n\t\t\tthis.msgElement.appendChild(this.errorElement);\n\t\t} else {\n\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|error\");\n\t\t}\n\n\t\tthis.table.element.appendChild(this.loaderElement);\n\t};\n\n\tAjax.prototype.hideLoader = function () {\n\t\tif (this.loaderElement.parentNode) {\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\n\t\t}\n\t};\n\n\t//default ajax config object\n\tAjax.prototype.defaultConfig = {\n\t\tmethod: \"GET\"\n\t};\n\n\tAjax.prototype.defaultURLGenerator = function (url, config, params) {\n\n\t\tif (url) {\n\t\t\tif (params && Object.keys(params).length) {\n\t\t\t\tif (!config.method || config.method.toLowerCase() == \"get\") {\n\t\t\t\t\tconfig.method = \"get\";\n\t\t\t\t\turl += \"?\" + this.serializeParams(params);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn url;\n\t};\n\n\tAjax.prototype.defaultLoaderPromise = function (url, config, params) {\n\t\tvar self = this,\n\t\t contentType;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t//set url\n\t\t\turl = self.urlGenerator(url, config, params);\n\n\t\t\t//set body content if not GET request\n\t\t\tif (config.method.toUpperCase() != \"GET\") {\n\t\t\t\tcontentType = _typeof(self.table.options.ajaxContentType) === \"object\" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];\n\t\t\t\tif (contentType) {\n\n\t\t\t\t\tfor (var key in contentType.headers) {\n\t\t\t\t\t\tif (!config.headers) {\n\t\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof config.headers[key] === \"undefined\") {\n\t\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconfig.body = contentType.body.call(self, url, config, params);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", self.table.options.ajaxContentType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (url) {\n\n\t\t\t\t//configure headers\n\t\t\t\tif (typeof config.headers === \"undefined\") {\n\t\t\t\t\tconfig.headers = {};\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers.Accept === \"undefined\") {\n\t\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers[\"X-Requested-With\"] === \"undefined\") {\n\t\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.mode === \"undefined\") {\n\t\t\t\t\tconfig.mode = \"cors\";\n\t\t\t\t}\n\n\t\t\t\tif (config.mode == \"cors\") {\n\n\t\t\t\t\tif (typeof config.headers[\"Access-Control-Allow-Origin\"] === \"undefined\") {\n\t\t\t\t\t\tconfig.headers[\"Access-Control-Allow-Origin\"] = window.location.origin;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//send request\n\t\t\t\tfetch(url, config).then(function (response) {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\tresponse.json().then(function (data) {\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\t\tresolve([]);\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.contentTypeFormatters = {\n\t\t\"json\": {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\treturn JSON.stringify(params);\n\t\t\t}\n\t\t},\n\t\t\"form\": {\n\t\t\theaders: {},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\tvar output = this.generateParamsList(params),\n\t\t\t\t form = new FormData();\n\n\t\t\t\toutput.forEach(function (item) {\n\t\t\t\t\tform.append(item.key, item.value);\n\t\t\t\t});\n\n\t\t\t\treturn form;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"ajax\", Ajax);\n\n\tvar ColumnCalcs = function ColumnCalcs(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\n\t\tthis.initialize();\n\t};\n\n\tColumnCalcs.prototype.createElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t};\n\n\tColumnCalcs.prototype.initialize = function () {\n\t\tthis.genColumn = new Column({ field: \"value\" }, this);\n\t};\n\n\t//dummy functions to handle being mock column manager\n\tColumnCalcs.prototype.registerColumnField = function () {};\n\n\t//initialize column calcs\n\tColumnCalcs.prototype.initializeColumn = function (column) {\n\t\tvar def = column.definition;\n\n\t\tvar config = {\n\t\t\ttopCalcParams: def.topCalcParams || {},\n\t\t\tbotCalcParams: def.bottomCalcParams || {}\n\t\t};\n\n\t\tif (def.topCalc) {\n\n\t\t\tswitch (_typeof(def.topCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.topCalc]) {\n\t\t\t\t\t\tconfig.topCalc = this.calculations[def.topCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.topCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (def.bottomCalc) {\n\t\t\tswitch (_typeof(def.bottomCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.bottomCalc]) {\n\t\t\t\t\t\tconfig.botCalc = this.calculations[def.bottomCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.botCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.removeCalcs = function () {\n\t\tvar changed = false;\n\n\t\tif (this.topInitialized) {\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.table.footerManager.remove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (changed) {\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeTopRow = function () {\n\t\tif (!this.topInitialized) {\n\t\t\t// this.table.columnManager.headersElement.after(this.topElement);\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeBottomRow = function () {\n\t\tif (!this.botInitialized) {\n\t\t\tthis.table.footerManager.prepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.scrollHorizontal = function (left) {\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botRow.getElement().style.marginLeft = -left + \"px\";\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalc = function (rows) {\n\t\tvar data, row;\n\n\t\tif (this.topInitialized || this.botInitialized) {\n\t\t\tdata = this.rowsToData(rows);\n\n\t\t\tif (this.topInitialized) {\n\t\t\t\tif (this.topRow) {\n\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows));\n\t\t\t\tthis.topRow = row;\n\t\t\t\twhile (this.topElement.firstChild) {\n\t\t\t\t\tthis.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t}this.topElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tif (this.botInitialized) {\n\t\t\t\tif (this.botRow) {\n\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows));\n\t\t\t\tthis.botRow = row;\n\t\t\t\twhile (this.botElement.firstChild) {\n\t\t\t\t\tthis.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t}this.botElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\t//set resizable handles\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalcRowGroup = function (row) {\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t};\n\n\tColumnCalcs.prototype.recalcGroup = function (group) {\n\t\tvar data, rowData;\n\n\t\tif (group) {\n\t\t\tif (group.calcs) {\n\t\t\t\tif (group.calcs.bottom) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t}\n\n\t\t\t\tif (group.calcs.top) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate top stats row\n\tColumnCalcs.prototype.generateTopRow = function (rows) {\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t};\n\t//generate bottom stats row\n\tColumnCalcs.prototype.generateBottomRow = function (rows) {\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t};\n\n\tColumnCalcs.prototype.rowsToData = function (rows) {\n\t\tvar data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRow = function (pos, data) {\n\t\tvar self = this,\n\t\t rowData = this.generateRowData(pos, data),\n\t\t row;\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.disable();\n\t\t}\n\n\t\trow = new Row(rowData, this);\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.enable();\n\t\t}\n\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\trow.type = \"calc\";\n\n\t\trow.generateCells = function () {\n\n\t\t\tvar cells = [];\n\n\t\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\t\t//set field name of mock column\n\t\t\t\tself.genColumn.setField(column.getField());\n\t\t\t\tself.genColumn.hozAlign = column.hozAlign;\n\n\t\t\t\tif (column.definition[pos + \"CalcFormatter\"] && self.table.modExists(\"format\")) {\n\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"]\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams: {}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//ensure css class defintion is replicated to calculation cell\n\t\t\t\tself.genColumn.definition.cssClass = column.definition.cssClass;\n\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(self.genColumn, row);\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\n\t\t\t\tif (!column.visible) {\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cells = cells;\n\t\t};\n\n\t\treturn row;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRowData = function (pos, data) {\n\t\tvar rowData = {},\n\t\t calcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\t type = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\t params,\n\t\t paramKey;\n\n\t\tcalcs.forEach(function (column) {\n\t\t\tvar values = [];\n\n\t\t\tif (column.modules.columnCalcs && column.modules.columnCalcs[type]) {\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t};\n\n\tColumnCalcs.prototype.hasTopCalcs = function () {\n\t\treturn !!this.topCalcs.length;\n\t}, ColumnCalcs.prototype.hasBottomCalcs = function () {\n\t\treturn !!this.botCalcs.length;\n\t},\n\n\t//handle table redraw\n\tColumnCalcs.prototype.redraw = function () {\n\t\tif (this.topRow) {\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif (this.botRow) {\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t};\n\n\t//return the calculated\n\tColumnCalcs.prototype.getResults = function () {\n\t\tvar self = this,\n\t\t results = {},\n\t\t groups;\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tresults[group.getKey()] = self.getGroupResults(group);\n\t\t\t});\n\t\t} else {\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {}\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t};\n\n\t//get results from a group\n\tColumnCalcs.prototype.getGroupResults = function (group) {\n\t\tvar self = this,\n\t\t groupObj = group._getSelf(),\n\t\t subGroups = group.getSubGroups(),\n\t\t subGroupResults = {},\n\t\t results = {};\n\n\t\tsubGroups.forEach(function (subgroup) {\n\t\t\tsubGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);\n\t\t});\n\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults\n\t\t};\n\n\t\treturn results;\n\t};\n\n\t//default calculations\n\tColumnCalcs.prototype.calculations = {\n\t\t\"avg\": function avg(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t\treturn sum + value;\n\t\t\t\t});\n\n\t\t\t\toutput = output / values.length;\n\n\t\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t\t}\n\n\t\t\treturn parseFloat(output).toString();\n\t\t},\n\t\t\"max\": function max(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value > output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"min\": function min(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value < output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"sum\": function sum(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tvalue = Number(value);\n\n\t\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t\t},\n\t\t\"concat\": function concat(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\treturn String(sum) + String(value);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\t\t\"count\": function count(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\toutput++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"columnCalcs\", ColumnCalcs);\n\n\tvar Clipboard = function Clipboard(table) {\n\t\tthis.table = table;\n\t\tthis.mode = true;\n\t\tthis.copySelector = false;\n\t\tthis.copySelectorParams = {};\n\t\tthis.copyFormatter = false;\n\t\tthis.copyFormatterParams = {};\n\t\tthis.pasteParser = function () {};\n\t\tthis.pasteAction = function () {};\n\t\tthis.htmlElement = false;\n\t\tthis.config = {};\n\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\t};\n\n\tClipboard.prototype.initialize = function () {\n\t\tvar self = this;\n\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\t\t\tthis.table.element.addEventListener(\"copy\", function (e) {\n\t\t\t\tvar data;\n\n\t\t\t\tself.processConfig();\n\n\t\t\t\tif (!self.blocked) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tdata = self.generateContent();\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', data);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.options.clipboardCopied.call(this.table, data);\n\n\t\t\t\t\tself.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.mode === true || this.mode === \"paste\") {\n\t\t\tthis.table.element.addEventListener(\"paste\", function (e) {\n\t\t\t\tself.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\t};\n\n\tClipboard.prototype.processConfig = function () {\n\t\tvar config = {\n\t\t\tcolumnHeaders: \"groups\",\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (typeof this.table.options.clipboardCopyHeader !== \"undefined\") {\n\t\t\tconfig.columnHeaders = this.table.options.clipboardCopyHeader;\n\t\t\tconsole.warn(\"DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option\");\n\t\t}\n\n\t\tif (this.table.options.clipboardCopyConfig) {\n\t\t\tfor (var key in this.table.options.clipboardCopyConfig) {\n\t\t\t\tconfig[key] = this.table.options.clipboardCopyConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnHeaders) {\n\t\t\tif ((config.columnHeaders === \"groups\" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\t\tthis.config.columnHeaders = \"groups\";\n\t\t\t} else {\n\t\t\t\tthis.config.columnHeaders = \"columns\";\n\t\t\t}\n\t\t} else {\n\t\t\tthis.config.columnHeaders = false;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tClipboard.prototype.reset = function () {\n\t\tthis.blocked = false;\n\t\tthis.originalSelectionText = \"\";\n\t};\n\n\tClipboard.prototype.setPasteAction = function (action) {\n\n\t\tswitch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = this.pasteActions[action];\n\n\t\t\t\tif (!this.pasteAction) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setPasteParser = function (parser) {\n\t\tswitch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = this.pasteParsers[parser];\n\n\t\t\t\tif (!this.pasteParser) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.paste = function (e) {\n\t\tvar data, rowData, rows;\n\n\t\tif (this.checkPaseOrigin(e)) {\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif (rowData) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (this.table.modExists(\"mutator\")) {\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\t\t\t\tthis.table.options.clipboardPasted.call(this.table, data, rowData, rows);\n\t\t\t} else {\n\t\t\t\tthis.table.options.clipboardPasteError.call(this.table, data);\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.mutateData = function (data) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (row) {\n\t\t\t\toutput.push(self.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t} else {\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.checkPaseOrigin = function (e) {\n\t\tvar valid = true;\n\n\t\tif (e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t};\n\n\tClipboard.prototype.getPasteData = function (e) {\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {\n\t\tvar range, sel, textRange;\n\t\tthis.blocked = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tselector = \"userSelection\";\n\t\t\t\t\tformatter = \"raw\";\n\t\t\t\t\tselectorParams = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tthis.setSelector(selector);\n\t\t\tthis.copySelectorParams = typeof selectorParams != \"undefined\" && selectorParams != null ? selectorParams : this.config.columnHeaders;\n\t\t\tthis.setFormatter(formatter);\n\t\t\tthis.copyFormatterParams = typeof formatterParams != \"undefined\" && formatterParams != null ? formatterParams : {};\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.setSelector = function (selector) {\n\t\tselector = selector || this.table.options.clipboardCopySelector;\n\n\t\tswitch (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copySelectors[selector]) {\n\t\t\t\t\tthis.copySelector = this.copySelectors[selector];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such selector found:\", selector);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copySelector = selector;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setFormatter = function (formatter) {\n\n\t\tformatter = formatter || this.table.options.clipboardCopyFormatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copyFormatters[formatter]) {\n\t\t\t\t\tthis.copyFormatter = this.copyFormatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such formatter found:\", formatter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copyFormatter = formatter;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.generateContent = function () {\n\t\tvar data;\n\n\t\tthis.htmlElement = false;\n\t\tdata = this.copySelector.call(this, this.config, this.copySelectorParams);\n\n\t\treturn this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);\n\t};\n\n\tClipboard.prototype.generateSimpleHeaders = function (columns) {\n\t\tvar headers = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\theaders.push(column.definition.title);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.generateColumnGroupHeaders = function (columns) {\n\t\tvar _this22 = this;\n\n\t\tvar output = [];\n\n\t\tthis.table.columnManager.columns.forEach(function (column) {\n\t\t\tvar colData = _this22.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processColumnGroup = function (column) {\n\t\tvar _this23 = this;\n\n\t\tvar subGroups = column.columns;\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this23.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.visible) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [];\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push(column.title);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpadColumnheaders();\n\t\t\t}\n\t\t}\n\n\t\tfunction padColumnheaders() {\n\t\t\tvar max = 0;\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len > max) {\n\t\t\t\t\tmax = len;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len < max) {\n\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.rowsToData = function (rows, config, params) {\n\t\tvar columns = this.table.columnManager.columnsByIndex,\n\t\t data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowArray = [],\n\t\t\t rowData = row instanceof RowComponent ? row.getData(\"clipboard\") : row;\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\trowArray.push(value);\n\t\t\t});\n\n\t\t\tdata.push(rowArray);\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.buildComplexRows = function (config) {\n\t\tvar _this24 = this;\n\n\t\tvar output = [],\n\t\t groups = this.table.modules.groupRows.getGroups();\n\n\t\tgroups.forEach(function (group) {\n\t\t\toutput.push(_this24.processGroupData(group));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processGroupData = function (group) {\n\t\tvar _this25 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this25.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getRows(true);\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.getCalcRow = function (calcs, selector, pos) {\n\t\tvar calcData = calcs[selector];\n\n\t\tif (calcData) {\n\t\t\tif (pos) {\n\t\t\t\tcalcData = calcData[pos];\n\t\t\t}\n\n\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\treturn this.rowsToData([calcData]);\n\t\t\t}\n\t\t}\n\n\t\treturn [];\n\t};\n\n\tClipboard.prototype.buildOutput = function (rows, config, params) {\n\t\tvar _this26 = this;\n\n\t\tvar output = [],\n\t\t calcs,\n\t\t columns = this.table.columnManager.columnsByIndex;\n\n\t\tif (config.columnHeaders) {\n\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns = this.generateColumnGroupHeaders(this.table.columnManager.columns);\n\n\t\t\t\toutput = output.concat(this.groupHeadersToRows(columns));\n\t\t\t} else {\n\t\t\t\toutput.push(this.generateSimpleHeaders(columns));\n\t\t\t}\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\t\t}\n\n\t\t//generate styled content\n\t\tif (this.table.options.clipboardCopyStyled) {\n\t\t\tthis.generateHTML(rows, columns, calcs, config, params);\n\t\t}\n\n\t\t//generate unstyled content\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (row) {\n\t\t\t\toutput = output.concat(_this26.parseRowGroupData(row, config, params, calcs || {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"top\"));\n\t\t\t}\n\n\t\t\toutput = output.concat(this.rowsToData(rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.parseRowGroupData = function (group, config, params, calcObj) {\n\t\tvar _this27 = this;\n\n\t\tvar groupData = [];\n\n\t\tgroupData.push([group.key]);\n\n\t\tif (group.subGroups) {\n\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData = groupData.concat(_this27.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"top\"));\n\t\t\t}\n\n\t\t\tgroupData = groupData.concat(this.rowsToData(group.rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {\n\t\tvar self = this,\n\t\t data = [],\n\t\t headers = [],\n\t\t body,\n\t\t oddRow,\n\t\t evenRow,\n\t\t calcRow,\n\t\t firstRow,\n\t\t firstCell,\n\t\t firstGroup,\n\t\t lastCell,\n\t\t styleCells;\n\n\t\t//create table element\n\t\tthis.htmlElement = document.createElement(\"table\");\n\t\tself.mapElementStyles(this.table.element, this.htmlElement, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\tfunction generateSimpleHeaders() {\n\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar columnEl = document.createElement(\"th\");\n\t\t\t\tcolumnEl.innerHTML = column.definition.title;\n\n\t\t\t\tself.mapElementStyles(column.getElement(), columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t});\n\n\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\tself.htmlElement.appendChild(document.createElement(\"thead\").appendChild(headerEl));\n\t\t}\n\n\t\tfunction generateHeaders(headers) {\n\n\t\t\tvar headerHolderEl = document.createElement(\"thead\");\n\n\t\t\theaders.forEach(function (columns) {\n\t\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tvar columnEl = document.createElement(\"th\");\n\n\t\t\t\t\tif (column.width > 1) {\n\t\t\t\t\t\tcolumnEl.colSpan = column.width;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.height > 1) {\n\t\t\t\t\t\tcolumnEl.rowSpan = column.height;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolumnEl.innerHTML = column.title;\n\n\t\t\t\t\tself.mapElementStyles(column.element, columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t\t});\n\n\t\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderHolderEl.appendChild(headerEl);\n\t\t\t});\n\n\t\t\tself.htmlElement.appendChild(headerHolderEl);\n\t\t}\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push({\n\t\t\t\ttitle: column.title,\n\t\t\t\twidth: column.width,\n\t\t\t\theight: 1,\n\t\t\t\tchildren: !!column.subGroups,\n\t\t\t\telement: column.column.getElement()\n\t\t\t});\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction padVerticalColumnheaders() {\n\t\t\theaders.forEach(function (row, index) {\n\t\t\t\trow.forEach(function (header) {\n\t\t\t\t\tif (!header.children) {\n\t\t\t\t\t\theader.height = headers.length - index;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\tvar calcData = calcs[selector];\n\n\t\t\tif (calcData) {\n\t\t\t\tif (pos) {\n\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t// calcRowIndexs.push(body.length);\n\t\t\t\t\tprocessRows([calcData]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//create headers if needed\n\t\tif (config.columnHeaders) {\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\n\t\t\t\tpadVerticalColumnheaders();\n\t\t\t\tgenerateHeaders(headers);\n\t\t\t} else {\n\t\t\t\tgenerateSimpleHeaders();\n\t\t\t}\n\t\t}\n\n\t\tcolumns = this.table.columnManager.columnsByIndex;\n\n\t\t//create table body\n\t\tbody = document.createElement(\"tbody\");\n\n\t\t//lookup row styles\n\t\tif (window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tfunction processRows(rowArray) {\n\t\t\t//add rows to table\n\t\t\trowArray.forEach(function (row, i) {\n\t\t\t\tvar rowEl = document.createElement(\"tr\"),\n\t\t\t\t styleRow = firstRow,\n\t\t\t\t isCalc = false,\n\t\t\t\t rowData;\n\n\t\t\t\tif (row instanceof RowComponent) {\n\t\t\t\t\trowData = row.getData(\"clipboard\");\n\t\t\t\t} else {\n\t\t\t\t\trowData = row;\n\t\t\t\t\tisCalc = true;\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column, j) {\n\t\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\t\t value = column.getFieldValue(rowData);\n\n\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcellEl.innerHTML = value;\n\n\t\t\t\t\tif (column.definition.align) {\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (j < columns.length - 1) {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t});\n\n\t\t\t\tif (isCalc) {\n\t\t\t\t\tstyleRow = calcRow;\n\t\t\t\t} else {\n\t\t\t\t\tif (!(i % 2) && oddRow) {\n\t\t\t\t\t\tstyleRow = oddRow;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i % 2 && evenRow) {\n\t\t\t\t\t\tstyleRow = evenRow;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (styleRow) {\n\t\t\t\t\tself.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t}\n\n\t\t\t\tbody.appendChild(rowEl);\n\t\t\t});\n\t\t}\n\n\t\tfunction processGroup(group, calcObj) {\n\t\t\tvar groupEl = document.createElement(\"tr\"),\n\t\t\t groupCellEl = document.createElement(\"td\");\n\n\t\t\tgroupCellEl.colSpan = columns.length;\n\n\t\t\tgroupCellEl.innerHTML = group.key;\n\n\t\t\tgroupEl.appendChild(groupCellEl);\n\t\t\tbody.appendChild(groupEl);\n\n\t\t\tself.mapElementStyles(firstGroup, groupEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\n\t\t\tif (group.subGroups) {\n\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tprocessGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t}\n\n\t\t\t\tprocessRows(group.rows);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (group) {\n\t\t\t\tprocessGroup(group, calcs || {});\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t}\n\n\t\t\tprocessRows(rows);\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t}\n\t\t}\n\n\t\tthis.htmlElement.appendChild(body);\n\t};\n\n\tClipboard.prototype.mapElementStyles = function (from, to, props) {\n\n\t\tvar lookup = {\n\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\"color\": \"fontColor\",\n\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\"border-bottom\": \"borderBottom\"\n\t\t};\n\n\t\tif (window.getComputedStyle) {\n\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\tprops.forEach(function (prop) {\n\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t});\n\t\t}\n\n\t\t// return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];\n\t};\n\n\tClipboard.prototype.copySelectors = {\n\t\tuserSelection: function userSelection(config, params) {\n\t\t\treturn params;\n\t\t},\n\t\tselected: function selected(config, params) {\n\t\t\tvar rows = [];\n\n\t\t\tif (this.table.modExists(\"selectRow\", true)) {\n\t\t\t\trows = this.table.modules.selectRow.getSelectedRows();\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - select coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t},\n\t\ttable: function table(config, params) {\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - table coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(this.table.rowManager.getComponents(), config, params);\n\t\t},\n\t\tactive: function active(config, params) {\n\t\t\tvar rows;\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\trows = this.buildComplexRows(config);\n\t\t\t} else {\n\t\t\t\trows = this.table.rowManager.getComponents(true);\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t}\n\t};\n\n\tClipboard.prototype.copyFormatters = {\n\t\traw: function raw(data, params) {\n\t\t\treturn data;\n\t\t},\n\t\ttable: function table(data, params) {\n\t\t\tvar output = [];\n\n\t\t\tdata.forEach(function (row) {\n\t\t\t\trow.forEach(function (value) {\n\t\t\t\t\tif (typeof value == \"undefined\") {\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = typeof value == \"undefined\" || value === null ? \"\" : value.toString();\n\n\t\t\t\t\tif (value.match(/\\r|\\n/)) {\n\t\t\t\t\t\tvalue = value.split('\"').join('\"\"');\n\t\t\t\t\t\tvalue = '\"' + value + '\"';\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\toutput.push(row.join(\"\\t\"));\n\t\t\t});\n\n\t\t\treturn output.join(\"\\n\");\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteParsers = {\n\t\ttable: function table(clipboard) {\n\t\t\tvar data = [],\n\t\t\t success = false,\n\t\t\t headerFindSuccess = true,\n\t\t\t columns = this.table.columnManager.columns,\n\t\t\t columnMap = [],\n\t\t\t rows = [];\n\n\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\t\tclipboard.forEach(function (row) {\n\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t});\n\n\t\t\tif (data.length && !(data.length === 1 && data[0].length < 2)) {\n\t\t\t\tsuccess = true;\n\n\t\t\t\t//check if headers are present by title\n\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (column) {\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//check if column headers are present by field\n\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\theaderFindSuccess = true;\n\t\t\t\t\tcolumnMap = [];\n\n\t\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (column) {\n\t\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//remove header row if found\n\t\t\t\tif (headerFindSuccess) {\n\t\t\t\t\tdata.shift();\n\t\t\t\t}\n\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvar row = {};\n\n\t\t\t\t\titem.forEach(function (value, i) {\n\t\t\t\t\t\tif (columnMap[i]) {\n\t\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\treturn rows;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteActions = {\n\t\treplace: function replace(rows) {\n\t\t\treturn this.table.setData(rows);\n\t\t},\n\t\tupdate: function update(rows) {\n\t\t\treturn this.table.updateOrAddData(rows);\n\t\t},\n\t\tinsert: function insert(rows) {\n\t\t\treturn this.table.addData(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"clipboard\", Clipboard);\n\n\tvar DataTree = function DataTree(table) {\n\t\tthis.table = table;\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function () {};\n\n\t\tthis.displayIndex = 0;\n\t};\n\n\tDataTree.prototype.initialize = function () {\n\t\tvar dummyEl = null,\n\t\t firstCol = this.table.columnManager.getFirstVisibileColumn(),\n\t\t options = this.table.options;\n\n\t\tthis.field = options.dataTreeChildField;\n\t\tthis.indent = options.dataTreeChildIndent;\n\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\n\t\tif (options.dataTreeBranchElement) {\n\n\t\t\tif (options.dataTreeBranchElement === true) {\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t} else {\n\t\t\t\tif (typeof options.dataTreeBranchElement === \"string\") {\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t} else {\n\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.dataTreeCollapseElement) {\n\t\t\tif (typeof options.dataTreeCollapseElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.collapseEl.innerHTML = \"<div class='tabulator-data-tree-control-collapse'></div>\";\n\t\t}\n\n\t\tif (options.dataTreeExpandElement) {\n\t\t\tif (typeof options.dataTreeExpandElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.expandEl.innerHTML = \"<div class='tabulator-data-tree-control-expand'></div>\";\n\t\t}\n\n\t\tswitch (_typeof(options.dataTreeStartExpanded)) {\n\t\t\tcase \"boolean\":\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tDataTree.prototype.initializeRow = function (row) {\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === \"object\" && childArray !== null;\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: 0,\n\t\t\topen: children ? this.startOpen(row.getComponent(), 0) : false,\n\t\t\tcontrolEl: false,\n\t\t\tbranchEl: false,\n\t\t\tparent: false,\n\t\t\tchildren: children\n\t\t};\n\t};\n\n\tDataTree.prototype.layoutRow = function (row) {\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\t el = cell.getElement(),\n\t\t config = row.modules.dataTree;\n\n\t\tif (config.branchEl) {\n\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\tif (config.index) {\n\t\t\tif (this.branchEl) {\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\t\t\t\tconfig.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + \"px\";\n\t\t\t} else {\n\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + \"px\";\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.generateControlElement = function (row, el) {\n\t\tvar _this28 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t el = el || row.getCells()[0].getElement(),\n\t\t oldControl = config.controlEl;\n\n\t\tif (config.children !== false) {\n\n\t\t\tif (config.open) {\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.collapseRow(row);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif (oldControl && oldControl.parentNode === el) {\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl, oldControl);\n\t\t\t} else {\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tDataTree.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tDataTree.prototype.getRows = function (rows) {\n\t\tvar _this29 = this;\n\n\t\tvar output = [];\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif (row instanceof Row) {\n\n\t\t\t\tconfig = row.modules.dataTree.children;\n\n\t\t\t\tif (!config.index && config.children !== false) {\n\t\t\t\t\tchildren = _this29.getChildren(row);\n\n\t\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.getChildren = function (row) {\n\t\tvar _this30 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t children = [],\n\t\t output = [];\n\n\t\tif (config.children !== false && config.open) {\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"filter\")) {\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t} else {\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"sort\")) {\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach(function (child) {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = _this30.getChildren(child);\n\n\t\t\t\tsubChildren.forEach(function (sub) {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.generateChildren = function (row) {\n\t\tvar _this31 = this;\n\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif (!Array.isArray(childArray)) {\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach(function (childData) {\n\t\t\tvar childRow = new Row(childData || {}, _this31.table.rowManager);\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\t\t\tif (childRow.modules.dataTree.children) {\n\t\t\t\tchildRow.modules.dataTree.open = _this31.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t};\n\n\tDataTree.prototype.expandRow = function (row, silent) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.collapseRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.toggleRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tif (config.open) {\n\t\t\t\tthis.collapseRow(row);\n\t\t\t} else {\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getTreeParent = function (row) {\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t};\n\n\tDataTree.prototype.getTreeChildren = function (row) {\n\t\tvar config = row.modules.dataTree,\n\t\t output = [];\n\n\t\tif (config.children) {\n\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach(function (childRow) {\n\t\t\t\tif (childRow instanceof Row) {\n\t\t\t\t\toutput.push(childRow.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.checkForRestyle = function (cell) {\n\t\tif (!cell.row.cells.indexOf(cell)) {\n\t\t\tif (cell.row.modules.dataTree.children !== false) {\n\t\t\t\tcell.row.reinitialize();\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getChildField = function () {\n\t\treturn this.field;\n\t};\n\n\tTabulator.prototype.registerModule(\"dataTree\", DataTree);\n\tvar Download = function Download(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fields = {}; //hold filed multi dimension arrays\n\t\tthis.columnsByIndex = []; //hold columns in their order in the table\n\t\tthis.columnsByField = {}; //hold columns with lookup by field name\n\t\tthis.config = {};\n\t};\n\n\t//trigger file download\n\tDownload.prototype.download = function (type, filename, options, interceptCallback) {\n\t\tvar self = this,\n\t\t downloadFunc = false;\n\t\tthis.processConfig();\n\n\t\tfunction buildLink(data, mime) {\n\t\t\tif (interceptCallback) {\n\t\t\t\tif (interceptCallback === true) {\n\t\t\t\t\tself.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t} else {\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof type == \"function\") {\n\t\t\tdownloadFunc = type;\n\t\t} else {\n\t\t\tif (self.downloaders[type]) {\n\t\t\t\tdownloadFunc = self.downloaders[type];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tthis.processColumns();\n\n\t\tif (downloadFunc) {\n\t\t\tdownloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);\n\t\t}\n\t};\n\n\tDownload.prototype.processConfig = function () {\n\t\tvar config = { //download config\n\t\t\tcolumnGroups: true,\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (this.table.options.downloadConfig) {\n\t\t\tfor (var key in this.table.options.downloadConfig) {\n\t\t\t\tconfig[key] = this.table.options.downloadConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\tthis.config.columnGroups = true;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tDownload.prototype.processColumns = function () {\n\t\tvar self = this;\n\n\t\tself.columnsByIndex = [];\n\t\tself.columnsByField = {};\n\n\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tself.columnsByIndex.push(column);\n\t\t\t\tself.columnsByField[column.field] = column;\n\t\t\t}\n\t\t});\n\t};\n\n\tDownload.prototype.processDefinitions = function () {\n\t\tvar self = this,\n\t\t processedDefinitions = [];\n\n\t\tif (this.config.columnGroups) {\n\t\t\tself.table.columnManager.columns.forEach(function (column) {\n\t\t\t\tvar colData = self.processColumnGroup(column);\n\n\t\t\t\tif (colData) {\n\t\t\t\t\tprocessedDefinitions.push(colData);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tself.columnsByIndex.forEach(function (column) {\n\t\t\t\tif (column.download !== false) {\n\t\t\t\t\t//isolate definiton from defintion object\n\t\t\t\t\tprocessedDefinitions.push(self.processDefinition(column));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn processedDefinitions;\n\t};\n\n\tDownload.prototype.processColumnGroup = function (column) {\n\t\tvar _this32 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\t\tvar processedColumn = this.processDefinition(column);\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: processedColumn.title,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this32.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t}\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t\tgroupData.definition = processedColumn;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.processDefinition = function (column) {\n\t\tvar def = {};\n\n\t\tfor (var key in column.definition) {\n\t\t\tdef[key] = column.definition[key];\n\t\t}\n\n\t\tif (typeof column.definition.downloadTitle != \"undefined\") {\n\t\t\tdef.title = column.definition.downloadTitle;\n\t\t}\n\n\t\treturn def;\n\t};\n\n\tDownload.prototype.processData = function () {\n\t\tvar _this33 = this;\n\n\t\tvar self = this,\n\t\t data = [],\n\t\t groups = [],\n\t\t calcs = {};\n\n\t\tif (this.config.rowGroups) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups();\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tdata.push(_this33.processGroupData(group));\n\t\t\t});\n\t\t} else {\n\t\t\tdata = self.table.rowManager.getData(true, \"download\");\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\n\t\t\tdata = {\n\t\t\t\tcalcs: calcs,\n\t\t\t\tdata: data\n\t\t\t};\n\t\t}\n\n\t\t//bulk data processing\n\t\tif (typeof self.table.options.downloadDataFormatter == \"function\") {\n\t\t\tdata = self.table.options.downloadDataFormatter(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tDownload.prototype.processGroupData = function (group) {\n\t\tvar _this34 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this34.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getData(true, \"download\");\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.triggerDownload = function (data, mime, type, filename, newTab) {\n\t\tvar element = document.createElement('a'),\n\t\t blob = new Blob([data], { type: mime }),\n\t\t filename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\n\t\tblob = this.table.options.downloadReady.call(this.table, data, blob);\n\n\t\tif (blob) {\n\n\t\t\tif (newTab) {\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t} else {\n\t\t\t\tif (navigator.msSaveOrOpenBlob) {\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.table.options.downloadComplete) {\n\t\t\t\tthis.table.options.downloadComplete();\n\t\t\t}\n\t\t}\n\t};\n\n\t//nested field lookup\n\tDownload.prototype.getFieldValue = function (field, data) {\n\t\tvar column = this.columnsByField[field];\n\n\t\tif (column) {\n\t\t\treturn column.getFieldValue(data);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tDownload.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//downloaders\n\tDownload.prototype.downloaders = {\n\t\tcsv: function csv(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t titles = [],\n\t\t\t fields = [],\n\t\t\t delimiter = options && options.delimiter ? options.delimiter : \",\",\n\t\t\t fileContents,\n\t\t\t output;\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.field);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column groups\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\t//generate header row\n\t\t\tfileContents = [titles.join(delimiter)];\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//generate each row of the table\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\n\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//escape quotation marks\n\t\t\t\t\t\trowData.push('\"' + String(value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t});\n\n\t\t\t\t\tfileContents.push(rowData.join(delimiter));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseGroup(group) {\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseRows(group.rows);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseRows(data);\n\t\t\t}\n\n\t\t\toutput = fileContents.join(\"\\n\");\n\n\t\t\tif (options.bom) {\n\t\t\t\toutput = '\\uFEFF' + output;\n\t\t\t}\n\n\t\t\tsetFileContents(output, \"text/csv\");\n\t\t},\n\n\t\tjson: function json(columns, data, options, setFileContents, config) {\n\t\t\tvar fileContents;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfileContents = JSON.stringify(data, null, '\\t');\n\n\t\t\tsetFileContents(fileContents, \"application/json\");\n\t\t},\n\n\t\tpdf: function pdf(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t fields = [],\n\t\t\t header = [],\n\t\t\t body = [],\n\t\t\t calcs = {},\n\t\t\t headerDepth = 1,\n\t\t\t table = \"\",\n\t\t\t autoTableParams = {},\n\t\t\t rowGroupStyles = options.rowGroupStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tcellPadding: 6,\n\t\t\t\tfillColor: 220\n\t\t\t},\n\t\t\t rowCalcStyles = options.rowCalcStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 10,\n\t\t\t\tcellPadding: 4,\n\t\t\t\tfillColor: 232\n\t\t\t},\n\t\t\t jsPDFParams = options.jsPDF || {},\n\t\t\t title = options && options.title ? options.title : \"\";\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.orientation) {\n\t\t\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.unit) {\n\t\t\t\tjsPDFParams.unit = \"pt\";\n\t\t\t}\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.field) {\n\t\t\t\t\t\theader.push(column.title || \"\");\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\theader = [header];\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tvar colSpan = column.width,\n\t\t\t\t rowSpan = 1,\n\t\t\t\t col = {\n\t\t\t\t\tcontent: column.title || \"\"\n\t\t\t\t};\n\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t\trowSpan = 1;\n\t\t\t\t} else {\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\trowSpan = headerDepth - level;\n\t\t\t\t}\n\n\t\t\t\tcol.rowSpan = rowSpan;\n\t\t\t\t// col.colSpan = colSpan;\n\n\t\t\t\theader[level].push(col);\n\n\t\t\t\tcolSpan--;\n\n\t\t\t\tif (rowSpan > 1) {\n\t\t\t\t\tfor (var i = level + 1; i < headerDepth; i++) {\n\t\t\t\t\t\theader[i].push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < colSpan; i++) {\n\t\t\t\t\theader[level].push(\"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.depth > headerDepth) {\n\t\t\t\t\t\theaderDepth = column.depth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfor (var i = 0; i < headerDepth; i++) {\n\t\t\t\t\theader.push([]);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\tfunction parseValue(value) {\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//build table rows\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tbody.push(parseRow(row));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseRow(row, styles) {\n\t\t\t\tvar rowData = [];\n\n\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\tvalue = parseValue(value);\n\n\t\t\t\t\tif (styles) {\n\t\t\t\t\t\trowData.push({\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t\tstyles: styles\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowData.push(value);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn rowData;\n\t\t\t}\n\n\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\tvar groupData = [];\n\n\t\t\t\tgroupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });\n\n\t\t\t\tbody.push(groupData);\n\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\tif (calcData) {\n\t\t\t\t\tif (pos) {\n\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\tbody.push(parseRow(calcData, rowCalcStyles));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t}\n\n\t\t\t\tparseRows(data);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\t\t\tif (options && options.autoTable) {\n\t\t\t\tif (typeof options.autoTable === \"function\") {\n\t\t\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t\t\t} else {\n\t\t\t\t\tautoTableParams = options.autoTable;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (title) {\n\t\t\t\tautoTableParams.addPageContent = function (data) {\n\t\t\t\t\tdoc.text(title, 40, 30);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tautoTableParams.head = header;\n\t\t\tautoTableParams.body = body;\n\n\t\t\tdoc.autoTable(autoTableParams);\n\n\t\t\tif (options && options.documentProcessing) {\n\t\t\t\toptions.documentProcessing(doc);\n\t\t\t}\n\n\t\t\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n\t\t},\n\n\t\txlsx: function xlsx(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t sheetName = options.sheetName || \"Sheet1\",\n\t\t\t workbook = { SheetNames: [], Sheets: {} },\n\t\t\t calcs = {},\n\t\t\t groupRowIndexs = [],\n\t\t\t groupColumnIndexs = [],\n\t\t\t calcRowIndexs = [],\n\t\t\t output;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfunction generateSheet() {\n\t\t\t\tvar titles = [],\n\t\t\t\t fields = [],\n\t\t\t\t rows = [],\n\t\t\t\t worksheet;\n\n\t\t\t\t//convert rows to worksheet\n\t\t\t\tfunction rowsToSheet() {\n\t\t\t\t\tvar sheet = {};\n\t\t\t\t\tvar range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };\n\n\t\t\t\t\tXLSX.utils.sheet_add_aoa(sheet, rows);\n\n\t\t\t\t\tsheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\t\t\t\tvar merges = generateMerges();\n\n\t\t\t\t\tif (merges.length) {\n\t\t\t\t\t\tsheet[\"!merges\"] = merges;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn sheet;\n\t\t\t\t}\n\n\t\t\t\tfunction parseSimpleTitles() {\n\t\t\t\t\t//get field lists\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\ttitles.push(column.title);\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(titles);\n\t\t\t\t}\n\n\t\t\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\t\t\tif (typeof titles[level] === \"undefined\") {\n\t\t\t\t\t\ttitles[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof groupColumnIndexs[level] === \"undefined\") {\n\t\t\t\t\t\tgroupColumnIndexs[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.width > 1) {\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"hoz\",\n\t\t\t\t\t\t\tstart: titles[level].length,\n\t\t\t\t\t\t\tend: titles[level].length + column.width - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\ttitles[level].push(column.title);\n\n\t\t\t\t\tif (column.subGroups) {\n\t\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\t\tpadColumnTitles(fields.length - 1, level);\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"vert\",\n\t\t\t\t\t\t\tstart: fields.length - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction padColumnTitles() {\n\t\t\t\t\tvar max = 0;\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len > max) {\n\t\t\t\t\t\t\tmax = len;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len < max) {\n\t\t\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (config.columnGroups) {\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\trows.push(title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseSimpleTitles();\n\t\t\t\t}\n\n\t\t\t\tfunction generateMerges() {\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\tgroupRowIndexs.forEach(function (index) {\n\t\t\t\t\t\toutput.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });\n\t\t\t\t\t});\n\n\t\t\t\t\tgroupColumnIndexs.forEach(function (merges, level) {\n\t\t\t\t\t\tmerges.forEach(function (merge) {\n\t\t\t\t\t\t\tif (merge.type === \"hoz\") {\n\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (level != titles.length - 1) {\n\t\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\n\t\t\t\t//generate each row of the table\n\t\t\t\tfunction parseRows(data) {\n\t\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\t\trows.push(parseRow(row));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction parseRow(row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\t\trowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\" ? JSON.stringify(value) : value);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn rowData;\n\t\t\t\t}\n\n\t\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\t\tif (calcData) {\n\t\t\t\t\t\tif (pos) {\n\t\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\t\tcalcRowIndexs.push(rows.length);\n\t\t\t\t\t\t\trows.push(parseRow(calcData));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\t\tvar groupData = [];\n\n\t\t\t\t\tgroupData.push(group.key);\n\n\t\t\t\t\tgroupRowIndexs.push(rows.length);\n\n\t\t\t\t\trows.push(groupData);\n\n\t\t\t\t\tif (group.subGroups) {\n\t\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (config.rowGroups) {\n\t\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(data);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tworksheet = rowsToSheet();\n\n\t\t\t\treturn worksheet;\n\t\t\t}\n\n\t\t\tif (options.sheetOnly) {\n\t\t\t\tsetFileContents(generateSheet());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.sheets) {\n\t\t\t\tfor (var sheet in options.sheets) {\n\n\t\t\t\t\tif (options.sheets[sheet] === true) {\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\t\t\tthis.table.modules.comms.send(options.sheets[sheet], \"download\", \"intercept\", {\n\t\t\t\t\t\t\ttype: \"xlsx\",\n\t\t\t\t\t\t\toptions: { sheetOnly: true },\n\t\t\t\t\t\t\tintercept: function intercept(data) {\n\t\t\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tworkbook.SheetNames.push(sheetName);\n\t\t\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t\t\t}\n\n\t\t\t//convert workbook to binary array\n\t\t\tfunction s2ab(s) {\n\t\t\t\tvar buf = new ArrayBuffer(s.length);\n\t\t\t\tvar view = new Uint8Array(buf);\n\t\t\t\tfor (var i = 0; i != s.length; ++i) {\n\t\t\t\t\tview[i] = s.charCodeAt(i) & 0xFF;\n\t\t\t\t}return buf;\n\t\t\t}\n\n\t\t\toutput = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n\t\t\tsetFileContents(s2ab(output), \"application/octet-stream\");\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"download\", Download);\n\n\tvar Edit = function Edit(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t};\n\n\t//initialize column editor\n\tEdit.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {\n\t\t\teditor: false,\n\t\t\tblocked: false,\n\t\t\tcheck: column.definition.editable,\n\t\t\tparams: column.definition.editorParams || {}\n\t\t};\n\n\t\t//set column editor\n\t\tswitch (_typeof(column.definition.editor)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.editor === \"tick\") {\n\t\t\t\t\tcolumn.definition.editor = \"tickCross\";\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t}\n\n\t\t\t\tif (self.editors[column.definition.editor]) {\n\t\t\t\t\tconfig.editor = self.editors[column.definition.editor];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\n\t\t\t\tif (column.definition.editor === true) {\n\n\t\t\t\t\tif (typeof column.definition.formatter !== \"function\") {\n\n\t\t\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\t\t\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (self.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\tconfig.editor = self.editors[column.definition.formatter];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconfig.editor = self.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (config.editor) {\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t};\n\n\tEdit.prototype.getCurrentCell = function () {\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t};\n\n\tEdit.prototype.clearEditor = function () {\n\t\tvar cell = this.currentCell,\n\t\t cellEl;\n\n\t\tthis.invalidEdit = false;\n\n\t\tif (cell) {\n\t\t\tthis.currentCell = false;\n\n\t\t\tcellEl = cell.getElement();\n\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\twhile (cellEl.firstChild) {\n\t\t\t\tcellEl.removeChild(cellEl.firstChild);\n\t\t\t}cell.row.getElement().classList.remove(\"tabulator-row-editing\");\n\t\t}\n\t};\n\n\tEdit.prototype.cancelEdit = function () {\n\n\t\tif (this.currentCell) {\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\n\t\t\tthis.clearEditor();\n\t\t\tcell.setValueActual(cell.getValue());\n\n\t\t\tif (cell.column.cellEvents.cellEditCancelled) {\n\t\t\t\tcell.column.cellEvents.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEditCancelled.call(this.table, component);\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tEdit.prototype.bindEditor = function (cell) {\n\t\tvar self = this,\n\t\t element = cell.getElement();\n\n\t\telement.setAttribute(\"tabindex\", 0);\n\n\t\telement.addEventListener(\"click\", function (e) {\n\t\t\tif (!element.classList.contains(\"tabulator-editing\")) {\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\tself.mouseClick = true;\n\t\t});\n\n\t\telement.addEventListener(\"focus\", function (e) {\n\t\t\tif (!self.recursionBlock) {\n\t\t\t\tself.edit(cell, e, false);\n\t\t\t}\n\t\t});\n\t};\n\n\tEdit.prototype.focusCellNoEvent = function (cell) {\n\t\tthis.recursionBlock = true;\n\t\tif (this.table.browser !== \"ie\") {\n\t\t\tcell.getElement().focus();\n\t\t}\n\t\tthis.recursionBlock = false;\n\t};\n\n\tEdit.prototype.editCell = function (cell, forceEdit) {\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t};\n\n\tEdit.prototype.edit = function (cell, e, forceEdit) {\n\t\tvar self = this,\n\t\t allowEdit = true,\n\t\t rendered = function rendered() {},\n\t\t element = cell.getElement(),\n\t\t cellEditor,\n\t\t component,\n\t\t params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\tif (this.currentCell) {\n\t\t\tif (!this.invalidEdit) {\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tvar valid = true;\n\n\t\t\t\tif (cell.column.modules.validate && self.table.modExists(\"validate\")) {\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);\n\t\t\t\t}\n\n\t\t\t\tif (valid === true) {\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\n\t\t\t\t\tself.focusCellNoEvent(cell);\n\t\t\t\t\trendered();\n\t\t\t\t\tself.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\tfunction onRendered(callback) {\n\t\t\trendered = callback;\n\t\t}\n\n\t\tif (!cell.column.modules.edit.blocked) {\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tswitch (_typeof(cell.column.modules.edit.check)) {\n\t\t\t\tcase \"function\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (allowEdit || forceEdit) {\n\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tself.currentCell = cell;\n\n\t\t\t\tcomponent = cell.getComponent();\n\n\t\t\t\tif (this.mouseClick) {\n\t\t\t\t\tthis.mouseClick = false;\n\n\t\t\t\t\tif (cell.column.cellEvents.cellClick) {\n\t\t\t\t\t\tcell.column.cellEvents.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (cell.column.cellEvents.cellEditing) {\n\t\t\t\t\tcell.column.cellEvents.cellEditing.call(this.table, component);\n\t\t\t\t}\n\n\t\t\t\tself.table.options.cellEditing.call(this.table, component);\n\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif (cellEditor !== false) {\n\n\t\t\t\t\tif (cellEditor instanceof Node) {\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\n\t\t\t\t\t\twhile (element.firstChild) {\n\t\t\t\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t\t\t\t}element.appendChild(cellEditor);\n\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function (e) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//default data editors\n\tEdit.prototype.editors = {\n\n\t\t//input element\n\t\tinput: function input(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\t//create and style input\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//resizable text area element\n\t\ttextarea: function textarea(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellValue = cell.getValue(),\n\t\t\t value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\t\t\t count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\n\t\t\t input = document.createElement(\"textarea\"),\n\t\t\t scrollHeight = 0;\n\n\t\t\t//create and style input\n\t\t\tinput.style.display = \"block\";\n\t\t\tinput.style.padding = \"2px\";\n\t\t\tinput.style.height = \"100%\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.whiteSpace = \"pre-wrap\";\n\t\t\tinput.style.resize = \"none\";\n\n\t\t\tinput.value = value;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t\t}, 300);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\tinput.addEventListener(\"keyup\", function () {\n\n\t\t\t\tinput.style.height = \"\";\n\n\t\t\t\tvar heightNow = input.scrollHeight;\n\n\t\t\t\tinput.style.height = heightNow + \"px\";\n\n\t\t\t\tif (heightNow != scrollHeight) {\n\t\t\t\t\tscrollHeight = heightNow;\n\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\tnumber: function number(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"number\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tvar blurFunc = function blurFunc(e) {\n\t\t\t\tonChange();\n\t\t\t};\n\n\t\t\tonRendered(function () {\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\trange: function range(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"range\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tonChange();\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//select\n\t\tselect: function select(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t dataItems = [],\n\t\t\t displayItems = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tif (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === \"object\" && !editorParams.values) {\n\t\t\t\tconsole.warn(\"DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\n\t\t\t\teditorParams = { values: editorParams };\n\t\t\t}\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar dataList = [];\n\t\t\t\tvar displayList = [];\n\n\t\t\t\tfunction processComplexListItem(item) {\n\t\t\t\t\tvar item = {\n\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,\n\t\t\t\t\t\tvalue: item.value,\n\t\t\t\t\t\telement: false\n\t\t\t\t\t};\n\n\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tdataList.push(item);\n\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\n\t\t\t\tif (typeof inputValues == \"function\") {\n\t\t\t\t\tinputValues = inputValues(cell);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item;\n\n\t\t\t\t\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\") {\n\n\t\t\t\t\t\t\tif (value.options) {\n\t\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\t\tlabel: value.label,\n\t\t\t\t\t\t\t\t\tgroup: true,\n\t\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\t\t\t\tvalue.options.forEach(function (item) {\n\t\t\t\t\t\t\t\t\tprocessComplexListItem(item);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tprocessComplexListItem(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataItems = dataList;\n\t\t\t\tdisplayItems = displayList;\n\n\t\t\t\tfillList();\n\t\t\t}\n\n\t\t\tfunction fillList() {\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\n\t\t\t\t\t\tif (item.group) {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\n\t\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\t\tel.classList.add(\"active\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item) {\n\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\t\t\t\tinput.value = item.label === \" \" ? \"\" : item.label;\n\n\t\t\t\tif (item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\n\t\t\t\t\tif (editorParams.values === true) {\n\t\t\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.readOnly = this.currentCell != false;\n\n\t\t\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\n\t\t\tif (editorParams.values === true) {\n\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t} else {\n\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t}\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(dataItems[index - 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < dataItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tcancelItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tshowList();\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//autocomplete\n\t\tautocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t allItems = [],\n\t\t\t displayItems = [],\n\t\t\t values = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar itemList = [];\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (editorParams.searchFunc) {\n\t\t\t\t\titemList.forEach(function (item) {\n\t\t\t\t\t\titem.search = {\n\t\t\t\t\t\t\ttitle: item.title,\n\t\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tallItems = itemList;\n\t\t\t}\n\n\t\t\tfunction filterList(term, intialLoad) {\n\t\t\t\tvar matches = [],\n\t\t\t\t searchObjs = [],\n\t\t\t\t searchResults = [];\n\n\t\t\t\tif (editorParams.searchFunc) {\n\n\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\tsearchObjs.push(item.search);\n\t\t\t\t\t});\n\n\t\t\t\t\tsearchResults = editorParams.searchFunc(term, searchObjs);\n\n\t\t\t\t\tsearchResults.forEach(function (result) {\n\t\t\t\t\t\tvar match = allItems.find(function (item) {\n\t\t\t\t\t\t\treturn item.search === result;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tmatches.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (term === \"\") {\n\n\t\t\t\t\t\tif (editorParams.showListOnEmpty) {\n\t\t\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tallItems.forEach(function (item) {\n\n\t\t\t\t\t\t\tif (item.value !== null || typeof item.value !== \"undefined\") {\n\t\t\t\t\t\t\t\tif (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {\n\t\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdisplayItems = matches;\n\n\t\t\t\tfillList(intialLoad);\n\t\t\t}\n\n\t\t\tfunction fillList(intialLoad) {\n\t\t\t\tvar current = false;\n\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\tel.innerHTML = item.title;\n\n\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\n\t\t\t\t\t\tif (intialLoad && item.value == initialValue) {\n\t\t\t\t\t\t\tinput.value = item.title;\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\n\t\t\t\tif (!current) {\n\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item, showInputValue) {\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\n\t\t\t\tif (item && item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (currentItem) {\n\t\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\t\tinput.value = currentItem.title;\n\t\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (editorParams.freetext) {\n\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (editorParams.allowEmpty && input.value === \"\") {\n\t\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\t\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t\t}if (editorParams.values === true) {\n\t\t\t\t\t\tvalues = getUniqueColumnValues();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = editorParams.values || [];\n\t\t\t\t\t}\n\n\t\t\t\t\tparseItems(values, initialValue);\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"search\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < displayItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 36: //home\n\t\t\t\t\tcase 35:\n\t\t\t\t\t\t//end\n\t\t\t\t\t\t//prevent table navigation while using input element\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keyup\", function (e) {\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38: //up arrow\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39: //up arrow\n\t\t\t\t\tcase 40: //right arrow\n\t\t\t\t\tcase 13: //enter\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tfilterList(input.value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"search\", function (e) {\n\t\t\t\tfilterList(input.value);\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tchooseItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tvar value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\t\t\t\tshowList();\n\t\t\t\tinput.value = value;\n\t\t\t\tfilterList(value, true);\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//start rating\n\t\tstar: function star(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t element = cell.getElement(),\n\t\t\t value = cell.getValue(),\n\t\t\t maxStars = element.getElementsByTagName(\"svg\").length || 5,\n\t\t\t size = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\t\t\t stars = [],\n\t\t\t starsHolder = document.createElement(\"div\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\t\t\t//change star type\n\t\t\tfunction starChange(val) {\n\t\t\t\tstars.forEach(function (star, i) {\n\t\t\t\t\tif (i < val) {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#488CE9\" stroke=\"#014AAE\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#010155\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//build stars\n\t\t\tfunction buildStar(i) {\n\n\t\t\t\tvar starHolder = document.createElement(\"span\");\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\n\t\t\t\tstars.push(nextStar);\n\n\t\t\t\tstarHolder.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tstarChange(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tsuccess(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.appendChild(nextStar);\n\t\t\t\tstarsHolder.appendChild(starHolder);\n\t\t\t}\n\n\t\t\t//handle keyboard navigation value change\n\t\t\tfunction changeValue(val) {\n\t\t\t\tvalue = val;\n\t\t\t\tstarChange(val);\n\t\t\t}\n\n\t\t\t//style cell\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\t//style holding element\n\t\t\tstarsHolder.style.verticalAlign = \"middle\";\n\t\t\tstarsHolder.style.display = \"inline-block\";\n\t\t\tstarsHolder.style.padding = \"4px\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", size);\n\t\t\tstar.setAttribute(\"height\", size);\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\t//create correct number of stars\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tbuildStar(i);\n\t\t\t}\n\n\t\t\t//ensure value does not exceed number of stars\n\t\t\tvalue = Math.min(parseInt(value), maxStars);\n\n\t\t\t// set initial styling of stars\n\t\t\tstarChange(value);\n\n\t\t\tstarsHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tstarChange(0);\n\t\t\t});\n\n\t\t\tstarsHolder.addEventListener(\"click\", function (e) {\n\t\t\t\tsuccess(0);\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function (e) {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tchangeValue(value + 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tchangeValue(value - 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tsuccess(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn starsHolder;\n\t\t},\n\n\t\t//draggable progress bar\n\t\tprogress: function progress(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar element = cell.getElement(),\n\t\t\t max = typeof editorParams.max === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100 : editorParams.max,\n\t\t\t min = typeof editorParams.min === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0 : editorParams.min,\n\t\t\t percent = (max - min) / 100,\n\t\t\t value = cell.getValue() || 0,\n\t\t\t handle = document.createElement(\"div\"),\n\t\t\t bar = document.createElement(\"div\"),\n\t\t\t mouseDrag,\n\t\t\t mouseDragWidth;\n\n\t\t\t//set new value\n\t\t\tfunction updateValue() {\n\t\t\t\tvar calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;\n\t\t\t\tsuccess(calcVal);\n\t\t\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\t\t\telement.setAttribute(\"aria-label\", value);\n\t\t\t}\n\n\t\t\t//style handle\n\t\t\thandle.style.position = \"absolute\";\n\t\t\thandle.style.right = \"0\";\n\t\t\thandle.style.top = \"0\";\n\t\t\thandle.style.bottom = \"0\";\n\t\t\thandle.style.width = \"5px\";\n\t\t\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t\t\t//style bar\n\t\t\tbar.style.display = \"inline-block\";\n\t\t\tbar.style.position = \"relative\";\n\t\t\t// bar.style.top = \"8px\";\n\t\t\t// bar.style.bottom = \"8px\";\n\t\t\t// bar.style.left = \"4px\";\n\t\t\t// bar.style.marginRight = \"4px\";\n\t\t\tbar.style.height = \"100%\";\n\t\t\tbar.style.backgroundColor = \"#488CE9\";\n\t\t\tbar.style.maxWidth = \"100%\";\n\t\t\tbar.style.minWidth = \"0%\";\n\n\t\t\t//style cell\n\t\t\telement.style.padding = \"4px 4px\";\n\n\t\t\t//make sure value is in range\n\t\t\tvalue = Math.min(parseFloat(value), max);\n\t\t\tvalue = Math.max(parseFloat(value), min);\n\n\t\t\t//workout percentage\n\t\t\tvalue = Math.round((value - min) / percent);\n\t\t\t// bar.style.right = value + \"%\";\n\t\t\tbar.style.width = value + \"%\";\n\n\t\t\telement.setAttribute(\"aria-valuemin\", min);\n\t\t\telement.setAttribute(\"aria-valuemax\", max);\n\n\t\t\tbar.appendChild(handle);\n\n\t\t\thandle.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tmouseDrag = e.screenX;\n\t\t\t\tmouseDragWidth = bar.offsetWidth;\n\t\t\t});\n\n\t\t\thandle.addEventListener(\"mouseover\", function () {\n\t\t\t\thandle.style.cursor = \"ew-resize\";\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\tbar.style.width = mouseDragWidth + e.screenX - mouseDrag + \"px\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tmouseDrag = false;\n\t\t\t\t\tmouseDragWidth = false;\n\n\t\t\t\t\tupdateValue();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth + element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth - element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tupdateValue();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function () {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\treturn bar;\n\t\t},\n\n\t\t//checkbox\n\t\ttickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t tristate = editorParams.tristate,\n\t\t\t indetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\t\t\t indetermState = false;\n\n\t\t\tinput.setAttribute(\"type\", \"checkbox\");\n\t\t\tinput.style.marginTop = \"5px\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = value;\n\n\t\t\tif (tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")) {\n\t\t\t\tindetermState = true;\n\t\t\t\tinput.indeterminate = true;\n\t\t\t}\n\n\t\t\tif (this.table.browser != \"firefox\") {\n\t\t\t\t//prevent blur issue on mac firefox\n\t\t\t\tonRendered(function () {\n\t\t\t\t\tinput.focus();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\n\n\t\t\tfunction setValue(blur) {\n\t\t\t\tif (tristate) {\n\t\t\t\t\tif (!blur) {\n\t\t\t\t\t\tif (input.checked && !indetermState) {\n\t\t\t\t\t\t\tinput.checked = false;\n\t\t\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\t\t\tindetermState = true;\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindetermState = false;\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (indetermState) {\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn input.checked;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\t\t\t\tsuccess(setValue());\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tsuccess(setValue(true));\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 13) {\n\t\t\t\t\tsuccess(setValue());\n\t\t\t\t}\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"edit\", Edit);\n\n\tvar Filter = function Filter(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterElements = []; //hold header filter elements for manipulation\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t};\n\n\t//initialize column header filter\n\tFilter.prototype.initializeColumn = function (column, value) {\n\t\tvar self = this,\n\t\t field = column.getField(),\n\t\t prevSuccess,\n\t\t params;\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\t\t\tvar filterType = column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\" || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\t type = \"\",\n\t\t\t filterFunc;\n\n\t\t\tif (typeof prevSuccess === \"undefined\" || prevSuccess !== value) {\n\n\t\t\t\tprevSuccess = value;\n\n\t\t\t\tif (!column.modules.filter.emptyFunc(value)) {\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch (_typeof(column.definition.headerFilterFunc)) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif (self.filters[column.definition.headerFilterFunc]) {\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!filterFunc) {\n\t\t\t\t\t\tswitch (filterType) {\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif (typeof colVal !== 'undefined' && colVal !== null) {\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = { value: value, func: filterFunc, type: type };\n\t\t\t\t} else {\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tself.changed = true;\n\n\t\t\t\tself.table.rowManager.filterRefresh();\n\t\t\t}\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess: success,\n\t\t\tattrType: false,\n\t\t\ttagType: false,\n\t\t\temptyFunc: false\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t};\n\n\tFilter.prototype.generateHeaderFilterElement = function (column, initialValue) {\n\t\tvar _this35 = this;\n\n\t\tvar self = this,\n\t\t success = column.modules.filter.success,\n\t\t field = column.getField(),\n\t\t filterElement,\n\t\t editor,\n\t\t editorElement,\n\t\t cellWrapper,\n\t\t typingTimer,\n\t\t searchTrigger,\n\t\t params;\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {}\n\n\t\tif (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {\n\t\t\tvar oldFilterElement = column.modules.filter.headerElement.parentNode;\n\t\t\tvar oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);\n\t\t\tif (oldFilterElementIndex >= 0) {\n\t\t\t\tself.headerFilterElements.splice(oldFilterElementIndex, 1);\n\t\t\t}\n\n\t\t\tvar oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);\n\t\t\tif (oldColumnIndex >= 0) {\n\t\t\t\tself.headerFilterColumns.splice(oldColumnIndex, 1);\n\t\t\t}\n\n\t\t\tcolumn.contentElement.removeChild(oldFilterElement);\n\t\t}\n\n\t\tif (field) {\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {\n\t\t\t\treturn !value && value !== \"0\";\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch (_typeof(column.definition.headerFilter)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (self.table.modules.edit.editors[column.definition.headerFilter]) {\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif ((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif (column.modules.edit && column.modules.edit.editor) {\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif ((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (editor) {\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);\n\n\t\t\t\tif (!editorElement) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!(editorElement instanceof Node)) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tif (field) {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|columns|\" + column.definition.field, function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.table.modules.localize.getText(\"headerFilters|default\"));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|default\", function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof self.column.definition.headerFilterPlaceholder !== \"undefined\" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", function (e) {\n\t\t\t\t\tvar left = _this35.table.columnManager.element.scrollLeft;\n\n\t\t\t\t\tif (left !== _this35.table.rowManager.element.scrollLeft) {\n\t\t\t\t\t\t_this35.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\t_this35.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function searchTrigger(e) {\n\t\t\t\t\tif (typingTimer) {\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function () {\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t}, 300);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\";\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif (column.definition.headerFilterLiveFilter !== false) {\n\n\t\t\t\t\tif (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"number\") {\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function (e) {\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\") {\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\n\t\t\t\t\tif (column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\") {\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tself.headerFilterElements.push(editorElement);\n\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t};\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.hideHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = 'none';\n\t\t});\n\t};\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.showHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = '';\n\t\t});\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterFocus = function (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterValue = function (column, value) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, value);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\tFilter.prototype.reloadHeaderFilter = function (column) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\t//check if the filters has changed since last use\n\tFilter.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//set standard filters\n\tFilter.prototype.setFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tself.filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tself.addFilter(field);\n\t};\n\n\t//add filter to array\n\tFilter.prototype.addFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tself.filterList.push(filter);\n\n\t\t\t\tself.changed = true;\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\tFilter.prototype.findFilter = function (filter) {\n\t\tvar self = this,\n\t\t column;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif (typeof filter.field == \"function\") {\n\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\treturn filter.field(data, filter.type || {}); // pass params to custom filter function\n\t\t\t};\n\t\t} else {\n\n\t\t\tif (self.filters[filter.type]) {\n\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, column.getFieldValue(data));\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, data[filter.field]);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t};\n\n\tFilter.prototype.findSubFilters = function (filters) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfilters.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getFilters = function (all, ajax) {\n\t\tvar output = [];\n\n\t\tif (all) {\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif (ajax) {\n\t\t\toutput.forEach(function (item) {\n\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t};\n\n\t//filter to Object\n\tFilter.prototype.filtersToArray = function (filterList, ajax) {\n\t\tvar _this36 = this;\n\n\t\tvar output = [];\n\n\t\tfilterList.forEach(function (filter) {\n\t\t\tvar item;\n\n\t\t\tif (Array.isArray(filter)) {\n\t\t\t\toutput.push(_this36.filtersToArray(filter, ajax));\n\t\t\t} else {\n\t\t\t\titem = { field: filter.field, type: filter.type, value: filter.value };\n\n\t\t\t\tif (ajax) {\n\t\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getHeaderFilters = function () {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfor (var key in this.headerFilters) {\n\t\t\toutput.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//remove filter from array\n\tFilter.prototype.removeFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tvar index = -1;\n\n\t\t\tif (_typeof(filter.field) == \"object\") {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (index > -1) {\n\t\t\t\tself.filterList.splice(index, 1);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear filters\n\tFilter.prototype.clearFilter = function (all) {\n\t\tthis.filterList = [];\n\n\t\tif (all) {\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.changed = true;\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear header filters\n\tFilter.prototype.clearHeaderFilter = function () {\n\t\tvar self = this;\n\n\t\tthis.headerFilters = {};\n\n\t\tthis.headerFilterColumns.forEach(function (column) {\n\t\t\tcolumn.modules.filter.value = null;\n\t\t\tself.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.changed = true;\n\t};\n\n\t//search data and return matching rows\n\tFilter.prototype.search = function (searchType, field, type, value) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach(function (filter) {\n\t\t\t\tif (!self.filterRecurse(filter, row.getData())) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\t\t});\n\n\t\treturn activeRows;\n\t};\n\n\t//filter row array\n\tFilter.prototype.filter = function (rowList, filters) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t activeRowComponents = [];\n\n\t\tif (self.table.options.dataFiltering) {\n\t\t\tself.table.options.dataFiltering.call(self.table, self.getFilters());\n\t\t}\n\n\t\tif (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {\n\n\t\t\trowList.forEach(function (row) {\n\t\t\t\tif (self.filterRow(row)) {\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif (self.table.options.dataFiltered) {\n\n\t\t\tactiveRows.forEach(function (row) {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tself.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t};\n\n\t//filter individual row\n\tFilter.prototype.filterRow = function (row, filters) {\n\t\tvar self = this,\n\t\t match = true,\n\t\t data = row.getData();\n\n\t\tself.filterList.forEach(function (filter) {\n\t\t\tif (!self.filterRecurse(filter, data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\t\tfor (var field in self.headerFilters) {\n\t\t\tif (!self.headerFilters[field].func(data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tFilter.prototype.filterRecurse = function (filter, data) {\n\t\tvar self = this,\n\t\t match = false;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\tfilter.forEach(function (subFilter) {\n\t\t\t\tif (self.filterRecurse(subFilter, data)) {\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t};\n\n\t//list of available filters\n\tFilter.prototype.filters = {\n\n\t\t//equal to\n\t\t\"=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal == filterVal ? true : false;\n\t\t},\n\n\t\t//less than\n\t\t\"<\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal < filterVal ? true : false;\n\t\t},\n\n\t\t//less than or equal to\n\t\t\"<=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal <= filterVal ? true : false;\n\t\t},\n\n\t\t//greater than\n\t\t\">\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal > filterVal ? true : false;\n\t\t},\n\n\t\t//greater than or equal to\n\t\t\">=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal >= filterVal ? true : false;\n\t\t},\n\n\t\t//not equal to\n\t\t\"!=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal != filterVal ? true : false;\n\t\t},\n\n\t\t\"regex\": function regex(filterVal, rowVal, rowData, filterParams) {\n\n\t\t\tif (typeof filterVal == \"string\") {\n\t\t\t\tfilterVal = new RegExp(filterVal);\n\t\t\t}\n\n\t\t\treturn filterVal.test(rowVal);\n\t\t},\n\n\t\t//contains the string\n\t\t\"like\": function like(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\t\treturn rowVal === filterVal ? true : false;\n\t\t\t} else {\n\t\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//in array\n\t\t\"in\": function _in(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (Array.isArray(filterVal)) {\n\t\t\t\treturn filterVal.indexOf(rowVal) > -1;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"filter\", Filter);\n\tvar Format = function Format(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t};\n\n\t//initialize column formatter\n\tFormat.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = { params: column.definition.formatterParams || {} };\n\n\t\t//set column formatter\n\t\tswitch (_typeof(column.definition.formatter)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\n\t\t\t\t\tif (typeof config.params.crossElement == \"undefined\") {\n\t\t\t\t\t\tconfig.params.crossElement = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false\");\n\t\t\t\t}\n\n\t\t\t\tif (self.formatters[column.definition.formatter]) {\n\t\t\t\t\tconfig.formatter = self.formatters[column.definition.formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", column.definition.formatter);\n\t\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = column.definition.formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.format = config;\n\t};\n\n\tFormat.prototype.cellRendered = function (cell) {\n\t\tif (cell.column.modules.format.renderedCallback) {\n\t\t\tcell.column.modules.format.renderedCallback();\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tFormat.prototype.formatValue = function (cell) {\n\t\tvar component = cell.getComponent(),\n\t\t params = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\n\t\tfunction onRendered(callback) {\n\t\t\tcell.column.modules.format.renderedCallback = callback;\n\t\t}\n\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t};\n\n\tFormat.prototype.sanitizeHTML = function (value) {\n\t\tif (value) {\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tFormat.prototype.emptyToSpace = function (value) {\n\t\treturn value === null || typeof value === \"undefined\" ? \" \" : value;\n\t};\n\n\t//get formatter for cell\n\tFormat.prototype.getFormatter = function (formatter) {\n\t\tvar formatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.formatters[formatter]) {\n\t\t\t\t\tformatter = this.formatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tformatter = formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn formatter;\n\t};\n\n\t//default data formatters\n\tFormat.prototype.formatters = {\n\t\t//plain text value\n\t\tplaintext: function plaintext(cell, formatterParams, onRendered) {\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//html text value\n\t\thtml: function html(cell, formatterParams, onRendered) {\n\t\t\treturn cell.getValue();\n\t\t},\n\n\t\t//multiline text area\n\t\ttextarea: function textarea(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//currency formatting\n\t\tmoney: function money(cell, formatterParams, onRendered) {\n\t\t\tvar floatVal = parseFloat(cell.getValue()),\n\t\t\t number,\n\t\t\t integer,\n\t\t\t decimal,\n\t\t\t rgx;\n\n\t\t\tvar decimalSym = formatterParams.decimal || \".\";\n\t\t\tvar thousandSym = formatterParams.thousand || \",\";\n\t\t\tvar symbol = formatterParams.symbol || \"\";\n\t\t\tvar after = !!formatterParams.symbolAfter;\n\t\t\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\t\t\tif (isNaN(floatVal)) {\n\t\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t\t}\n\n\t\t\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\t\t\tnumber = String(number).split(\".\");\n\n\t\t\tinteger = number[0];\n\t\t\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\t\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\t\twhile (rgx.test(integer)) {\n\t\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t\t}\n\n\t\t\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\n\t\t},\n\n\t\t//clickable anchor tag\n\t\tlink: function link(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t urlPrefix = formatterParams.urlPrefix || \"\",\n\t\t\t label = this.emptyToSpace(value),\n\t\t\t el = document.createElement(\"a\"),\n\t\t\t data;\n\n\t\t\tif (formatterParams.labelField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tlabel = data[formatterParams.labelField];\n\t\t\t}\n\n\t\t\tif (formatterParams.label) {\n\t\t\t\tswitch (_typeof(formatterParams.label)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlabel = formatterParams.label;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (formatterParams.urlField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tvalue = data[formatterParams.urlField];\n\t\t\t}\n\n\t\t\tif (formatterParams.url) {\n\t\t\t\tswitch (_typeof(formatterParams.url)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\t\tif (formatterParams.target) {\n\t\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t\t}\n\n\t\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//image element\n\t\timage: function image(cell, formatterParams, onRendered) {\n\t\t\tvar el = document.createElement(\"img\");\n\t\t\tel.setAttribute(\"src\", cell.getValue());\n\n\t\t\tswitch (_typeof(formatterParams.height)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.height = formatterParams.height;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch (_typeof(formatterParams.width)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.width = formatterParams.width;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"load\", function () {\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t});\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//tick or cross\n\t\ttickCross: function tickCross(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t empty = formatterParams.allowEmpty,\n\t\t\t truthy = formatterParams.allowTruthy,\n\t\t\t tick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>',\n\t\t\t cross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\n\t\t\tif (truthy && value || value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\") {\n\t\t\t\telement.setAttribute(\"aria-checked\", true);\n\t\t\t\treturn tick || \"\";\n\t\t\t} else {\n\t\t\t\tif (empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")) {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\t\t\treturn \"\";\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\t\t\treturn cross || \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetime: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar outputFormat = formatterParams.outputFormat || \"DD/MM/YYYY hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\treturn newDatetime.format(outputFormat);\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetimediff: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\t\t\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : undefined;\n\t\t\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\t\t\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : moment();\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\tif (humanize) {\n\t\t\t\t\treturn moment.duration(newDatetime.diff(date)).humanize(suffix);\n\t\t\t\t} else {\n\t\t\t\t\treturn newDatetime.diff(date, unit) + (suffix ? \" \" + suffix : \"\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//select\n\t\tlookup: function lookup(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue();\n\n\t\t\tif (typeof formatterParams[value] === \"undefined\") {\n\t\t\t\tconsole.warn('Missing display value for ' + value);\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn formatterParams[value];\n\t\t},\n\n\t\t//star rating\n\t\tstar: function star(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\t\t\t stars = document.createElement(\"span\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\t\t\t starActive = '<polygon fill=\"#FFEA00\" stroke=\"#C1AB60\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>',\n\t\t\t starInactive = '<polygon fill=\"#D2D2D2\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\n\t\t\t//style stars holder\n\t\t\tstars.style.verticalAlign = \"middle\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", \"14\");\n\t\t\tstar.setAttribute(\"height\", \"14\");\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\tvalue = parseInt(value) < maxStars ? parseInt(value) : maxStars;\n\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\t\t\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\t\t\tstars.appendChild(nextStar);\n\t\t\t}\n\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\telement.setAttribute(\"aria-label\", value);\n\n\t\t\treturn stars;\n\t\t},\n\n\t\ttraffic: function traffic(cell, formatterParams, onRendered) {\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t el = document.createElement(\"span\"),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t colors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\t\t\t color = \"#666666\",\n\t\t\t percent,\n\t\t\t percentValue;\n\n\t\t\tif (isNaN(value) || typeof cell.getValue() === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-traffic-light\");\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set color\n\t\t\tswitch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = colors;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = colors(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(colors)) {\n\t\t\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = colors[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.style.backgroundColor = color;\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//progress bar\n\t\tprogress: function progress(cell, formatterParams, onRendered) {\n\t\t\t//progress bar\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t element = cell.getElement(),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\t\t\t percent,\n\t\t\t percentValue,\n\t\t\t color,\n\t\t\t legend,\n\t\t\t legendColor,\n\t\t\t top,\n\t\t\t left,\n\t\t\t right,\n\t\t\t bottom;\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set bar color\n\t\t\tswitch (_typeof(formatterParams.color)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = formatterParams.color;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = formatterParams.color(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.color)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.color.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tcolor = \"#2DC214\";\n\t\t\t}\n\n\t\t\t//generate legend\n\t\t\tswitch (_typeof(formatterParams.legend)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegend = formatterParams.legend;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegend = formatterParams.legend(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tlegend = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegend = false;\n\t\t\t}\n\n\t\t\t//set legend color\n\t\t\tswitch (_typeof(formatterParams.legendColor)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.legendColor)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.legendColor.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegendColor = \"#000\";\n\t\t\t}\n\n\t\t\telement.style.minWidth = \"30px\";\n\t\t\telement.style.position = \"relative\";\n\n\t\t\telement.setAttribute(\"aria-label\", percentValue);\n\n\t\t\treturn \"<div style='position:realtive; height:100%;' data-max='\" + max + \"' data-min='\" + min + \"'><div style='position:relative; height:100%; width:calc(\" + percentValue + \"%); background-color:\" + color + \"; display:inline-block;'></div></div>\" + (legend ? \"<div style='position:absolute; top:4px; left:0; text-align:\" + legendAlign + \"; width:100%; color:\" + legendColor + \";'>\" + legend + \"</div>\" : \"\");\n\t\t},\n\n\t\t//background color\n\t\tcolor: function color(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\t\t\treturn \"\";\n\t\t},\n\n\t\t//tick icon\n\t\tbuttonTick: function buttonTick(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>';\n\t\t},\n\n\t\t//cross icon\n\t\tbuttonCross: function buttonCross(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\t\t},\n\n\t\t//current row number\n\t\trownum: function rownum(cell, formatterParams, onRendered) {\n\t\t\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\n\t\t},\n\n\t\t//row handle\n\t\thandle: function handle(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\t\t\treturn \"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>\";\n\t\t},\n\n\t\tresponsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {\n\t\t\tvar self = this,\n\t\t\t open = false,\n\t\t\t el = document.createElement(\"div\");\n\n\t\t\tfunction toggleList(isOpen) {\n\t\t\t\tvar collapse = cell.getRow().getElement().getElementsByClassName(\"tabulator-responsive-collapse\")[0];\n\n\t\t\t\topen = isOpen;\n\n\t\t\t\tif (open) {\n\t\t\t\t\tel.classList.add(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = '';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\t\tel.innerHTML = \"<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>\";\n\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\t\t\tif (self.table.options.responsiveLayoutCollapseStartOpen) {\n\t\t\t\topen = true;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\ttoggleList(!open);\n\t\t\t});\n\n\t\t\ttoggleList(open);\n\n\t\t\treturn el;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"format\", Format);\n\n\tvar FrozenColumns = function FrozenColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightPadding = 0;\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.scrollEndTimer = false;\n\t};\n\n\t//reset initial state\n\tFrozenColumns.prototype.reset = function () {\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.active = false;\n\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\n\t};\n\n\t//initialize specific column\n\tFrozenColumns.prototype.initializeColumn = function (column) {\n\t\tvar config = { margin: 0, edge: false };\n\n\t\tif (column.definition.frozen) {\n\n\t\t\tif (!column.parent.isGroup) {\n\n\t\t\t\tif (!column.isGroup) {\n\t\t\t\t\tconfig.position = this.initializationMode;\n\n\t\t\t\t\tif (this.initializationMode == \"left\") {\n\t\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.active = true;\n\n\t\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Frozen Column Error - Column Groups cannot be frozen\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Frozen Column Error - Grouped columns cannot be frozen\");\n\t\t\t}\n\t\t} else {\n\t\t\tthis.initializationMode = \"right\";\n\t\t}\n\t};\n\n\t//quick layout to smooth horizontal scrolling\n\tFrozenColumns.prototype.scrollHorizontal = function () {\n\t\tvar _this37 = this;\n\n\t\tvar rows;\n\n\t\tif (this.active) {\n\t\t\tclearTimeout(this.scrollEndTimer);\n\n\t\t\t//layout all rows after scroll is complete\n\t\t\tthis.scrollEndTimer = setTimeout(function () {\n\t\t\t\t_this37.layout();\n\t\t\t}, 100);\n\n\t\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\t\tthis.calcMargins();\n\n\t\t\tthis.layoutColumnPosition();\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\t_this37.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\t//calculate margins for rows\n\tFrozenColumns.prototype.calcMargins = function () {\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\n\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\n\n\t\t//calculate right frozen columns\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\n\t};\n\n\t//layout calculation rows\n\tFrozenColumns.prototype.layoutCalcRows = function () {\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\t\t\tif (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\tif (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t};\n\n\t//calculate column positions and layout headers\n\tFrozenColumns.prototype.layoutColumnPosition = function (allCells) {\n\t\tvar _this38 = this;\n\n\t\tthis.leftColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38._calcSpace(_this38.leftColumns, i) + _this38.table.columnManager.scrollLeft + \"px\";\n\n\t\t\tif (i == _this38.leftColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38.rightPadding - _this38._calcSpace(_this38.rightColumns, i + 1) + \"px\";\n\n\t\t\tif (i == _this38.rightColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//layout columns appropropriatly\n\tFrozenColumns.prototype.layout = function () {\n\t\tvar self = this,\n\t\t rightMargin = 0;\n\n\t\tif (self.active) {\n\n\t\t\t//calculate row padding\n\t\t\tthis.calcMargins();\n\n\t\t\t// self.table.rowManager.activeRows.forEach(function(row){\n\t\t\t// \tself.layoutRow(row);\n\t\t\t// });\n\n\t\t\t// if(self.table.options.dataTree){\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\tself.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// }\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition(true);\n\n\t\t\t// if(tableHolder.scrollHeight > tableHolder.clientHeight){\n\t\t\t// \trightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;\n\t\t\t// }\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\tFrozenColumns.prototype.layoutRow = function (row) {\n\t\tvar _this39 = this;\n\n\t\tvar rowEl = row.getElement();\n\n\t\trowEl.style.paddingLeft = this.leftMargin;\n\t\t// rowEl.style.paddingRight = this.rightMargin + \"px\";\n\n\t\tthis.leftColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\t};\n\n\tFrozenColumns.prototype.layoutElement = function (element, column) {\n\n\t\tif (column.modules.frozen) {\n\t\t\telement.style.position = \"absolute\";\n\t\t\telement.style.left = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\n\t\t\tif (column.modules.frozen.edge) {\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t};\n\n\tFrozenColumns.prototype._calcSpace = function (columns, index) {\n\t\tvar width = 0;\n\n\t\tfor (var i = 0; i < index; i++) {\n\t\t\tif (columns[i].visible) {\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenColumns\", FrozenColumns);\n\tvar FrozenRows = function FrozenRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\tFrozenRows.prototype.initialize = function () {\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t};\n\n\tFrozenRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tFrozenRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tFrozenRows.prototype.isFrozen = function () {\n\t\treturn !!this.rows.length;\n\t};\n\n\t//filter frozen rows out of display data\n\tFrozenRows.prototype.getRows = function (rows) {\n\t\tvar self = this,\n\t\t frozen = [],\n\t\t output = rows.slice(0);\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tFrozenRows.prototype.freezeRow = function (row) {\n\t\tif (!row.modules.frozen) {\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tthis.styleRows();\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.unfreezeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif (row.modules.frozen) {\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tvar rowEl = row.getElement();\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.splice(index, 1);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tif (this.rows.length) {\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.styleRows = function (row) {\n\t\tvar self = this;\n\n\t\tthis.rows.forEach(function (row, i) {\n\t\t\tself.table.rowManager.styleRow(row, i);\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenRows\", FrozenRows);\n\n\t//public group object\n\tvar GroupComponent = function GroupComponent(group) {\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\t};\n\n\tGroupComponent.prototype.getKey = function () {\n\t\treturn this._group.key;\n\t};\n\n\tGroupComponent.prototype.getElement = function () {\n\t\treturn this._group.element;\n\t};\n\n\tGroupComponent.prototype.getRows = function () {\n\t\treturn this._group.getRows(true);\n\t};\n\n\tGroupComponent.prototype.getSubGroups = function () {\n\t\treturn this._group.getSubGroups(true);\n\t};\n\n\tGroupComponent.prototype.getParentGroup = function () {\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t};\n\n\tGroupComponent.prototype.getVisibility = function () {\n\t\treturn this._group.visible;\n\t};\n\n\tGroupComponent.prototype.show = function () {\n\t\tthis._group.show();\n\t};\n\n\tGroupComponent.prototype.hide = function () {\n\t\tthis._group.hide();\n\t};\n\n\tGroupComponent.prototype.toggle = function () {\n\t\tthis._group.toggleVisibility();\n\t};\n\n\tGroupComponent.prototype._getSelf = function () {\n\t\treturn this._group;\n\t};\n\n\tGroupComponent.prototype.getTable = function () {\n\t\treturn this._group.groupManager.table;\n\t};\n\n\t//////////////////////////////////////////////////\n\t//////////////// Group Functions /////////////////\n\t//////////////////////////////////////////////////\n\n\tvar Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {\n\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < groupManager.groupIDLookups.length - 1;\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\n\t\tthis.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0];\n\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\n\t\tthis.createValueGroups();\n\t};\n\n\tGroup.prototype.wipe = function () {\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element = false;\n\t\t\tthis.arrowElement = false;\n\t\t\tthis.elementContents = false;\n\t\t}\n\t};\n\n\tGroup.prototype.createElements = function () {\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-arrow\");\n\n\t\t//setup movable rows\n\t\tif (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")) {\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t};\n\n\tGroup.prototype.createValueGroups = function () {\n\t\tvar _this40 = this;\n\n\t\tvar level = this.level + 1;\n\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\tthis.groupManager.allowedValues[level].forEach(function (value) {\n\t\t\t\t_this40._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype.addBindings = function () {\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap,\n\t\t toggleElement;\n\n\t\t//handle group click events\n\t\tif (self.groupManager.table.options.groupClick) {\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblClick) {\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupContext) {\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tif (tap) {\n\t\t\t\t\tself.groupManager.table.options.groupTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.groupManager.table.options.groupDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\t\t\t\t\tclearTimeout(tapHold);\n\t\t\t\t\ttapHold = null;\n\t\t\t\t\ttap = false;\n\t\t\t\t\tself.groupManager.table.options.groupTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupToggleElement) {\n\t\t\ttoggleElement = self.groupManager.table.options.groupToggleElement == \"arrow\" ? self.arrowElement : self.element;\n\n\t\t\ttoggleElement.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tself.toggleVisibility();\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype._createGroup = function (groupID, level) {\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroup.prototype._addRowToGroup = function (row) {\n\n\t\tvar level = this.level + 1;\n\n\t\tif (this.hasSubGroups) {\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\t groupKey = level + \"_\" + groupID;\n\n\t\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\t\tif (this.groups[groupKey]) {\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.groups[groupKey]) {\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype._addRow = function (row) {\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t};\n\n\tGroup.prototype.insertRow = function (row, to, after) {\n\t\tvar data = this.conformRowData({});\n\n\t\trow.updateData(data);\n\n\t\tvar toIndex = this.rows.indexOf(to);\n\n\t\tif (toIndex > -1) {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.splice(toIndex + 1, 0, row);\n\t\t\t} else {\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t} else {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.push(row);\n\t\t\t} else {\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\n\t\trow.modules.group = this;\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\n\t\tthis.groupManager.updateGroupRows(true);\n\t};\n\n\tGroup.prototype.scrollHeader = function (left) {\n\t\tthis.arrowElement.style.marginLeft = left;\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\tchild.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroup.prototype.getRowIndex = function (row) {};\n\n\t//update row data to match grouping contraints\n\tGroup.prototype.conformRowData = function (data) {\n\t\tif (this.field) {\n\t\t\tdata[this.field] = this.key;\n\t\t} else {\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tGroup.prototype.removeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\n\t\tif (index > -1) {\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\n\t\tif (!this.groupManager.table.options.groupValues && !this.rows.length) {\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t} else {\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\n\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t} else {\n\n\t\t\tif (el.parentNode) {\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\n\t\t\tthis.generateGroupHeaderContents();\n\n\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (!this.groupList.length) {\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t} else {\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.getHeadersAndRows = function (noCalc) {\n\t\tvar output = [];\n\n\t\toutput.push(this);\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\n\t\t\t\toutput = output.concat(this.rows);\n\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\") {\n\n\t\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getData = function (visible, transform) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tthis._visSet();\n\n\t\tif (!visible || visible && this.visible) {\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t// Group.prototype.getRows = function(){\n\t// \tthis._visSet();\n\n\t// \treturn this.visible ? this.rows : [];\n\t// };\n\n\tGroup.prototype.getRowCount = function () {\n\t\tvar count = 0;\n\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t} else {\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t};\n\n\tGroup.prototype.toggleVisibility = function () {\n\t\tif (this.visible) {\n\t\t\tthis.hide();\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tGroup.prototype.hide = function () {\n\t\tthis.visible = false;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);\n\t};\n\n\tGroup.prototype.show = function () {\n\t\tvar self = this;\n\n\t\tself.visible = true;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\n\t\t\tvar prev = self.getElement();\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);\n\t};\n\n\tGroup.prototype._visSet = function () {\n\t\tvar data = [];\n\n\t\tif (typeof this.visible == \"function\") {\n\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t};\n\n\tGroup.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\t\tif (result) {\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.rows.find(function (item) {\n\t\t\t\treturn item === row;\n\t\t\t})) {\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tGroup.prototype.getSubGroups = function (component) {\n\t\tvar output = [];\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getRows = function (compoment) {\n\t\tvar output = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\toutput.push(compoment ? row.getComponent() : row);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.generateGroupHeaderContents = function () {\n\t\tvar data = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}if (typeof this.elementContents === \"string\") {\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t} else {\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t};\n\n\t////////////// Standard Row Functions //////////////\n\n\tGroup.prototype.getElement = function () {\n\t\tthis.addBindingsd = false;\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t} else {\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\n\t\tfor (var i = 0; i < this.element.childNodes.length; ++i) {\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\t// this.addBindings();\n\n\t\treturn this.element;\n\t};\n\n\tGroup.prototype.detachElement = function () {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\t//normalize the height of elements in the row\n\tGroup.prototype.normalizeHeight = function () {\n\t\tthis.setHeight(this.element.clientHeight);\n\t};\n\n\tGroup.prototype.initialize = function (force) {\n\t\tif (!this.initialized || force) {\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t};\n\n\tGroup.prototype.reinitialize = function () {\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\n\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\tGroup.prototype.setHeight = function (height) {\n\t\tif (this.height != height) {\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\tGroup.prototype.getHeight = function () {\n\t\treturn this.outerHeight;\n\t};\n\n\tGroup.prototype.getGroup = function () {\n\t\treturn this;\n\t};\n\n\tGroup.prototype.reinitializeHeight = function () {};\n\tGroup.prototype.calcHeight = function () {};\n\tGroup.prototype.setCellHeight = function () {};\n\tGroup.prototype.clearCellHeight = function () {};\n\n\t//////////////// Object Generation /////////////////\n\tGroup.prototype.getComponent = function () {\n\t\treturn new GroupComponent(this);\n\t};\n\n\t//////////////////////////////////////////////////\n\t////////////// Group Row Extension ///////////////\n\t//////////////////////////////////////////////////\n\n\tvar GroupRows = function GroupRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\t\tthis.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\t//initialize group configuration\n\tGroupRows.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t groupBy = self.table.options.groupBy,\n\t\t startOpen = self.table.options.groupStartOpen,\n\t\t groupHeader = self.table.options.groupHeader;\n\n\t\tthis.allowedValues = self.table.options.groupValues;\n\n\t\tself.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\n\t\tself.table.modules.localize.bind(\"groups|item\", function (langValue, lang) {\n\t\t\tself.headerGenerator[0] = function (value, count, data) {\n\t\t\t\t//header layout function\n\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"<span>(\" + count + \" \" + (count === 1 ? langValue : lang.groups.items) + \")</span>\";\n\t\t\t};\n\t\t});\n\n\t\tthis.groupIDLookups = [];\n\n\t\tif (Array.isArray(groupBy) || groupBy) {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\") {\n\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\") {\n\n\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\n\t\t\t\tcols.forEach(function (col) {\n\t\t\t\t\tif (col.definition.topCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (col.definition.bottomCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!Array.isArray(groupBy)) {\n\t\t\tgroupBy = [groupBy];\n\t\t}\n\n\t\tgroupBy.forEach(function (group, i) {\n\t\t\tvar lookupFunc, column;\n\n\t\t\tif (typeof group == \"function\") {\n\t\t\t\tlookupFunc = group;\n\t\t\t} else {\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(group);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.groupIDLookups.push({\n\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\tfunc: lookupFunc,\n\t\t\t\tvalues: self.allowedValues ? self.allowedValues[i] : false\n\t\t\t});\n\t\t});\n\n\t\tif (startOpen) {\n\n\t\t\tif (!Array.isArray(startOpen)) {\n\t\t\t\tstartOpen = [startOpen];\n\t\t\t}\n\n\t\t\tstartOpen.forEach(function (level) {\n\t\t\t\tlevel = typeof level == \"function\" ? level : function () {\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tself.startOpen = startOpen;\n\t\t}\n\n\t\tif (groupHeader) {\n\t\t\tself.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t}\n\n\t\tthis.initialized = true;\n\t};\n\n\tGroupRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tGroupRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//return appropriate rows with group headers\n\tGroupRows.prototype.getRows = function (rows) {\n\t\tif (this.groupIDLookups.length) {\n\n\t\t\tthis.table.options.dataGrouping.call(this.table);\n\n\t\t\tthis.generateGroups(rows);\n\n\t\t\tif (this.table.options.dataGrouped) {\n\t\t\t\tthis.table.options.dataGrouped.call(this.table, this.getGroups(true));\n\t\t\t}\n\n\t\t\treturn this.updateGroupRows();\n\t\t} else {\n\t\t\treturn rows.slice(0);\n\t\t}\n\t};\n\n\tGroupRows.prototype.getGroups = function (compoment) {\n\t\tvar groupComponents = [];\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroupComponents.push(compoment ? group.getComponent() : group);\n\t\t});\n\n\t\treturn groupComponents;\n\t};\n\n\tGroupRows.prototype.wipe = function () {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.wipe();\n\t\t});\n\t};\n\n\tGroupRows.prototype.pullGroupListData = function (groupList) {\n\t\tvar self = this;\n\t\tvar groupListData = [];\n\n\t\tgroupList.forEach(function (group) {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = self.pullGroupListData(group.groupList);\n\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t} else {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\n\t\t\t\tgroupListData.push(groupHeader);\n\n\t\t\t\tgroup.getRows().forEach(function (row) {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn groupListData;\n\t};\n\n\tGroupRows.prototype.getGroupedData = function () {\n\n\t\treturn this.pullGroupListData(this.groupList);\n\t};\n\n\tGroupRows.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\tif (result) {\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tGroupRows.prototype.countGroups = function () {\n\t\treturn this.groupList.length;\n\t};\n\n\tGroupRows.prototype.generateGroups = function (rows) {\n\t\tvar self = this,\n\t\t oldGroups = self.groups;\n\n\t\tself.groups = {};\n\t\tself.groupList = [];\n\n\t\tif (this.allowedValues && this.allowedValues[0]) {\n\t\t\tthis.allowedValues[0].forEach(function (value) {\n\t\t\t\tself.createGroup(value, 0, oldGroups);\n\t\t\t});\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroupRows.prototype.createGroup = function (groupID, level, oldGroups) {\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\t group;\n\n\t\toldGroups = oldGroups || [];\n\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (!this.groups[groupKey]) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[groupKey].addRow(row);\n\t};\n\n\tGroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t newGroupNeeded = !this.groups[\"0_\" + groupID];\n\n\t\tif (newGroupNeeded) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\n\t\treturn !newGroupNeeded;\n\t};\n\n\tGroupRows.prototype.updateGroupRows = function (force) {\n\t\tvar self = this,\n\t\t output = [],\n\t\t oldRowCount;\n\n\t\tself.groupList.forEach(function (group) {\n\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t});\n\n\t\t//force update of table display\n\t\tif (force) {\n\n\t\t\tvar displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());\n\n\t\t\tif (displayIndex !== true) {\n\t\t\t\tthis.setDisplayIndex(displayIndex);\n\t\t\t}\n\n\t\t\tself.table.rowManager.refreshActiveData(\"group\", true, true);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroupRows.prototype.scrollHeaders = function (left) {\n\t\tleft = left + \"px\";\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroupRows.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"groupRows\", GroupRows);\n\tvar History = function History(table) {\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.clear = function () {\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.action = function (type, component, data) {\n\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype: type,\n\t\t\tcomponent: component,\n\t\t\tdata: data\n\t\t});\n\n\t\tthis.index++;\n\t};\n\n\tHistory.prototype.getHistoryUndoSize = function () {\n\t\treturn this.index + 1;\n\t};\n\n\tHistory.prototype.getHistoryRedoSize = function () {\n\t\treturn this.history.length - (this.index + 1);\n\t};\n\n\tHistory.prototype.undo = function () {\n\n\t\tif (this.index > -1) {\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.redo = function () {\n\t\tif (this.history.length - 1 > this.index) {\n\n\t\t\tthis.index++;\n\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.redoers[action.type].call(this, action);\n\n\t\t\tthis.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.undoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\tHistory.prototype.redoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.newValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\t//rebind rows to new element after deletion\n\tHistory.prototype._rebindRow = function (oldRow, newRow) {\n\t\tthis.history.forEach(function (action) {\n\t\t\tif (action.component instanceof Row) {\n\t\t\t\tif (action.component === oldRow) {\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t} else if (action.component instanceof Cell) {\n\t\t\t\tif (action.component.row === oldRow) {\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif (field) {\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"history\", History);\n\tvar HtmlTableImport = function HtmlTableImport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t};\n\n\tHtmlTableImport.prototype.parseTable = function () {\n\t\tvar self = this,\n\t\t element = self.table.element,\n\t\t options = self.table.options,\n\t\t columns = options.columns,\n\t\t headers = element.getElementsByTagName(\"th\"),\n\t\t rows = element.getElementsByTagName(\"tbody\")[0],\n\t\t data = [],\n\t\t newTable;\n\n\t\tself.hasIndex = false;\n\n\t\tself.table.options.htmlImporting.call(this.table);\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for tablator inline options\n\t\tself._extractOptions(element, options);\n\n\t\tif (headers.length) {\n\t\t\tself._extractHeaders(headers, rows);\n\t\t} else {\n\t\t\tself._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor (var index = 0; index < rows.length; index++) {\n\t\t\tvar row = rows[index],\n\t\t\t cells = row.getElementsByTagName(\"td\"),\n\t\t\t item = {};\n\n\t\t\t//create index if the dont exist in table\n\t\t\tif (!self.hasIndex) {\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif (typeof this.fieldIndex[i] !== \"undefined\") {\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\t//create new element\n\t\tvar newElement = document.createElement(\"div\");\n\n\t\t//transfer attributes to new element\n\t\tvar attributes = element.attributes;\n\n\t\t// loop through attributes and apply them on div\n\n\t\tfor (var i in attributes) {\n\t\t\tif (_typeof(attributes[i]) == \"object\") {\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t}\n\t\t}\n\n\t\t// replace table with div element\n\t\telement.parentNode.replaceChild(newElement, element);\n\n\t\toptions.data = data;\n\n\t\tself.table.options.htmlImported.call(this.table);\n\n\t\t// // newElement.tabulator(options);\n\n\t\tthis.table.element = newElement;\n\t};\n\n\t//extract tabulator attribute options\n\tHtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach(function (item) {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor (var index in attributes) {\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif (typeof optionsList[name] !== \"undefined\") {\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//get value of attribute\n\tHtmlTableImport.prototype._attribValue = function (value) {\n\t\tif (value === \"true\") {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === \"false\") {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t//find column if it has already been defined\n\tHtmlTableImport.prototype._findCol = function (title) {\n\t\tvar match = this.table.options.columns.find(function (column) {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\t//extract column from headers\n\tHtmlTableImport.prototype._extractHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t exists = false,\n\t\t\t col = this._findCol(header.textContent),\n\t\t\t width,\n\t\t\t attributes;\n\n\t\t\tif (col) {\n\t\t\t\texists = true;\n\t\t\t} else {\n\t\t\t\tcol = { title: header.textContent.trim() };\n\t\t\t}\n\n\t\t\tif (!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif (width && !col.width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for tablator inline options\n\t\t\tattributes = header.attributes;\n\n\t\t\t// //check for tablator inline options\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\n\n\t\t\tfor (var i in attributes) {\n\t\t\t\tvar attrib = attributes[i],\n\t\t\t\t name;\n\n\t\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\n\t\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\t\tcol[name] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif (col.field == this.table.options.index) {\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif (!exists) {\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate blank headers\n\tHtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t col = { title: \"\", field: \"col\" + index };\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif (width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableImport\", HtmlTableImport);\n\tvar HtmlTableExport = function HtmlTableExport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t};\n\n\tHtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers = this.generateHeaderElements();\n\t\tvar body = this.generateBodyElements(visible);\n\n\t\tvar table = document.createElement(\"table\");\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\ttable.appendChild(headers);\n\t\ttable.appendChild(body);\n\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\treturn table;\n\t};\n\n\tHtmlTableExport.prototype.generateColumnGroupHeaders = function () {\n\t\tvar _this41 = this;\n\n\t\tvar output = [];\n\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar colData = _this41.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tHtmlTableExport.prototype.processColumnGroup = function (column) {\n\t\tvar _this42 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\n\t\tvar groupData = {\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this42.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\n\t\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && this.columnVisCheck(column)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tHtmlTableExport.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [],\n\t\t headerDepth = 0;\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tvar depth = headerDepth - level;\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\tcolumn.height = column.subGroups ? 1 : depth - column.depth + 1;\n\n\t\t\theaders[level].push(column);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//calculate maximum header debth\n\t\tcolumns.forEach(function (column) {\n\t\t\tif (column.depth > headerDepth) {\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tHtmlTableExport.prototype.generateHeaderElements = function () {\n\t\tvar _this43 = this;\n\n\t\tvar headerEl = document.createElement(\"thead\");\n\n\t\tvar rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\n\t\t\t_this43.mapElementStyles(_this43.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\trow.forEach(function (column) {\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\n\t\t\t\tcellEl.innerHTML = column.column.definition.title;\n\n\t\t\t\tif (_this43.cloneTableStyle) {\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\n\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t_this43.mapElementStyles(column.column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\n\t\t\t\tif (column.column.visible) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"width\"]);\n\t\t\t\t} else {\n\t\t\t\t\tif (column.column.definition.width) {\n\t\t\t\t\t\tcellEl.style.width = column.column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (column.column.parent) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t});\n\n\t\t\theaderEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn headerEl;\n\t};\n\n\tHtmlTableExport.prototype.generateBodyElements = function (visible) {\n\t\tvar _this44 = this;\n\n\t\tvar oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;\n\n\t\t//lookup row styles\n\t\tif (this.cloneTableStyle && window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tvar bodyEl = document.createElement(\"tbody\");\n\n\t\tvar rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();\n\t\tvar columns = [];\n\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (_this44.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column);\n\t\t\t}\n\t\t});\n\n\t\trows = rows.filter(function (row) {\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn _this44.config.rowGroups !== false;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn _this44.config.columnCalcs !== false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tif (rows.length > 1000) {\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar rowData = row.getData();\n\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\t\t\t\t\tcellEl.colSpan = columns.length;\n\t\t\t\t\tcellEl.innerHTML = row.key;\n\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\n\t\t\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\t\t\tvar cellWrapper = {\n\t\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetComponent: function getComponent() {\n\t\t\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcolumn: column\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (_this44.table.modExists(\"format\")) {\n\t\t\t\t\t\t\tvalue = _this44.table.modules.format.formatValue(cellWrapper);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value instanceof Node) {\n\t\t\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\t_this44.mapElementStyles(firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\t});\n\n\t\t\t\t\tstyleRow = row.type == \"calc\" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;\n\n\t\t\t\t\t_this44.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbodyEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn bodyEl;\n\t};\n\n\tHtmlTableExport.prototype.columnVisCheck = function (column) {\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);\n\t};\n\n\tHtmlTableExport.prototype.getHtml = function (visible, style, config) {\n\t\tvar holder = document.createElement(\"div\");\n\n\t\tholder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, \"htmlOutput\"));\n\n\t\treturn holder.innerHTML;\n\t};\n\n\tHtmlTableExport.prototype.mapElementStyles = function (from, to, props) {\n\t\tif (this.cloneTableStyle && from && to) {\n\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\t\"color\": \"fontColor\",\n\t\t\t\t\"width\": \"width\",\n\t\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\t\"text-align\": \"textAlign\",\n\t\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\t\"border-bottom\": \"borderBottom\",\n\t\t\t\t\"padding-top\": \"paddingTop\",\n\t\t\t\t\"padding-left\": \"paddingLeft\",\n\t\t\t\t\"padding-right\": \"paddingRight\",\n\t\t\t\t\"padding-bottom\": \"paddingBottom\"\n\t\t\t};\n\n\t\t\tif (window.getComputedStyle) {\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\t\tprops.forEach(function (prop) {\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableExport\", HtmlTableExport);\n\tvar Keybindings = function Keybindings(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\t};\n\n\tKeybindings.prototype.initialize = function () {\n\t\tvar bindings = this.table.options.keybindings,\n\t\t mergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif (bindings !== false) {\n\n\t\t\tfor (var key in this.bindings) {\n\t\t\t\tmergedBindings[key] = this.bindings[key];\n\t\t\t}\n\n\t\t\tif (Object.keys(bindings).length) {\n\n\t\t\t\tfor (var _key in bindings) {\n\t\t\t\t\tmergedBindings[_key] = bindings[_key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBindings = function (bindings) {\n\t\tvar _this45 = this;\n\n\t\tvar self = this;\n\n\t\tvar _loop2 = function _loop2(key) {\n\n\t\t\tif (_this45.actions[key]) {\n\n\t\t\t\tif (bindings[key]) {\n\n\t\t\t\t\tif (_typeof(bindings[key]) !== \"object\") {\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach(function (binding) {\n\t\t\t\t\t\tself.mapBinding(key, binding);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t};\n\n\t\tfor (var key in bindings) {\n\t\t\t_loop2(key);\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBinding = function (action, symbolsList) {\n\t\tvar self = this;\n\n\t\tvar binding = {\n\t\t\taction: this.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach(function (symbol) {\n\t\t\tswitch (symbol) {\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif (!self.watchKeys[symbol]) {\n\t\t\t\t\t\tself.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tself.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t};\n\n\tKeybindings.prototype.bindEvents = function () {\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function (binding) {\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t};\n\n\tKeybindings.prototype.clearBindings = function () {\n\t\tif (this.keyupBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif (this.keydownBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t};\n\n\tKeybindings.prototype.checkBinding = function (e, binding) {\n\t\tvar self = this,\n\t\t match = true;\n\n\t\tif (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {\n\t\t\tbinding.keys.forEach(function (key) {\n\t\t\t\tvar index = self.pressedKeys.indexOf(key);\n\n\t\t\t\tif (index == -1) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tbinding.action.call(self, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t//default bindings\n\tKeybindings.prototype.bindings = {\n\t\tnavPrev: \"shift + 9\",\n\t\tnavNext: 9,\n\t\tnavUp: 38,\n\t\tnavDown: 40,\n\t\tscrollPageUp: 33,\n\t\tscrollPageDown: 34,\n\t\tscrollToStart: 36,\n\t\tscrollToEnd: 35,\n\t\tundo: \"ctrl + 90\",\n\t\tredo: \"ctrl + 89\",\n\t\tcopyToClipboard: \"ctrl + 67\"\n\t};\n\n\t//default actions\n\tKeybindings.prototype.actions = {\n\t\tkeyBlock: function keyBlock(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t\tscrollPageUp: function scrollPageUp(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop - rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos >= 0) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollPageDown: function scrollPageDown(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop + rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos <= scrollMax) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToStart: function scrollToStart(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToEnd: function scrollToEnd(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tnavPrev: function navPrev(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().prev();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavNext: function navNext(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().next();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavLeft: function navLeft(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().left();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavRight: function navRight(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().right();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavUp: function navUp(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().up();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavDown: function navDown(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().down();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tundo: function undo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.undo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tredo: function redo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.redo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcopyToClipboard: function copyToClipboard(e) {\n\t\t\tif (!this.table.modules.edit.currentCell) {\n\t\t\t\tif (this.table.modExists(\"clipboard\", true)) {\n\t\t\t\t\tthis.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == \"highlight\" ? \"active\" : \"selected\", null, null, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"keybindings\", Keybindings);\n\tvar MoveColumns = function MoveColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t};\n\n\tMoveColumns.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveColumns.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t colEl;\n\n\t\tif (!column.modules.frozen) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tconfig.mousemove = function (e) {\n\t\t\t\tif (column.parent === self.moving.parent) {\n\t\t\t\t\tif ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {\n\t\t\t\t\t\tif (self.toCol !== column || !self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.toCol !== column || self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\n\t\t\tcolEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcolEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\n\t\tcolumn.modules.moveColumn = config;\n\t};\n\n\tMoveColumns.prototype.bindTouchEvents = function (column) {\n\t\tvar self = this,\n\t\t colEl = column.getElement(),\n\t\t startXMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentCol,\n\t\t nextCol,\n\t\t prevCol,\n\t\t nextColWidth,\n\t\t prevColWidth,\n\t\t nextColWidthLast,\n\t\t prevColWidthLast;\n\n\t\tcolEl.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentCol = column;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\n\t\t\t\tself.startMove(e, column);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchmove\", function (e) {\n\t\t\tvar halfCol, diff, moveToCol;\n\n\t\t\tif (self.moving) {\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startXMove) {\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextCol && diff - nextColWidthLast > nextColWidth) {\n\t\t\t\t\t\tmoveToCol = nextCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevCol && -diff - prevColWidthLast > prevColWidth) {\n\t\t\t\t\t\tmoveToCol = prevCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToCol) {\n\t\t\t\t\tcurrentCol = moveToCol;\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.startMove = function (e, column) {\n\t\tvar element = column.getElement();\n\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\n\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = \"0\";\n\n\t\tif (!this.touchMove) {\n\t\t\tthis._bindMouseMove();\n\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveColumns.prototype._bindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype._unbindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.moveColumn = function (column, after) {\n\t\tvar movingCells = this.moving.getCells();\n\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\n\t\tif (after) {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t});\n\t\t} else {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t});\n\t\t}\n\t};\n\n\tMoveColumns.prototype.endMove = function (e) {\n\t\tif (e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toCol) {\n\t\t\t\tthis.table.columnManager.moveColumn(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\n\t\t\tif (!this.touchMove) {\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveColumns.prototype.moveHover = function (e) {\n\t\tvar self = this,\n\t\t columnHolder = self.table.columnManager.getElement(),\n\t\t scrollLeft = columnHolder.scrollLeft,\n\t\t xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,\n\t\t scrollPos;\n\n\t\tself.hoverElement.style.left = xPos - self.startX + \"px\";\n\n\t\tif (xPos - scrollLeft < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.max(0, scrollLeft - 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\n\t\tif (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveColumn\", MoveColumns);\n\tvar MoveRows = function MoveRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\t};\n\n\tMoveRows.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveRows.prototype.initialize = function (handle) {\n\t\tthis.connection = this.table.options.movableRowsConnectedTables;\n\t};\n\n\tMoveRows.prototype.setHandle = function (handle) {\n\t\tthis.hasHandle = handle;\n\t};\n\n\tMoveRows.prototype.initializeGroupHeader = function (group) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== group || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== group || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\tif (rowEl.previousSibling) {\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== row || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== row || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tif (!this.hasHandle) {\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeCell = function (cell) {\n\t\tvar self = this,\n\t\t cellEl = cell.getElement();\n\n\t\tcellEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t}, self.checkPeriod);\n\t\t\t}\n\t\t});\n\n\t\tcellEl.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.bindTouchEvents(cell.row, cell.getElement());\n\t};\n\n\tMoveRows.prototype.bindTouchEvents = function (row, element) {\n\t\tvar self = this,\n\t\t startYMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentRow,\n\t\t nextRow,\n\t\t prevRow,\n\t\t nextRowHeight,\n\t\t prevRowHeight,\n\t\t nextRowHeightLast,\n\t\t prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentRow = row;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tself.startMove(e, row);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", function (e) {\n\n\t\t\tvar halfCol, diff, moveToRow;\n\n\t\t\tif (self.moving) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startYMove) {\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextRow && diff - nextRowHeightLast > nextRowHeight) {\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevRow && -diff - prevRowHeightLast > prevRowHeight) {\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tself.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToRow) {\n\t\t\t\t\tcurrentRow = moveToRow;\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t\tself.touchMove = false;\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._bindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._unbindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype.startMove = function (e, row) {\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif (!this.connection) {\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t} else {\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif (this.connection) {\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t} else {\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveRows.prototype.setStartPosition = function (e, row) {\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\t pageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\t element,\n\t\t position;\n\n\t\telement = row.getElement();\n\t\tif (this.connection) {\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t} else {\n\t\t\tthis.startY = pageY - element.getBoundingClientRect().top;\n\t\t}\n\t};\n\n\tMoveRows.prototype.endMove = function (e) {\n\t\tif (!e || e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif (!this.connection) {\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toRow) {\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif (this.connection) {\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveRow = function (row, after) {\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t};\n\n\tMoveRows.prototype.moveHover = function (e) {\n\t\tif (this.connection) {\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t} else {\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveHoverTable = function (e) {\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\t scrollTop = rowHolder.scrollTop,\n\t\t yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,\n\t\t scrollPos;\n\n\t\tthis.hoverElement.style.top = yPos - this.startY + \"px\";\n\t};\n\n\tMoveRows.prototype.moveHoverConnections = function (e) {\n\t\tthis.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + \"px\";\n\t\tthis.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + \"px\";\n\t};\n\n\t//establish connection with other tables\n\tMoveRows.prototype.connectToTables = function (row) {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStart.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"connect\", {\n\t\t\trow: row\n\t\t});\n\t};\n\n\t//disconnect from other tables\n\tMoveRows.prototype.disconnectFromTables = function () {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStop.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"disconnect\");\n\t};\n\n\t//accept incomming connection\n\tMoveRows.prototype.connect = function (table, row) {\n\t\tvar self = this;\n\t\tif (!this.connectedTable) {\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.tableRowDropEvent = self.tableRowDrop.bind(self);\n\n\t\t\tself.table.element.addEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStart.call(this.table, row, table);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//close incomming connection\n\tMoveRows.prototype.disconnect = function (table) {\n\t\tvar self = this;\n\t\tif (table === this.connectedTable) {\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.element.removeEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStop.call(this.table, table);\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t};\n\n\tMoveRows.prototype.dropComplete = function (table, row, success) {\n\t\tvar sender = false;\n\n\t\tif (success) {\n\n\t\t\tswitch (_typeof(this.table.options.movableRowsSender)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (sender) {\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t\t} else {\n\t\t\t\tif (this.table.options.movableRowsSender) {\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t};\n\n\tMoveRows.prototype.tableRowDrop = function (e, row) {\n\t\tvar receiver = false,\n\t\t success = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch (_typeof(this.table.options.movableRowsReceiver)) {\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (receiver) {\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif (success) {\n\t\t\tthis.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.table.modules.comms.send(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow: row,\n\t\t\tsuccess: success\n\t\t});\n\t};\n\n\tMoveRows.prototype.receivers = {\n\t\tinsert: function insert(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\treturn true;\n\t\t},\n\n\t\tadd: function add(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData());\n\t\t\treturn true;\n\t\t},\n\n\t\tupdate: function update(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\ttoRow.update(fromRow.getData());\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\treplace: function replace(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\t\ttoRow.delete();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tMoveRows.prototype.senders = {\n\t\tdelete: function _delete(fromRow, toRow, toTable) {\n\t\t\tfromRow.delete();\n\t\t}\n\t};\n\n\tMoveRows.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\t\t\t\tbreak;\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\t\t\t\tbreak;\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveRow\", MoveRows);\n\tvar Mutator = function Mutator(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\n\t\tthis.enabled = true;\n\t};\n\n\t//initialize column mutator\n\tMutator.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t mutator;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\tmutator = self.lookupMutator(column.definition[key]);\n\n\t\t\t\tif (mutator) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator: mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t};\n\n\tMutator.prototype.lookupMutator = function (value) {\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.mutators[value]) {\n\t\t\t\t\tmutator = this.mutators[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t};\n\n\t//apply mutator to row\n\tMutator.prototype.transformRow = function (data, type, update) {\n\t\tvar self = this,\n\t\t key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t value;\n\n\t\tif (this.enabled) {\n\n\t\t\tself.table.columnManager.traverse(function (column) {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif (column.modules.mutate) {\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif (mutator) {\n\t\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\t\tif (!update || update && typeof value !== \"undefined\") {\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//apply mutator to new cell value\n\tMutator.prototype.transformCell = function (cell, value) {\n\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;\n\n\t\tif (mutator) {\n\t\t\treturn mutator.mutator(value, cell.row.getData(), \"edit\", mutator.params, cell.getComponent());\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tMutator.prototype.enable = function () {\n\t\tthis.enabled = true;\n\t};\n\n\tMutator.prototype.disable = function () {\n\t\tthis.enabled = false;\n\t};\n\n\t//default mutators\n\tMutator.prototype.mutators = {};\n\n\tTabulator.prototype.registerModule(\"mutator\", Mutator);\n\tvar Page = function Page(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.displayIndex = 0; //index in display pipeline\n\n\t\tthis.pageSizes = [];\n\n\t\tthis.createElements();\n\t};\n\n\tPage.prototype.createElements = function () {\n\n\t\tvar button;\n\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\n\t\tif (this.table.options.paginationSizeSelector) {\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t};\n\n\tPage.prototype.generatePageSizeSelectList = function () {\n\t\tvar _this46 = this;\n\n\t\tvar pageSizes = [];\n\n\t\tif (this.pageSizeSelect) {\n\n\t\t\tif (Array.isArray(this.table.options.paginationSizeSelector)) {\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes = [];\n\n\t\t\t\t\tfor (var i = 1; i < 5; i++) {\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t} else {\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile (this.pageSizeSelect.firstChild) {\n\t\t\t\tthis.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t}pageSizes.forEach(function (item) {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\titemEl.innerHTML = item;\n\n\t\t\t\t_this46.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t};\n\n\t//setup pageination\n\tPage.prototype.initialize = function (hidden) {\n\t\tvar self = this,\n\t\t pageSelectLabel;\n\n\t\t//update param names\n\t\tfor (var key in self.table.options.paginationDataSent) {\n\t\t\tself.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];\n\t\t}\n\n\t\tfor (var _key2 in self.table.options.paginationDataReceived) {\n\t\t\tself.paginationDataReceivedNames[_key2] = self.table.options.paginationDataReceived[_key2];\n\t\t}\n\n\t\t//build pagination element\n\n\t\t//bind localizations\n\t\tself.table.modules.localize.bind(\"pagination|first\", function (value) {\n\t\t\tself.firstBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|first_title\", function (value) {\n\t\t\tself.firstBut.setAttribute(\"aria-label\", value);\n\t\t\tself.firstBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev\", function (value) {\n\t\t\tself.prevBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev_title\", function (value) {\n\t\t\tself.prevBut.setAttribute(\"aria-label\", value);\n\t\t\tself.prevBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next\", function (value) {\n\t\t\tself.nextBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next_title\", function (value) {\n\t\t\tself.nextBut.setAttribute(\"aria-label\", value);\n\t\t\tself.nextBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last\", function (value) {\n\t\t\tself.lastBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last_title\", function (value) {\n\t\t\tself.lastBut.setAttribute(\"aria-label\", value);\n\t\t\tself.lastBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\t//click bindings\n\t\tself.firstBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(1);\n\t\t});\n\n\t\tself.prevBut.addEventListener(\"click\", function () {\n\t\t\tself.previousPage();\n\t\t});\n\n\t\tself.nextBut.addEventListener(\"click\", function () {\n\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t});\n\n\t\tself.lastBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(self.max);\n\t\t});\n\n\t\tif (self.table.options.paginationElement) {\n\t\t\tself.element = self.table.options.paginationElement;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\tpageSelectLabel = document.createElement(\"label\");\n\n\t\t\tself.table.modules.localize.bind(\"pagination|page_size\", function (value) {\n\t\t\t\tself.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\tself.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t});\n\n\t\t\tself.element.appendChild(pageSelectLabel);\n\t\t\tself.element.appendChild(self.pageSizeSelect);\n\n\t\t\tself.pageSizeSelect.addEventListener(\"change\", function (e) {\n\t\t\t\tself.setPageSize(self.pageSizeSelect.value);\n\t\t\t\tself.setPage(1).then(function () {}).catch(function () {});\n\t\t\t});\n\t\t}\n\n\t\t//append to DOM\n\t\tself.element.appendChild(self.firstBut);\n\t\tself.element.appendChild(self.prevBut);\n\t\tself.element.appendChild(self.pagesElement);\n\t\tself.element.appendChild(self.nextBut);\n\t\tself.element.appendChild(self.lastBut);\n\n\t\tif (!self.table.options.paginationElement && !hidden) {\n\t\t\tself.table.footerManager.append(self.element, self);\n\t\t}\n\n\t\t//set default values\n\t\tself.mode = self.table.options.pagination;\n\t\tself.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);\n\t\tself.count = self.table.options.paginationButtonCount;\n\n\t\tself.generatePageSizeSelectList();\n\t};\n\n\tPage.prototype.initializeProgressive = function (mode) {\n\t\tthis.initialize(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t};\n\n\tPage.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tPage.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//calculate maximum page from number of rows\n\tPage.prototype.setMaxRows = function (rowCount) {\n\t\tif (!rowCount) {\n\t\t\tthis.max = 1;\n\t\t} else {\n\t\t\tthis.max = Math.ceil(rowCount / this.size);\n\t\t}\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t}\n\t};\n\n\t//reset to first page without triggering action\n\tPage.prototype.reset = function (force) {\n\t\tif (this.mode == \"local\" || force) {\n\t\t\tthis.page = 1;\n\t\t}\n\t\treturn true;\n\t};\n\n\t//set the maxmum page\n\tPage.prototype.setMaxPage = function (max) {\n\n\t\tmax = parseInt(max);\n\n\t\tthis.max = max || 1;\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t};\n\n\t//set current page number\n\tPage.prototype.setPage = function (page) {\n\t\tvar _this47 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpage = parseInt(page);\n\n\t\t\tif (page > 0 && page <= _this47.max) {\n\t\t\t\t_this47.page = page;\n\t\t\t\t_this47.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + _this47.max + \":\", page);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageToRow = function (row) {\n\t\tvar _this48 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar rows = _this48.table.rowManager.getDisplayRows(_this48.displayIndex - 1);\n\t\t\tvar index = rows.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\tvar page = Math.ceil((index + 1) / _this48.size);\n\n\t\t\t\t_this48.setPage(page).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageSize = function (size) {\n\t\tsize = parseInt(size);\n\n\t\tif (size > 0) {\n\t\t\tthis.size = size;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t};\n\n\t//setup the pagination buttons\n\tPage.prototype._setPageButtons = function () {\n\t\tvar self = this;\n\n\t\tvar leftSize = Math.floor((this.count - 1) / 2);\n\t\tvar rightSize = Math.ceil((this.count - 1) / 2);\n\t\tvar min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);\n\t\tvar max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);\n\n\t\twhile (self.pagesElement.firstChild) {\n\t\t\tself.pagesElement.removeChild(self.pagesElement.firstChild);\n\t\t}if (self.page == 1) {\n\t\t\tself.firstBut.disabled = true;\n\t\t\tself.prevBut.disabled = true;\n\t\t} else {\n\t\t\tself.firstBut.disabled = false;\n\t\t\tself.prevBut.disabled = false;\n\t\t}\n\n\t\tif (self.page == self.max) {\n\t\t\tself.lastBut.disabled = true;\n\t\t\tself.nextBut.disabled = true;\n\t\t} else {\n\t\t\tself.lastBut.disabled = false;\n\t\t\tself.nextBut.disabled = false;\n\t\t}\n\n\t\tfor (var i = min; i <= max; i++) {\n\t\t\tif (i > 0 && i <= self.max) {\n\t\t\t\tself.pagesElement.appendChild(self._generatePageButton(i));\n\t\t\t}\n\t\t}\n\n\t\tthis.footerRedraw();\n\t};\n\n\tPage.prototype._generatePageButton = function (page) {\n\t\tvar self = this,\n\t\t button = document.createElement(\"button\");\n\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif (page == self.page) {\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"title\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\n\t\tbutton.addEventListener(\"click\", function (e) {\n\t\t\tself.setPage(page);\n\t\t});\n\n\t\treturn button;\n\t};\n\n\t//previous page\n\tPage.prototype.previousPage = function () {\n\t\tvar _this49 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this49.page > 1) {\n\t\t\t\t_this49.page--;\n\t\t\t\t_this49.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//next page\n\tPage.prototype.nextPage = function () {\n\t\tvar _this50 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this50.page < _this50.max) {\n\t\t\t\t_this50.page++;\n\t\t\t\t_this50.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!_this50.progressiveLoad) {\n\t\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + _this50.max + \":\", _this50.max + 1);\n\t\t\t\t}\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//return current page number\n\tPage.prototype.getPage = function () {\n\t\treturn this.page;\n\t};\n\n\t//return max page number\n\tPage.prototype.getPageMax = function () {\n\t\treturn this.max;\n\t};\n\n\tPage.prototype.getPageSize = function (size) {\n\t\treturn this.size;\n\t};\n\n\tPage.prototype.getMode = function () {\n\t\treturn this.mode;\n\t};\n\n\t//return appropriate rows for current page\n\tPage.prototype.getRows = function (data) {\n\t\tvar output, start, end;\n\n\t\tif (this.mode == \"local\") {\n\t\t\toutput = [];\n\t\t\tstart = this.size * (this.page - 1);\n\t\t\tend = start + parseInt(this.size);\n\n\t\t\tthis._setPageButtons();\n\n\t\t\tfor (var i = start; i < end; i++) {\n\t\t\t\tif (data[i]) {\n\t\t\t\t\toutput.push(data[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn output;\n\t\t} else {\n\n\t\t\tthis._setPageButtons();\n\n\t\t\treturn data.slice(0);\n\t\t}\n\t};\n\n\tPage.prototype.trigger = function () {\n\t\tvar _this51 = this;\n\n\t\tvar left;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tswitch (_this51.mode) {\n\t\t\t\tcase \"local\":\n\t\t\t\t\tleft = _this51.table.rowManager.scrollLeft;\n\n\t\t\t\t\t_this51.table.rowManager.refreshActiveData(\"page\");\n\t\t\t\t\t_this51.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t\t_this51.table.options.pageLoaded.call(_this51.table, _this51.getPage());\n\t\t\t\t\tresolve();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"remote\":\n\t\t\t\tcase \"progressive_load\":\n\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t_this51.table.modules.ajax.blockActiveRequest();\n\t\t\t\t\t_this51._getRemotePage().then(function () {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", _this51.mode);\n\t\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype._getRemotePage = function () {\n\t\tvar _this52 = this;\n\n\t\tvar self = this,\n\t\t oldParams,\n\t\t pageParams;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (!self.table.modExists(\"ajax\", true)) {\n\t\t\t\treject();\n\t\t\t}\n\n\t\t\t//record old params and restore after request has been made\n\t\t\toldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});\n\t\t\tpageParams = self.table.modules.ajax.getParams();\n\n\t\t\t//configure request params\n\t\t\tpageParams[_this52.paginationDataSentNames.page] = self.page;\n\n\t\t\t//set page size if defined\n\t\t\tif (_this52.size) {\n\t\t\t\tpageParams[_this52.paginationDataSentNames.size] = _this52.size;\n\t\t\t}\n\n\t\t\t//set sort data if defined\n\t\t\tif (_this52.table.options.ajaxSorting && _this52.table.modExists(\"sort\")) {\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tpageParams[_this52.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\t\t\tif (_this52.table.options.ajaxFiltering && _this52.table.modExists(\"filter\")) {\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\t\t\t\tpageParams[_this52.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(pageParams);\n\n\t\t\tself.table.modules.ajax.sendRequest(_this52.progressiveLoad).then(function (data) {\n\t\t\t\tself._parseRemoteData(data);\n\t\t\t\tresolve();\n\t\t\t}).catch(function (e) {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tself.table.modules.ajax.setParams(oldParams);\n\t\t});\n\t};\n\n\tPage.prototype._parseRemoteData = function (data) {\n\t\tvar self = this,\n\t\t left,\n\t\t data,\n\t\t margin;\n\n\t\tif (typeof data[this.paginationDataReceivedNames.last_page] === \"undefined\") {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.last_page + \"' property\");\n\t\t}\n\n\t\tif (data[this.paginationDataReceivedNames.data]) {\n\t\t\tthis.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;\n\n\t\t\tif (this.progressiveLoad) {\n\t\t\t\tswitch (this.mode) {\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\tthis.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);\n\t\t\t\t\t\tif (this.page < this.max) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t\t}, self.table.options.ajaxProgressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\t\t\tthis.table.rowManager.setData(data, true);\n\n\t\t\t\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;\n\n\t\t\t\t\t\tif (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {\n\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\n\t\t\t\tthis.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.options.pageLoaded.call(this.table, this.getPage());\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.data + \"' property\");\n\t\t}\n\t};\n\n\t//handle the footer element being redrawn\n\tPage.prototype.footerRedraw = function () {\n\t\tvar footer = this.table.footerManager.element;\n\n\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t} else {\n\t\t\tthis.pagesElement.style.display = '';\n\n\t\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t};\n\n\t//set the paramter names for pagination requests\n\tPage.prototype.paginationDataSentNames = {\n\t\t\"page\": \"page\",\n\t\t\"size\": \"size\",\n\t\t\"sorters\": \"sorters\",\n\t\t// \"sort_dir\":\"sort_dir\",\n\t\t\"filters\": \"filters\"\n\t\t// \"filter_value\":\"filter_value\",\n\t\t// \"filter_type\":\"filter_type\",\n\t};\n\n\t//set the property names for pagination responses\n\tPage.prototype.paginationDataReceivedNames = {\n\t\t\"current_page\": \"current_page\",\n\t\t\"last_page\": \"last_page\",\n\t\t\"data\": \"data\"\n\t};\n\n\tTabulator.prototype.registerModule(\"page\", Page);\n\n\tvar Persistence = function Persistence(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\tthis.persistProps = [\"field\", \"width\", \"visible\"];\n\t};\n\n\t//setup parameters\n\tPersistence.prototype.initialize = function (mode, id) {\n\t\t//determine persistent layout storage type\n\t\tthis.mode = mode !== true ? mode : typeof window.localStorage !== 'undefined' ? \"local\" : \"cookie\";\n\n\t\t//set storage tag\n\t\tthis.id = \"tabulator-\" + (id || this.table.element.getAttribute(\"id\") || \"\");\n\t};\n\n\t//load saved definitions\n\tPersistence.prototype.load = function (type, current) {\n\n\t\tvar data = this.retreiveData(type);\n\n\t\tif (current) {\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//retreive data from memory\n\tPersistence.prototype.retreiveData = function (type) {\n\t\tvar data = \"\",\n\t\t id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tdata = localStorage.getItem(id);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\n\t\t\t\t//find cookie\n\t\t\t\tvar cookie = document.cookie,\n\t\t\t\t cookiePos = cookie.indexOf(id + \"=\"),\n\t\t\t\t end = void 0;\n\n\t\t\t\t//if cookie exists, decode and load column data into tabulator\n\t\t\t\tif (cookiePos > -1) {\n\t\t\t\t\tcookie = cookie.substr(cookiePos);\n\n\t\t\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\t\t\tif (end > -1) {\n\t\t\t\t\t\tcookie = cookie.substr(0, end);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata = cookie.replace(id + \"=\", \"\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Load Error - invalid mode selected\", this.mode);\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t};\n\n\t//merge old and new column defintions\n\tPersistence.prototype.mergeDefinition = function (oldCols, newCols) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\t// oldCols = oldCols || [];\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach(function (column, to) {\n\n\t\t\tvar from = self._findColumn(oldCols, column);\n\n\t\t\tif (from) {\n\n\t\t\t\tfrom.width = column.width;\n\t\t\t\tfrom.visible = column.visible;\n\n\t\t\t\tif (from.columns) {\n\t\t\t\t\tfrom.columns = self.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\t\toldCols.forEach(function (column, i) {\n\t\t\tvar from = self._findColumn(newCols, column);\n\t\t\tif (!from) {\n\t\t\t\tif (output.length > i) {\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//find matching columns\n\tPersistence.prototype._findColumn = function (columns, subject) {\n\t\tvar type = subject.columns ? \"group\" : subject.field ? \"field\" : \"object\";\n\n\t\treturn columns.find(function (col) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t};\n\n\t//save data\n\tPersistence.prototype.save = function (type) {\n\t\tvar data = {};\n\n\t\tswitch (type) {\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tthis.saveData(id, data);\n\t};\n\n\t//ensure sorters contain no function data\n\tPersistence.prototype.validateSorters = function (data) {\n\t\tdata.forEach(function (item) {\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//save data to chosed medium\n\tPersistence.prototype.saveData = function (id, data) {\n\n\t\tdata = JSON.stringify(data);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tlocalStorage.setItem(id, data);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\t\t\t\tvar expireDate = new Date();\n\t\t\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\t\t\t//save cookie\n\t\t\t\tdocument.cookie = id + \"=\" + data + \"; expires=\" + expireDate.toUTCString();\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Save Error - invalid mode selected\", this.mode);\n\t\t}\n\t};\n\n\t//build premission list\n\tPersistence.prototype.parseColumns = function (columns) {\n\t\tvar self = this,\n\t\t definitions = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar def = {};\n\n\t\t\tif (column.isGroup) {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.columns = self.parseColumns(column.getColumns());\n\t\t\t} else {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.field = column.getField();\n\t\t\t\tdef.width = column.getWidth();\n\t\t\t\tdef.visible = column.visible;\n\t\t\t}\n\n\t\t\tdefinitions.push(def);\n\t\t});\n\n\t\treturn definitions;\n\t};\n\n\tTabulator.prototype.registerModule(\"persistence\", Persistence);\n\n\tvar Print = function Print(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t};\n\n\tPrint.prototype.initialize = function () {\n\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\n\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\n\t};\n\n\tPrint.prototype.replaceTable = function () {\n\t\tif (!this.manualBlock) {\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t};\n\n\tPrint.prototype.cleanup = function () {\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t};\n\n\tPrint.prototype.printFullscreen = function (visible, style, config) {\n\t\tvar scrollX = window.scrollX,\n\t\t scrollY = window.scrollY,\n\t\t headerEl = document.createElement(\"div\"),\n\t\t footerEl = document.createElement(\"div\"),\n\t\t tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printCopyStyle, visible, \"print\"),\n\t\t headerContent,\n\t\t footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif (this.table.options.printHeader) {\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif (typeof headerContent == \"string\") {\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t} else {\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif (this.table.options.printFooter) {\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\t\t\tif (typeof footerContent == \"string\") {\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t} else {\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif (this.table.options.printFormatter) {\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"print\", Print);\n\tvar ReactiveData = function ReactiveData(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t};\n\n\tReactiveData.prototype.watchData = function (data) {\n\t\tvar self = this,\n\t\t pushFunc,\n\t\t version;\n\n\t\tthis.currentVersion++;\n\n\t\tversion = this.currentVersion;\n\n\t\tself.unwatchData();\n\n\t\tself.data = data;\n\n\t\t//override array push function\n\t\tself.origFuncs.push = data.push;\n\n\t\tObject.defineProperty(self.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array unshift function\n\t\tself.origFuncs.unshift = data.unshift;\n\n\t\tObject.defineProperty(self.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array shift function\n\t\tself.origFuncs.shift = data.shift;\n\n\t\tObject.defineProperty(self.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.shift.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array pop function\n\t\tself.origFuncs.pop = data.pop;\n\n\t\tObject.defineProperty(self.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn self.origFuncs.pop.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array splice function\n\t\tself.origFuncs.splice = data.splice;\n\n\t\tObject.defineProperty(self.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\t start = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\t end = args[1],\n\t\t\t\t newRows = args[2] ? args.slice(2) : false,\n\t\t\t\t startRow;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif (newRows) {\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\n\t\t\t\t\t\tif (startRow) {\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif (end !== 0) {\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\n\t\t\t\t\t\toldRows.forEach(function (rowData, i) {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\n\t\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newRows || end !== 0) {\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchData = function () {\n\t\tif (this.data !== false) {\n\t\t\tfor (var key in this.origFuncs) {\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: this.origFuncs.key\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tReactiveData.prototype.watchRow = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData();\n\n\t\tthis.blocked = true;\n\n\t\tfor (var key in data) {\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\n\t\tthis.blocked = false;\n\t};\n\n\tReactiveData.prototype.watchKey = function (row, data, key) {\n\t\tvar self = this,\n\t\t props = Object.getOwnPropertyDescriptor(data, key),\n\t\t value = data[key],\n\t\t version = this.currentVersion;\n\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: function set(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t}\n\n\t\t\t\tif (props.set) {\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function get() {\n\n\t\t\t\tif (props.get) {\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchRow = function (row) {\n\t\tvar data = row.getData();\n\n\t\tfor (var key in data) {\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue: data[key]\n\t\t\t});\n\t\t}\n\t};\n\n\tReactiveData.prototype.block = function () {\n\t\tthis.blocked = true;\n\t};\n\n\tReactiveData.prototype.unblock = function () {\n\t\tthis.blocked = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"reactiveData\", ReactiveData);\n\n\tvar ResizeColumns = function ResizeColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeColumns.prototype.initializeColumn = function (type, column, element) {\n\t\tvar self = this,\n\t\t variableHeight = false,\n\t\t mode = this.table.options.resizableColumns;\n\n\t\t//set column resize mode\n\t\tif (type === \"header\") {\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tcolumn.modules.resize = { variableHeight: variableHeight };\n\t\t}\n\n\t\tif (mode === true || mode == type) {\n\n\t\t\tvar handle = document.createElement('div');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\n\t\t\tvar prevHandle = document.createElement('div');\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\n\n\t\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar handleDown = function handleDown(e) {\n\t\t\t\tvar nearestColumn = column.getLastColumn();\n\n\t\t\t\tif (nearestColumn && self._checkResizability(nearestColumn)) {\n\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, { passive: true });\n\n\t\t\t//reszie column on double click\n\t\t\thandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar col = column.getLastColumn();\n\n\t\t\t\tif (col && self._checkResizability(col)) {\n\t\t\t\t\tcol.reinitializeWidth(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\t\t//resize column on double click\n\t\t\tprevHandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.appendChild(handle);\n\t\t\telement.appendChild(prevHandle);\n\t\t}\n\t};\n\n\tResizeColumns.prototype._checkResizability = function (column) {\n\t\treturn typeof column.definition.resizable != \"undefined\" ? column.definition.resizable : this.table.options.resizableColumns;\n\t};\n\n\tResizeColumns.prototype._mouseDown = function (e, column, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\t// self.table.columnManager.tempScrollBlock();\n\n\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\n\n\t\t\tif (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif (self.startColumn.modules.edit) {\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\n\t\t\tif (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (self.table.options.persistentLayout && self.table.modExists(\"persistence\", true)) {\n\t\t\t\tself.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tself.table.options.columnResized.call(self.table, column.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\tif (self.startColumn.modules.edit) {\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.startWidth = column.getWidth();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeColumns\", ResizeColumns);\n\tvar ResizeRows = function ResizeRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t rowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function handleDown(e) {\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown, { passive: true });\n\t\thandle.addEventListener(\"touchstart\", handleDown);\n\n\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif (prevRow) {\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t};\n\n\tResizeRows.prototype._mouseDown = function (e, row, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.table.options.rowResized.call(this.table, row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeRows\", ResizeRows);\n\tvar ResizeTable = function ResizeTable(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.binding = false;\n\t\tthis.observer = false;\n\t};\n\n\tResizeTable.prototype.initialize = function (row) {\n\t\tvar table = this.table,\n\t\t observer;\n\n\t\tif (typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\") {\n\t\t\tthis.observer = new ResizeObserver(function (entry) {\n\t\t\t\ttable.redraw();\n\t\t\t});\n\n\t\t\tthis.observer.observe(table.element);\n\t\t} else {\n\t\t\tthis.binding = function () {\n\t\t\t\ttable.redraw();\n\t\t\t};\n\n\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t}\n\t};\n\n\tResizeTable.prototype.clearBindings = function (row) {\n\t\tif (this.binding) {\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\n\t\tif (this.observer) {\n\t\t\tthis.observer.unobserve(this.table.element);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeTable\", ResizeTable);\n\tvar ResponsiveLayout = function ResponsiveLayout(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t};\n\n\t//generate resposive columns list\n\tResponsiveLayout.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//detemine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column, i) {\n\t\t\tif (column.modules.responsive) {\n\t\t\t\tif (column.modules.responsive.order && column.modules.responsive.visible) {\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif (!column.visible && self.mode === \"collapse\") {\n\t\t\t\t\t\tself.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort(function (a, b) {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || b.modules.responsive.index - a.modules.responsive.index;\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//define layout information\n\tResponsiveLayout.prototype.initializeColumn = function (column) {\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = { order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible: def.visible === false ? false : true };\n\t};\n\n\tResponsiveLayout.prototype.layoutRow = function (row) {\n\t\tvar rowEl = row.getElement(),\n\t\t el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\tif (!rowEl.classList.contains(\"tabulator-calcs\")) {\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement: el\n\t\t\t};\n\n\t\t\tif (!this.collapseStartOpen) {\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\n\t\t\trowEl.appendChild(el);\n\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t};\n\n\t//update column visibility\n\tResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {\n\t\tvar index;\n\t\tif (column.modules.responsive) {\n\t\t\tcolumn.modules.responsive.visible = visible;\n\t\t\tthis.initialize();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.hideColumn = function (column) {\n\t\tcolumn.hide(false, true);\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.showColumn = function (column) {\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//redraw columns to fit space\n\tResponsiveLayout.prototype.update = function () {\n\t\tvar self = this,\n\t\t working = true;\n\n\t\twhile (working) {\n\n\t\t\tvar width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\n\n\t\t\tvar diff = self.table.columnManager.element.clientWidth - width;\n\n\t\t\tif (diff < 0) {\n\t\t\t\t//table is too wide\n\t\t\t\tvar column = self.columns[self.index];\n\n\t\t\t\tif (column) {\n\t\t\t\t\tself.hideColumn(column);\n\t\t\t\t\tself.index++;\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//table has spare space\n\t\t\t\tvar _column = self.columns[self.index - 1];\n\n\t\t\t\tif (_column) {\n\t\t\t\t\tif (diff > 0) {\n\t\t\t\t\t\tif (diff >= _column.getWidth()) {\n\t\t\t\t\t\t\tself.showColumn(_column);\n\t\t\t\t\t\t\tself.index--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.table.rowManager.activeRowsCount) {\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedContent = function () {\n\t\tvar self = this,\n\t\t rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tself.generateCollapsedRowContent(row);\n\t\t});\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {\n\t\tvar el, contents;\n\n\t\tif (row.modules.responsiveLayout) {\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile (el.firstChild) {\n\t\t\t\tel.removeChild(el.firstChild);\n\t\t\t}contents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif (contents) {\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowData = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData(),\n\t\t output = [],\n\t\t mockCellComponent;\n\n\t\tthis.hiddenColumns.forEach(function (column) {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif (column.definition.title && column.field) {\n\t\t\t\tif (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData: function getData() {\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tResponsiveLayout.prototype.formatCollapsedData = function (data) {\n\t\tvar list = document.createElement(\"table\"),\n\t\t listContents = \"\";\n\n\t\tdata.forEach(function (item) {\n\t\t\tvar div = document.createElement(\"div\");\n\n\t\t\tif (item.value instanceof Node) {\n\t\t\t\tdiv.appendChild(item.value);\n\t\t\t\titem.value = div.innerHTML;\n\t\t\t}\n\n\t\t\tlistContents += \"<tr><td><strong>\" + item.title + \"</strong></td><td>\" + item.value + \"</td></tr>\";\n\t\t});\n\n\t\tlist.innerHTML = listContents;\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t};\n\n\tTabulator.prototype.registerModule(\"responsiveLayout\", ResponsiveLayout);\n\n\tvar SelectRow = function SelectRow(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t};\n\n\tSelectRow.prototype.clearSelectionData = function (silent) {\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\n\t\tif (!silent) {\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t};\n\n\tSelectRow.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t element = row.getElement();\n\n\t\t// trigger end of row selection\n\t\tvar endSelect = function endSelect() {\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\n\t\trow.modules.select = { selected: false };\n\n\t\t//set row selection class\n\t\tif (self.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\n\t\t\tif (self.table.options.selectable && self.table.options.selectable != \"highlight\") {\n\t\t\t\tif (self.table.options.selectableRangeMode === \"click\") {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\n\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\n\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\n\t\t\t\t\t\t\tif (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function (toggledRow) {\n\t\t\t\t\t\t\t\t\tif (toggledRow !== self.lastClickedRow) {\n\n\t\t\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true && !self.isRowSelected(row)) {\n\t\t\t\t\t\t\t\t\t\t\tif (self.selectedRows.length < self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.deselectRows();\n\n\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true) {\n\t\t\t\t\t\t\t\t\tif (toggledRows.length > self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.deselectRows();\n\t\t\t\t\t\t\tself.selectRows(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (!self.selecting) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\t\tself.selecting = true;\n\n\t\t\t\t\t\t\tself.selectPrev = [];\n\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\tif (self.selectPrev[1] == row) {\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t};\n\n\t//toggle row selection\n\tSelectRow.prototype.toggleRow = function (row) {\n\t\tif (this.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\tif (row.modules.select && row.modules.select.selected) {\n\t\t\t\tthis._deselectRow(row);\n\t\t\t} else {\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\t//select a number of rows\n\tSelectRow.prototype.selectRows = function (rows) {\n\t\tvar self = this;\n\n\t\tswitch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {\n\t\t\tcase \"undefined\":\n\t\t\t\tself.table.rowManager.rows.forEach(function (row) {\n\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\t\t\t\tif (rows === true) {\n\t\t\t\t\tself.table.rowManager.activeRows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tif (Array.isArray(rows)) {\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t} else {\n\t\t\t\t\tself._selectRow(rows, false, true);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//select an individual row\n\tSelectRow.prototype._selectRow = function (rowInfo, silent, force) {\n\t\tvar index;\n\n\t\t//handle max row count\n\t\tif (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {\n\t\t\tif (this.selectedRows.length >= this.table.options.selectable) {\n\t\t\t\tif (this.table.options.selectableRollingSelection) {\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\n\t\tif (row) {\n\t\t\tif (this.selectedRows.indexOf(row) == -1) {\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\n\t\t\t\tthis.selectedRows.push(row);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tthis.table.options.rowSelected.call(this.table, row.getComponent());\n\t\t\t\t\tthis._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.isRowSelected = function (row) {\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t};\n\n\t//deselect a number of rows\n\tSelectRow.prototype.deselectRows = function (rows) {\n\t\tvar self = this,\n\t\t rowCount;\n\n\t\tif (typeof rows == \"undefined\") {\n\n\t\t\trowCount = self.selectedRows.length;\n\n\t\t\tfor (var i = 0; i < rowCount; i++) {\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\n\t\t\t}\n\n\t\t\tself._rowSelectionChanged();\n\t\t} else {\n\t\t\tif (Array.isArray(rows)) {\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\tself._deselectRow(row, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t} else {\n\t\t\t\tself._deselectRow(rows);\n\t\t\t}\n\t\t}\n\t};\n\n\t//deselect an individual row\n\tSelectRow.prototype._deselectRow = function (rowInfo, silent) {\n\t\tvar self = this,\n\t\t row = self.table.rowManager.findRow(rowInfo),\n\t\t index;\n\n\t\tif (row) {\n\t\t\tindex = self.selectedRows.findIndex(function (selectedRow) {\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\n\t\t\t\tself.selectedRows.splice(index, 1);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.table.options.rowDeselected.call(this.table, row.getComponent());\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.getSelectedData = function () {\n\t\tvar data = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tSelectRow.prototype.getSelectedRows = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\trows.push(row.getComponent());\n\t\t});\n\n\t\treturn rows;\n\t};\n\n\tSelectRow.prototype._rowSelectionChanged = function () {\n\t\tthis.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());\n\t};\n\n\tTabulator.prototype.registerModule(\"selectRow\", SelectRow);\n\n\tvar Sort = function Sort(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t};\n\n\t//initialize column header for sorting\n\tSort.prototype.initializeColumn = function (column, content) {\n\t\tvar self = this,\n\t\t sorter = false,\n\t\t colEl,\n\t\t arrowEl;\n\n\t\tswitch (_typeof(column.definition.sorter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (self.sorters[column.definition.sorter]) {\n\t\t\t\t\tsorter = self.sorters[column.definition.sorter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter: sorter, dir: \"none\",\n\t\t\tparams: column.definition.sorterParams || {},\n\t\t\tstartingDir: column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate\n\t\t};\n\n\t\tif (column.definition.headerSort !== false) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-arrow\");\n\t\t\t//create sorter arrow\n\t\t\tcontent.appendChild(arrowEl);\n\n\t\t\t//sort on click\n\t\t\tcolEl.addEventListener(\"click\", function (e) {\n\t\t\t\tvar dir = \"\",\n\t\t\t\t sorters = [],\n\t\t\t\t match = false;\n\n\t\t\t\tif (column.modules.sort) {\n\t\t\t\t\tif (column.modules.sort.tristate) {\n\t\t\t\t\t\tif (column.modules.sort.dir == \"none\") {\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (column.modules.sort.dir == column.modules.sort.startingDir) {\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (column.modules.sort.dir) {\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = self.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex(function (sorter) {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match > -1) {\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tif (match != sorters.length - 1) {\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\tsorters.push({ column: column, dir: dir });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tself.setSort(sorters);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (dir == \"none\") {\n\t\t\t\t\t\t\tself.clear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tself.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.rowManager.sorterRefresh(!self.sortList.length);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t//check if the sorters have changed since last use\n\tSort.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//return current sorters\n\tSort.prototype.getSort = function () {\n\t\tvar self = this,\n\t\t sorters = [];\n\n\t\tself.sortList.forEach(function (item) {\n\t\t\tif (item.column) {\n\t\t\t\tsorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t};\n\n\t//change sort list and trigger sort\n\tSort.prototype.setSort = function (sortList, dir) {\n\t\tvar self = this,\n\t\t newSortList = [];\n\n\t\tif (!Array.isArray(sortList)) {\n\t\t\tsortList = [{ column: sortList, dir: dir }];\n\t\t}\n\n\t\tsortList.forEach(function (item) {\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif (column) {\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tif (this.table.options.persistentSort && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"sort\");\n\t\t}\n\t};\n\n\t//clear sorters\n\tSort.prototype.clear = function () {\n\t\tthis.setSort([]);\n\t};\n\n\t//find appropriate sorter for column\n\tSort.prototype.findSorter = function (column) {\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\t sorter = \"string\",\n\t\t field,\n\t\t value;\n\n\t\tif (row) {\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif (field) {\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.sorters[sorter];\n\t};\n\n\t//work through sort list sorting data\n\tSort.prototype.sort = function (data) {\n\t\tvar self = this,\n\t\t lastSort,\n\t\t sortList;\n\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;\n\n\t\tif (self.table.options.dataSorting) {\n\t\t\tself.table.options.dataSorting.call(self.table, self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif (!self.table.options.ajaxSorting) {\n\n\t\t\tsortList.forEach(function (item, i) {\n\n\t\t\t\tif (item.column && item.column.modules.sort) {\n\n\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\tif (!item.column.modules.sort.sorter) {\n\t\t\t\t\t\titem.column.modules.sort.sorter = self.findSorter(item.column);\n\t\t\t\t\t}\n\n\t\t\t\t\tself._sortItem(data, item.column, item.dir, sortList, i);\n\t\t\t\t}\n\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t} else {\n\t\t\tsortList.forEach(function (item, i) {\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.dataSorted) {\n\t\t\tself.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));\n\t\t}\n\t};\n\n\t//clear sort arrows on columns\n\tSort.prototype.clearColumnHeaders = function () {\n\t\tthis.table.columnManager.getRealColumns().forEach(function (column) {\n\t\t\tif (column.modules.sort) {\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//set the column header sort direction\n\tSort.prototype.setColumnHeader = function (column, dir) {\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\n\t};\n\n\t//sort each item in sort list\n\tSort.prototype._sortItem = function (data, column, dir, sortList, i) {\n\t\tvar self = this;\n\n\t\tvar params = typeof column.modules.sort.params === \"function\" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;\n\n\t\tdata.sort(function (a, b) {\n\n\t\t\tvar result = self._sortRow(a, b, column, dir, params);\n\n\t\t\t//if results match recurse through previous searchs to be sure\n\t\t\tif (result === 0 && i) {\n\t\t\t\tfor (var j = i - 1; j >= 0; j--) {\n\t\t\t\t\tresult = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);\n\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t};\n\n\t//process individual rows for a sort function on active data\n\tSort.prototype._sortRow = function (a, b, column, dir, params) {\n\t\tvar el1Comp, el2Comp, colComp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t};\n\n\t//default data sorters\n\tSort.prototype.sorters = {\n\n\t\t//sort numbers\n\t\tnumber: function number(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar decimal = params.decimalSeparator || \".\";\n\t\t\tvar thousand = params.thousandSeparator || \",\";\n\t\t\tvar emptyAlign = 0;\n\n\t\t\ta = parseFloat(String(a).split(thousand).join(\"\").split(decimal).join(\".\"));\n\t\t\tb = parseFloat(String(b).split(thousand).join(\"\").split(decimal).join(\".\"));\n\n\t\t\t//handle non numeric values\n\t\t\tif (isNaN(a)) {\n\t\t\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t\t\t} else if (isNaN(b)) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\treturn a - b;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort strings\n\t\tstring: function string(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\t\t\tvar locale;\n\n\t\t\t//handle empty values\n\t\t\tif (!a) {\n\t\t\t\temptyAlign = !b ? 0 : -1;\n\t\t\t} else if (!b) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\tswitch (_typeof(params.locale)) {\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tif (params.locale) {\n\t\t\t\t\t\t\tlocale = this.table.modules.localize.getLocale();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlocale = params.locale;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort date\n\t\tdate: function date(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"DD/MM/YYYY\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort hh:mm formatted times\n\t\ttime: function time(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"hh:mm\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort datetime\n\t\tdatetime: function datetime(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar format = params.format || \"DD/MM/YYYY hh:mm:ss\",\n\t\t\t alignEmptyValues = params.alignEmptyValues,\n\t\t\t emptyAlign = 0;\n\n\t\t\tif (typeof moment != \"undefined\") {\n\t\t\t\ta = moment(a, format);\n\t\t\t\tb = moment(b, format);\n\n\t\t\t\tif (!a.isValid()) {\n\t\t\t\t\temptyAlign = !b.isValid() ? 0 : -1;\n\t\t\t\t} else if (!b.isValid()) {\n\t\t\t\t\temptyAlign = 1;\n\t\t\t\t} else {\n\t\t\t\t\t//compare valid values\n\t\t\t\t\treturn a - b;\n\t\t\t\t}\n\n\t\t\t\t//fix empty values in position\n\t\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\t\temptyAlign *= -1;\n\t\t\t\t}\n\n\t\t\t\treturn emptyAlign;\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on moment.js\");\n\t\t\t}\n\t\t},\n\n\t\t//sort booleans\n\t\tboolean: function boolean(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\t\t\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\tarray: function array(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = 0;\n\t\t\tvar el2 = 0;\n\t\t\tvar type = params.type || \"length\";\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\tfunction calc(value) {\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\treturn value.length;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"sum\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"max\":\n\t\t\t\t\t\treturn Math.max.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"min\":\n\t\t\t\t\t\treturn Math.min.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"avg\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t}) / value.length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//handle non array values\n\t\t\tif (!Array.isArray(a)) {\n\t\t\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\n\t\t\t} else if (!Array.isArray(b)) {\n\t\t\t\talignEmptyValues = 1;\n\t\t\t} else {\n\n\t\t\t\t//compare valid values\n\t\t\t\tel1 = a ? calc(a) : 0;\n\t\t\t\tel2 = b ? calc(b) : 0;\n\n\t\t\t\treturn el1 - el2;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\texists: function exists(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\t\t\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort alpha numeric strings\n\t\talphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {\n\t\t\tvar a,\n\t\t\t b,\n\t\t\t a1,\n\t\t\t b1,\n\t\t\t i = 0,\n\t\t\t L,\n\t\t\t rx = /(\\d+)|(\\D+)/g,\n\t\t\t rd = /\\d/;\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\t//handle empty values\n\t\t\tif (!as && as !== 0) {\n\t\t\t\temptyAlign = !bs && bs !== 0 ? 0 : -1;\n\t\t\t} else if (!bs && bs !== 0) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\n\t\t\t\tif (isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\t\ta = String(as).toLowerCase();\n\t\t\t\tb = String(bs).toLowerCase();\n\t\t\t\tif (a === b) return 0;\n\t\t\t\tif (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\t\ta = a.match(rx);\n\t\t\t\tb = b.match(rx);\n\t\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\t\twhile (i < L) {\n\t\t\t\t\ta1 = a[i];\n\t\t\t\t\tb1 = b[i++];\n\t\t\t\t\tif (a1 !== b1) {\n\t\t\t\t\t\tif (isFinite(a1) && isFinite(b1)) {\n\t\t\t\t\t\t\tif (a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\t\tif (b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t\t} else return a1 > b1 ? 1 : -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn a.length > b.length;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"sort\", Sort);\n\n\tvar Validate = function Validate(table) {\n\t\tthis.table = table;\n\t};\n\n\t//validate\n\tValidate.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = [],\n\t\t validator;\n\n\t\tif (column.definition.validator) {\n\n\t\t\tif (Array.isArray(column.definition.validator)) {\n\t\t\t\tcolumn.definition.validator.forEach(function (item) {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\n\t\t\t\t\tif (validator) {\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\n\t\t\t\tif (validator) {\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t};\n\n\tValidate.prototype._extractValidator = function (value) {\n\t\tvar parts, type, params;\n\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tparts = value.split(\":\", 2);\n\t\t\t\ttype = parts.shift();\n\t\t\t\tparams = parts[0];\n\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\tbreak;\n\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tValidate.prototype._buildValidator = function (type, params) {\n\n\t\tvar func = typeof type == \"function\" ? type : this.validators[type];\n\n\t\tif (!func) {\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn {\n\t\t\t\ttype: typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc: func,\n\t\t\t\tparams: params\n\t\t\t};\n\t\t}\n\t};\n\n\tValidate.prototype.validate = function (validators, cell, value) {\n\t\tvar self = this,\n\t\t valid = [];\n\n\t\tif (validators) {\n\t\t\tvalidators.forEach(function (item) {\n\t\t\t\tif (!item.func.call(self, cell, value, item.params)) {\n\t\t\t\t\tvalid.push({\n\t\t\t\t\t\ttype: item.type,\n\t\t\t\t\t\tparameters: item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn valid.length ? valid : true;\n\t};\n\n\tValidate.prototype.validators = {\n\n\t\t//is integer\n\t\tinteger: function integer(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n\t\t},\n\n\t\t//is float\n\t\tfloat: function float(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\n\t\t},\n\n\t\t//must be a number\n\t\tnumeric: function numeric(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !isNaN(value);\n\t\t},\n\n\t\t//must be a string\n\t\tstring: function string(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn isNaN(value);\n\t\t},\n\n\t\t//maximum value\n\t\tmax: function max(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) <= parameters;\n\t\t},\n\n\t\t//minimum value\n\t\tmin: function min(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) >= parameters;\n\t\t},\n\n\t\t//minimum string length\n\t\tminLength: function minLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length >= parameters;\n\t\t},\n\n\t\t//maximum string length\n\t\tmaxLength: function maxLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length <= parameters;\n\t\t},\n\n\t\t//in provided value list\n\t\tin: function _in(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (typeof parameters == \"string\") {\n\t\t\t\tparameters = parameters.split(\"|\");\n\t\t\t}\n\n\t\t\treturn value === \"\" || parameters.indexOf(value) > -1;\n\t\t},\n\n\t\t//must match provided regex\n\t\tregex: function regex(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar reg = new RegExp(parameters);\n\n\t\t\treturn reg.test(value);\n\t\t},\n\n\t\t//value must be unique in this column\n\t\tunique: function unique(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar unique = true;\n\n\t\t\tvar cellData = cell.getData();\n\t\t\tvar column = cell.getColumn()._getSelf();\n\n\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\t\tvar data = row.getData();\n\n\t\t\t\tif (data !== cellData) {\n\t\t\t\t\tif (value == column.getFieldValue(data)) {\n\t\t\t\t\t\tunique = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn unique;\n\t\t},\n\n\t\t//must have a value\n\t\trequired: function required(cell, value, parameters) {\n\t\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"validate\", Validate);\n\n\treturn Tabulator;\n});","module.exports = require('./lib/autoBind');\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(require(\"dom-helpers/activeElement\"));\n\nvar _contains = _interopRequireDefault(require(\"dom-helpers/query/contains\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _listen = _interopRequireDefault(require(\"dom-helpers/events/listen\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _elementType = _interopRequireDefault(require(\"prop-types-extra/lib/elementType\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ModalManager = _interopRequireDefault(require(\"./ModalManager\"));\n\nvar _Portal = _interopRequireDefault(require(\"./Portal\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"./utils/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n newProps[prop] = props[prop];\n }\n });\n return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n exited: !_this.props.show\n };\n\n _this.onPortalRendered = function () {\n if (_this.props.onShow) {\n _this.props.onShow();\n } // autofocus after onShow, to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n _this.autoFocus();\n };\n\n _this.onShow = function () {\n var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(_this.enforceFocus);\n }, true);\n };\n\n _this.onHide = function () {\n _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.removeKeydownListener();\n\n _this.removeFocusListener();\n\n if (_this.props.restoreFocus) {\n _this.restoreLastFocus();\n }\n };\n\n _this.setDialogRef = function (ref) {\n _this.dialog = ref;\n };\n\n _this.setBackdropRef = function (ref) {\n _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n };\n\n _this.handleHidden = function () {\n _this.setState({\n exited: true\n });\n\n _this.onHide();\n\n if (_this.props.onExited) {\n var _this$props;\n\n (_this$props = _this.props).onExited.apply(_this$props, arguments);\n }\n };\n\n _this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this.props.onBackdropClick) {\n _this.props.onBackdropClick(e);\n }\n\n if (_this.props.backdrop === true) {\n _this.props.onHide();\n }\n };\n\n _this.handleDocumentKeyDown = function (e) {\n if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n if (_this.props.onEscapeKeyDown) {\n _this.props.onEscapeKeyDown(e);\n }\n\n _this.props.onHide();\n }\n };\n\n _this.enforceFocus = function () {\n if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n return;\n }\n\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n _this.dialog.focus();\n }\n };\n\n _this.renderBackdrop = function () {\n var _this$props2 = _this.props,\n renderBackdrop = _this$props2.renderBackdrop,\n Transition = _this$props2.backdropTransition;\n var backdrop = renderBackdrop({\n ref: _this.setBackdropRef,\n onClick: _this.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react.default.createElement(Transition, {\n appear: true,\n in: _this.props.show\n }, backdrop);\n }\n\n return backdrop;\n };\n\n return _this;\n }\n\n Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n if (nextProps.show) {\n return {\n exited: false\n };\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n return {\n exited: true\n };\n }\n\n return null;\n };\n\n var _proto = Modal.prototype;\n\n _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n if (_inDOM.default && !prevProps.show && this.props.show) {\n this.lastFocus = (0, _activeElement.default)();\n }\n\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this$props3 = this.props,\n show = _this$props3.show,\n transition = _this$props3.transition;\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n _proto.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) return;\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n this.dialog.focus();\n }\n };\n\n _proto.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n _proto.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n show = _this$props4.show,\n container = _this$props4.container,\n children = _this$props4.children,\n renderDialog = _this$props4.renderDialog,\n _this$props4$role = _this$props4.role,\n role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n Transition = _this$props4.transition,\n backdrop = _this$props4.backdrop,\n className = _this$props4.className,\n style = _this$props4.style,\n onExit = _this$props4.onExit,\n onExiting = _this$props4.onExiting,\n onEnter = _this$props4.onEnter,\n onEntering = _this$props4.onEntering,\n onEntered = _this$props4.onEntered,\n props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n if (!(show || Transition && !this.state.exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: this.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, omitProps(props, Modal.propTypes), {\n style: style,\n className: className,\n tabIndex: '-1'\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = _react.default.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n in: show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n return _react.default.createElement(_Portal.default, {\n container: container,\n onRendered: this.onPortalRendered\n }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n };\n\n return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: _propTypes.default.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: _propTypes.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes.default.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes.default.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: _elementType.default,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n show: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react.default.createElement(\"div\", props);\n }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction onEnd(node, handler, duration) {\n var fakeEvent = {\n target: node,\n currentTarget: node\n },\n backup;\n if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n if (_properties.default.end) {\n node.addEventListener(_properties.default.end, done, false);\n backup = setTimeout(function () {\n return done(fakeEvent);\n }, (duration || 100) * 1.5);\n } else setTimeout(done.bind(null, fakeEvent), 0);\n\n function done(event) {\n if (event.target !== event.currentTarget) return;\n clearTimeout(backup);\n event.target.removeEventListener(_properties.default.end, done);\n handler.call(this);\n }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n var str = (0, _style.default)(node, _properties.default.duration),\n mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _forwardRef = _interopRequireDefault(require(\"./forwardRef\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar getDisplayName = function getDisplayName(Component) {\n var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n var maybeArrayOfConsumers = _ref.consumers,\n mapToProps = _ref.mapToProps,\n displayName = _ref.displayName,\n _ref$forwardRefAs = _ref.forwardRefAs,\n forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n var consumers = maybeArrayOfConsumers;\n\n if (!Array.isArray(maybeArrayOfConsumers)) {\n consumers = [maybeArrayOfConsumers];\n }\n\n var SingleConsumer = ensureConsumer(consumers[0]);\n\n function singleRender(props, ref) {\n var _extends2;\n\n var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n return _react.default.createElement(SingleConsumer, null, function (value) {\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n });\n }\n\n function multiRender(props, ref) {\n var _extends3;\n\n var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n return consumers.reduceRight(function (inner, Context) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var Consumer = ensureConsumer(Context);\n return _react.default.createElement(Consumer, null, function (value) {\n return inner.apply(void 0, args.concat([value]));\n });\n };\n }, function () {\n for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n contexts[_key2] = arguments[_key2];\n }\n\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n })();\n }\n\n var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n return (0, _forwardRef.default)(contextTransform, {\n displayName: displayName || getDisplayName(Component)\n });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n return $mapContextToProps({\n consumers: maybeOpts,\n mapToProps: mapToProps\n }, Component);\n}","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};\nfunction E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}E.prototype.isReactComponent={};E.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?B(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}var H=G.prototype=new F;\nH.constructor=G;k(H,E.prototype);H.isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1<f){for(var l=Array(f),m=0;m<f;m++)l[m]=arguments[m+2];e.children=l}if(a&&a.defaultProps)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof:p,type:a,key:g,ref:h,props:e,_owner:J.current}}\nfunction da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var O=/\\/+/g,P=[];function Q(a,b,d,c){if(P.length){var e=P.pop();e.result=a;e.keyPrefix=b;e.func=d;e.context=c;e.count=0;return e}return{result:a,keyPrefix:b,func:d,context:c,count:0}}\nfunction R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||\"object\"!==typeof a?f=null:(f=A&&a[A]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),h=\n0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else\"object\"===e&&(d=\"\"+a,B(\"31\",\"[object Object]\"===d?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":d,\"\"));return g}function U(a,b,d){return null==a?0:S(a,\"\",b,d)}function T(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}\nfunction fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(O,\"$&/\")+\"/\")+d)),c.push(a))}function V(a,b,d,c,e){var g=\"\";null!=d&&(g=(\"\"+d).replace(O,\"$&/\")+\"/\");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B(\"321\"):void 0;return a}\nvar X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B(\"143\");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,\n_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,\nb,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B(\"267\",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=\nb){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=\"\"+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:\"16.8.6\",\nunstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;d<b;d++)c+=\"&args[]=\"+encodeURIComponent(arguments[d+1]);ba(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",c)}aa?void 0:x(\"227\");function ca(a,b,c,d,e,f,g,h,l){var k=Array.prototype.slice.call(arguments,3);try{b.apply(c,k)}catch(m){this.onError(m)}}\nvar da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,l){da=!1;ea=null;ca.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,l){ja.apply(this,arguments);if(da){if(da){var k=ea;da=!1;ea=null}else x(\"198\"),k=void 0;fa||(fa=!0,ha=k)}}var la=null,ma={};\nfunction na(){if(la)for(var a in ma){var b=ma[a],c=la.indexOf(a);-1<c?void 0:x(\"96\",a);if(!oa[c]){b.extractEvents?void 0:x(\"97\",a);oa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;pa.hasOwnProperty(h)?x(\"99\",h):void 0;pa[h]=f;var l=f.phasedRegistrationNames;if(l){for(e in l)l.hasOwnProperty(e)&&qa(l[e],g,h);e=!0}else f.registrationName?(qa(f.registrationName,g,h),e=!0):e=!1;e?void 0:x(\"98\",d,a)}}}}\nfunction qa(a,b,c){ra[a]?x(\"100\",a):void 0;ra[a]=b;sa[a]=b.eventTypes[c].dependencies}var oa=[],pa={},ra={},sa={},ta=null,ua=null,va=null;function wa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=va(c);ka(d,b,void 0,a);a.currentTarget=null}function xa(a,b){null==b?x(\"30\"):void 0;if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}\nfunction ya(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var za=null;function Aa(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)wa(a,b[d],c[d]);else b&&wa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}\nvar Ba={injectEventPluginOrder:function(a){la?x(\"101\"):void 0;la=Array.prototype.slice.call(a);na()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];ma.hasOwnProperty(c)&&ma[c]===d||(ma[c]?x(\"102\",c):void 0,ma[c]=d,b=!0)}b&&na()}};\nfunction Ca(a,b){var c=a.stateNode;if(!c)return null;var d=ta(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;c&&\"function\"!==typeof c?x(\"231\",b,typeof c):void 0;\nreturn c}function Da(a){null!==a&&(za=xa(za,a));a=za;za=null;if(a&&(ya(a,Aa),za?x(\"95\"):void 0,fa))throw a=ha,fa=!1,ha=null,a;}var Ea=Math.random().toString(36).slice(2),Fa=\"__reactInternalInstance$\"+Ea,Ga=\"__reactEventHandlers$\"+Ea;function Ha(a){if(a[Fa])return a[Fa];for(;!a[Fa];)if(a.parentNode)a=a.parentNode;else return null;a=a[Fa];return 5===a.tag||6===a.tag?a:null}function Ia(a){a=a[Fa];return!a||5!==a.tag&&6!==a.tag?null:a}\nfunction Ja(a){if(5===a.tag||6===a.tag)return a.stateNode;x(\"33\")}function Ka(a){return a[Ga]||null}function La(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function Ma(a,b,c){if(b=Ca(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a)}\nfunction Na(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=La(b);for(b=c.length;0<b--;)Ma(c[b],\"captured\",a);for(b=0;b<c.length;b++)Ma(c[b],\"bubbled\",a)}}function Oa(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ca(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a))}function Pa(a){a&&a.dispatchConfig.registrationName&&Oa(a._targetInst,null,a)}\nfunction Qa(a){ya(a,Na)}var Ra=!(\"undefined\"===typeof window||!window.document||!window.document.createElement);function Sa(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ta={animationend:Sa(\"Animation\",\"AnimationEnd\"),animationiteration:Sa(\"Animation\",\"AnimationIteration\"),animationstart:Sa(\"Animation\",\"AnimationStart\"),transitionend:Sa(\"Transition\",\"TransitionEnd\")},Ua={},Va={};\nRa&&(Va=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ta.animationend.animation,delete Ta.animationiteration.animation,delete Ta.animationstart.animation),\"TransitionEvent\"in window||delete Ta.transitionend.transition);function Wa(a){if(Ua[a])return Ua[a];if(!Ta[a])return a;var b=Ta[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Va)return Ua[a]=b[c];return a}\nvar Xa=Wa(\"animationend\"),Ya=Wa(\"animationiteration\"),Za=Wa(\"animationstart\"),$a=Wa(\"transitionend\"),ab=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bb=null,cb=null,db=null;\nfunction eb(){if(db)return db;var a,b=cb,c=b.length,d,e=\"value\"in bb?bb.value:bb.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return db=e.slice(a,1<d?1-d:void 0)}function fb(){return!0}function gb(){return!1}\nfunction y(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?fb:gb;this.isPropagationStopped=gb;return this}\nn(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=fb)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=fb)},persist:function(){this.isPersistent=fb},isPersistent:gb,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=gb;this._dispatchInstances=this._dispatchListeners=null}});y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\ny.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;hb(c);return c};hb(y);function ib(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function jb(a){a instanceof this?void 0:x(\"279\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8<ob&&11>=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return qb&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar zb={eventTypes:sb,extractEvents:function(a,b,c,d){var e=void 0;var f=void 0;if(nb)b:{switch(a){case \"compositionstart\":e=sb.compositionStart;break b;case \"compositionend\":e=sb.compositionEnd;break b;case \"compositionupdate\":e=sb.compositionUpdate;break b}e=void 0}else wb?ub(a,c)&&(e=sb.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(e=sb.compositionStart);e?(qb&&\"ko\"!==c.locale&&(wb||e!==sb.compositionStart?e===sb.compositionEnd&&wb&&(f=eb()):(bb=d,cb=\"value\"in bb?bb.value:bb.textContent,wb=\n!0)),e=kb.getPooled(e,b,c,d),f?e.data=f:(f=vb(c),null!==f&&(e.data=f)),Qa(e),f=e):f=null;(a=pb?xb(a,c):yb(a,c))?(b=lb.getPooled(sb.beforeInput,b,c,d),b.data=a,Qa(b)):b=null;return null===f?b:null===b?f:[f,b]}},Ab=null,Bb=null,Cb=null;function Db(a){if(a=ua(a)){\"function\"!==typeof Ab?x(\"280\"):void 0;var b=ta(a.stateNode);Ab(a.stateNode,a.type,b)}}function Eb(a){Bb?Cb?Cb.push(a):Cb=[a]:Bb=a}function Fb(){if(Bb){var a=Bb,b=Cb;Cb=Bb=null;Db(a);if(b)for(a=0;a<b.length;a++)Db(b[a])}}\nfunction Gb(a,b){return a(b)}function Hb(a,b,c){return a(b,c)}function Ib(){}var Jb=!1;function Kb(a,b){if(Jb)return a(b);Jb=!0;try{return Gb(a,b)}finally{if(Jb=!1,null!==Bb||null!==Cb)Ib(),Fb()}}var Lb={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Mb(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Lb[a.type]:\"textarea\"===b?!0:!1}\nfunction Nb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function Ob(a){if(!Ra)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}function Pb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Qb(a){var b=Pb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Rb(a){a._valueTracker||(a._valueTracker=Qb(a))}function Sb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Pb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}var Tb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Tb.hasOwnProperty(\"ReactCurrentDispatcher\")||(Tb.ReactCurrentDispatcher={current:null});\nvar Ub=/^(.*)[\\\\\\/]/,z=\"function\"===typeof Symbol&&Symbol.for,Vb=z?Symbol.for(\"react.element\"):60103,Wb=z?Symbol.for(\"react.portal\"):60106,Xb=z?Symbol.for(\"react.fragment\"):60107,Yb=z?Symbol.for(\"react.strict_mode\"):60108,Zb=z?Symbol.for(\"react.profiler\"):60114,$b=z?Symbol.for(\"react.provider\"):60109,ac=z?Symbol.for(\"react.context\"):60110,bc=z?Symbol.for(\"react.concurrent_mode\"):60111,cc=z?Symbol.for(\"react.forward_ref\"):60112,dc=z?Symbol.for(\"react.suspense\"):60113,ec=z?Symbol.for(\"react.memo\"):\n60115,fc=z?Symbol.for(\"react.lazy\"):60116,gc=\"function\"===typeof Symbol&&Symbol.iterator;function hc(a){if(null===a||\"object\"!==typeof a)return null;a=gc&&a[gc]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction ic(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case bc:return\"ConcurrentMode\";case Xb:return\"Fragment\";case Wb:return\"Portal\";case Zb:return\"Profiler\";case Yb:return\"StrictMode\";case dc:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ac:return\"Context.Consumer\";case $b:return\"Context.Provider\";case cc:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\n\")\":\"ForwardRef\");case ec:return ic(a.type);case fc:if(a=1===a._status?a._result:null)return ic(a)}return null}function jc(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=ic(a.type);c=null;d&&(c=ic(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ub,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nvar kc=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,lc=Object.prototype.hasOwnProperty,mc={},nc={};\nfunction oc(a){if(lc.call(nc,a))return!0;if(lc.call(mc,a))return!1;if(kc.test(a))return nc[a]=!0;mc[a]=!0;return!1}function pc(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qc(a,b,c,d){if(null===b||\"undefined\"===typeof b||pc(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(qc(b,c,e,d)&&(c=null),d||null===e?oc(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction uc(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function vc(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction wc(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=uc(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function xc(a,b){b=b.checked;null!=b&&tc(a,\"checked\",b,!1)}\nfunction yc(a,b){xc(a,b);var c=uc(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?zc(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&zc(a,b.type,uc(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Ac(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction zc(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var Bc={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function Cc(a,b,c){a=y.getPooled(Bc.change,a,b,c);a.type=\"change\";Eb(c);Qa(a);return a}var Dc=null,Ec=null;function Fc(a){Da(a)}\nfunction Gc(a){var b=Ja(a);if(Sb(b))return a}function Hc(a,b){if(\"change\"===a)return b}var Ic=!1;Ra&&(Ic=Ob(\"input\")&&(!document.documentMode||9<document.documentMode));function Jc(){Dc&&(Dc.detachEvent(\"onpropertychange\",Kc),Ec=Dc=null)}function Kc(a){\"value\"===a.propertyName&&Gc(Ec)&&(a=Cc(Ec,a,Nb(a)),Kb(Fc,a))}function Lc(a,b,c){\"focus\"===a?(Jc(),Dc=b,Ec=c,Dc.attachEvent(\"onpropertychange\",Kc)):\"blur\"===a&&Jc()}function Mc(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Gc(Ec)}\nfunction Nc(a,b){if(\"click\"===a)return Gc(b)}function Oc(a,b){if(\"input\"===a||\"change\"===a)return Gc(b)}\nvar Pc={eventTypes:Bc,_isInputEventSupported:Ic,extractEvents:function(a,b,c,d){var e=b?Ja(b):window,f=void 0,g=void 0,h=e.nodeName&&e.nodeName.toLowerCase();\"select\"===h||\"input\"===h&&\"file\"===e.type?f=Hc:Mb(e)?Ic?f=Oc:(f=Mc,g=Lc):(h=e.nodeName)&&\"input\"===h.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(f=Nc);if(f&&(f=f(a,b)))return Cc(f,c,d);g&&g(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&zc(e,\"number\",e.value)}},Qc=y.extend({view:null,detail:null}),Rc={Alt:\"altKey\",\nControl:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Rc[a])?!!b[a]:!1}function Tc(){return Sc}\nvar Uc=0,Vc=0,Wc=!1,Xc=!1,Yc=Qc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Tc,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Uc;Uc=a.screenX;return Wc?\"mousemove\"===a.type?a.screenX-b:0:(Wc=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Vc;Vc=a.screenY;return Xc?\"mousemove\"===a.type?a.screenY-b:0:(Xc=!0,0)}}),Zc=Yc.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),$c={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},ad={eventTypes:$c,extractEvents:function(a,b,c,d){var e=\"mouseover\"===a||\"pointerover\"===a,f=\"mouseout\"===a||\"pointerout\"===a;if(e&&(c.relatedTarget||c.fromElement)||!f&&!e)return null;e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;f?(f=b,b=(b=c.relatedTarget||c.toElement)?Ha(b):null):f=null;if(f===b)return null;var g=void 0,h=void 0,l=void 0,k=void 0;if(\"mouseout\"===a||\"mouseover\"===a)g=Yc,h=$c.mouseLeave,l=$c.mouseEnter,k=\"mouse\";\nelse if(\"pointerout\"===a||\"pointerover\"===a)g=Zc,h=$c.pointerLeave,l=$c.pointerEnter,k=\"pointer\";var m=null==f?e:Ja(f);e=null==b?e:Ja(b);a=g.getPooled(h,f,c,d);a.type=k+\"leave\";a.target=m;a.relatedTarget=e;c=g.getPooled(l,b,c,d);c.type=k+\"enter\";c.target=e;c.relatedTarget=m;d=b;if(f&&d)a:{b=f;e=d;k=0;for(g=b;g;g=La(g))k++;g=0;for(l=e;l;l=La(l))g++;for(;0<k-g;)b=La(b),k--;for(;0<g-k;)e=La(e),g--;for(;k--;){if(b===e||b===e.alternate)break a;b=La(b);e=La(e)}b=null}else b=null;e=b;for(b=[];f&&f!==e;){k=\nf.alternate;if(null!==k&&k===e)break;b.push(f);f=La(f)}for(f=[];d&&d!==e;){k=d.alternate;if(null!==k&&k===e)break;f.push(d);d=La(d)}for(d=0;d<b.length;d++)Oa(b[d],\"bubbled\",a);for(d=f.length;0<d--;)Oa(f[d],\"captured\",c);return[a,c]}};function bd(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var cd=Object.prototype.hasOwnProperty;\nfunction dd(a,b){if(bd(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!cd.call(b,c[d])||!bd(a[c[d]],b[c[d]]))return!1;return!0}function ed(a){var b=a;if(a.alternate)for(;b.return;)b=b.return;else{if(0!==(b.effectTag&2))return 1;for(;b.return;)if(b=b.return,0!==(b.effectTag&2))return 1}return 3===b.tag?2:3}function fd(a){2!==ed(a)?x(\"188\"):void 0}\nfunction gd(a){var b=a.alternate;if(!b)return b=ed(a),3===b?x(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c.return,f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return fd(e),a;if(g===d)return fd(e),b;g=g.sibling}x(\"188\")}if(c.return!==d.return)c=e,d=f;else{g=!1;for(var h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:x(\"189\")}}c.alternate!==d?x(\"190\"):void 0}3!==c.tag?x(\"188\"):void 0;return c.stateNode.current===c?a:b}function hd(a){a=gd(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar id=y.extend({animationName:null,elapsedTime:null,pseudoElement:null}),jd=y.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),kd=Qc.extend({relatedTarget:null});function ld(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar md={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},od=Qc.extend({key:function(a){if(a.key){var b=md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=ld(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?nd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Tc,charCode:function(a){return\"keypress\"===\na.type?ld(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?ld(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),pd=Yc.extend({dataTransfer:null}),qd=Qc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Tc}),rd=y.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),sd=Yc.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"abort\",\"abort\"],[Xa,\"animationEnd\"],[Ya,\"animationIteration\"],[Za,\"animationStart\"],[\"canplay\",\"canPlay\"],[\"canplaythrough\",\"canPlayThrough\"],[\"drag\",\"drag\"],[\"dragenter\",\"dragEnter\"],[\"dragexit\",\"dragExit\"],[\"dragleave\",\"dragLeave\"],[\"dragover\",\"dragOver\"],[\"durationchange\",\"durationChange\"],[\"emptied\",\"emptied\"],[\"encrypted\",\"encrypted\"],\n[\"ended\",\"ended\"],[\"error\",\"error\"],[\"gotpointercapture\",\"gotPointerCapture\"],[\"load\",\"load\"],[\"loadeddata\",\"loadedData\"],[\"loadedmetadata\",\"loadedMetadata\"],[\"loadstart\",\"loadStart\"],[\"lostpointercapture\",\"lostPointerCapture\"],[\"mousemove\",\"mouseMove\"],[\"mouseout\",\"mouseOut\"],[\"mouseover\",\"mouseOver\"],[\"playing\",\"playing\"],[\"pointermove\",\"pointerMove\"],[\"pointerout\",\"pointerOut\"],[\"pointerover\",\"pointerOver\"],[\"progress\",\"progress\"],[\"scroll\",\"scroll\"],[\"seeking\",\"seeking\"],[\"stalled\",\"stalled\"],\n[\"suspend\",\"suspend\"],[\"timeupdate\",\"timeUpdate\"],[\"toggle\",\"toggle\"],[\"touchmove\",\"touchMove\"],[$a,\"transitionEnd\"],[\"waiting\",\"waiting\"],[\"wheel\",\"wheel\"]],ud={},vd={};function wd(a,b){var c=a[0];a=a[1];var d=\"on\"+(a[0].toUpperCase()+a.slice(1));b={phasedRegistrationNames:{bubbled:d,captured:d+\"Capture\"},dependencies:[c],isInteractive:b};ud[a]=b;vd[c]=b}\n[[\"blur\",\"blur\"],[\"cancel\",\"cancel\"],[\"click\",\"click\"],[\"close\",\"close\"],[\"contextmenu\",\"contextMenu\"],[\"copy\",\"copy\"],[\"cut\",\"cut\"],[\"auxclick\",\"auxClick\"],[\"dblclick\",\"doubleClick\"],[\"dragend\",\"dragEnd\"],[\"dragstart\",\"dragStart\"],[\"drop\",\"drop\"],[\"focus\",\"focus\"],[\"input\",\"input\"],[\"invalid\",\"invalid\"],[\"keydown\",\"keyDown\"],[\"keypress\",\"keyPress\"],[\"keyup\",\"keyUp\"],[\"mousedown\",\"mouseDown\"],[\"mouseup\",\"mouseUp\"],[\"paste\",\"paste\"],[\"pause\",\"pause\"],[\"play\",\"play\"],[\"pointercancel\",\"pointerCancel\"],\n[\"pointerdown\",\"pointerDown\"],[\"pointerup\",\"pointerUp\"],[\"ratechange\",\"rateChange\"],[\"reset\",\"reset\"],[\"seeked\",\"seeked\"],[\"submit\",\"submit\"],[\"touchcancel\",\"touchCancel\"],[\"touchend\",\"touchEnd\"],[\"touchstart\",\"touchStart\"],[\"volumechange\",\"volumeChange\"]].forEach(function(a){wd(a,!0)});td.forEach(function(a){wd(a,!1)});\nvar xd={eventTypes:ud,isInteractiveTopLevelEventType:function(a){a=vd[a];return void 0!==a&&!0===a.isInteractive},extractEvents:function(a,b,c,d){var e=vd[a];if(!e)return null;switch(a){case \"keypress\":if(0===ld(c))return null;case \"keydown\":case \"keyup\":a=od;break;case \"blur\":case \"focus\":a=kd;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=Yc;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=\npd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=qd;break;case Xa:case Ya:case Za:a=id;break;case $a:a=rd;break;case \"scroll\":a=Qc;break;case \"wheel\":a=sd;break;case \"copy\":case \"cut\":case \"paste\":a=jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=Zc;break;default:a=y}b=a.getPooled(e,b,c,d);Qa(b);return b}},yd=xd.isInteractiveTopLevelEventType,\nzd=[];function Ad(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=Ha(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Nb(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<oa.length;h++){var l=oa[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=xa(g,l))}Da(g)}}var Bd=!0;\nfunction E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!1)}function Ed(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!0)}function Cd(a,b){Hb(Dd,a,b)}\nfunction Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||\"number\"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Rd=Ra&&\"documentMode\"in document&&11>=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g<f.length;g++){var h=f[g];if(!e.hasOwnProperty(h)||!e[h]){e=!1;break a}}e=!0}f=!e}if(f)return null;e=b?Ja(b):window;switch(a){case \"focus\":if(Mb(e)||\"true\"===e.contentEditable)Td=e,Ud=b,Vd=null;break;case \"blur\":Vd=Ud=Td=null;break;case \"mousedown\":Wd=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return Wd=!1,Xd(c,d);case \"selectionchange\":if(Rd)break;\ncase \"keydown\":case \"keyup\":return Xd(c,d)}return null}};Ba.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ta=Ka;ua=Ia;va=Ja;Ba.injectEventPluginsByName({SimpleEventPlugin:xd,EnterLeaveEventPlugin:ad,ChangeEventPlugin:Pc,SelectEventPlugin:Yd,BeforeInputEventPlugin:zb});function Zd(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction $d(a,b){a=n({children:void 0},b);if(b=Zd(b.children))a.children=b;return a}function ae(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+uc(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction be(a,b){null!=b.dangerouslySetInnerHTML?x(\"91\"):void 0;return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function ce(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?x(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"<svg>\"+b+\"</svg>\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case \"scroll\":Ed(\"scroll\",a);break;case \"focus\":case \"blur\":Ed(\"focus\",a);Ed(\"blur\",a);c.blur=!0;c.focus=!0;break;case \"cancel\":case \"close\":Ob(e)&&Ed(e,a);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ab.indexOf(e)&&E(e,a)}c[e]=!0}}}function te(){}var ue=null,ve=null;\nfunction we(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}function xe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar ye=\"function\"===typeof setTimeout?setTimeout:void 0,ze=\"function\"===typeof clearTimeout?clearTimeout:void 0,Ae=r.unstable_scheduleCallback,Be=r.unstable_cancelCallback;\nfunction Ce(a,b,c,d,e){a[Ga]=e;\"input\"===c&&\"radio\"===e.type&&null!=e.name&&xc(a,e);re(c,d);d=re(c,e);for(var f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];\"style\"===g?oe(a,h):\"dangerouslySetInnerHTML\"===g?je(a,h):\"children\"===g?ke(a,h):tc(a,g,h,d)}switch(c){case \"input\":yc(a,e);break;case \"textarea\":de(a,e);break;case \"select\":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?ae(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?ae(a,!!e.multiple,e.defaultValue,\n!0):ae(a,!!e.multiple,e.multiple?[]:\"\",!1))}}function De(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Ee(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}new Set;var Fe=[],Ge=-1;function F(a){0>Ge||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:c<b?a.earliestPendingTime=b:a.latestPendingTime>b&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{b<a.latestPingedTime&&(a.latestPingedTime=0);var c=a.latestPendingTime;0!==c&&(c>b?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):b<a.latestSuspendedTime?(a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0,cf(a,b)):\nb>c&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:c<b?a.earliestSuspendedTime=b:d>b&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||d<a)&&(e=d);a=e;0!==a&&c>a&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=af(c,a.mode,d),b.return=a,b;b=e(b,c,d);b.return=a;return b}function l(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props,d),d.ref=Af(a,b,c),d.return=a,d;d=Ye(c.type,c.key,c.props,null,a.mode,d);d.ref=Af(a,b,c);d.return=a;return d}function k(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=bf(c,a.mode,d),b.return=a,b;b=e(b,c.children||[],d);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ze(c,a.mode,d,f),b.return=a,b;b=e(b,c,d);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=af(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Vb:return c=Ye(b.type,b.key,b.props,null,a.mode,c),c.ref=Af(a,null,b),c.return=a,c;case Wb:return b=bf(b,a.mode,c),b.return=a,b}if(zf(b)||\nhc(b))return b=Ze(b,a.mode,c,null),b.return=a,b;Bf(a,b)}return null}function t(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Vb:return c.key===e?c.type===Xb?m(a,b,c.props.children,d,e):l(a,b,c,d):null;case Wb:return c.key===e?k(a,b,c,d):null}if(zf(c)||hc(c))return null!==e?null:m(a,b,c,d,null);Bf(a,c)}return null}function A(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Vb:return a=a.get(null===d.key?c:d.key)||null,d.type===Xb?m(b,a,d.props.children,e,d.key):l(b,a,d,e);case Wb:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e)}if(zf(d)||hc(d))return a=a.get(c)||null,m(b,a,d,e,null);Bf(b,d)}return null}function v(e,g,h,k){for(var l=null,m=null,q=g,u=g=0,B=null;null!==q&&u<h.length;u++){q.index>u?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;u<h.length;u++)if(q=p(e,h[u],k))g=f(q,g,u),null===m?l=q:m.sibling=q,m=q;return l}for(q=d(e,q);u<h.length;u++)if(B=A(q,e,u,h[u],k))a&&null!==B.alternate&&q.delete(null===B.key?u:B.key),g=f(B,g,u),null===m?l=B:m.sibling=B,m=B;a&&q.forEach(function(a){return b(e,a)});return l}function R(e,g,h,k){var l=hc(h);\"function\"!==typeof l?x(\"150\"):void 0;h=l.call(h);null==h?x(\"151\"):void 0;\nfor(var m=l=null,q=g,u=g=0,B=null,w=h.next();null!==q&&!w.done;u++,w=h.next()){q.index>u?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}\nfunction hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x(\"300\"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}\nfunction mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x(\"310\"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return\"function\"===typeof b?b(a):b}\nfunction pg(a){var b=ng(),c=b.queue;null===c?x(\"311\"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==\nd){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:dd,c(e,d)&&a.ref===b.ref))return Jg(a,b,f);b.effectTag|=1;a=Xe(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}\nfunction Lg(a,b,c,d,e,f){return null!==a&&dd(a.memoizedProps,d)&&a.ref===b.ref&&(qg=!1,e<f)?Jg(a,b,f):Mg(a,b,c,d,f)}function Ng(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function Mg(a,b,c,d,e){var f=J(c)?Ie:H.current;f=Je(b,f);Ig(b,e);c=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,c,e);return b.child}\nfunction Og(a,b,c,d,e){if(J(c)){var f=!0;Oe(b)}else f=!1;Ig(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),vf(b,c,d,e),xf(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var l=g.context,k=c.contextType;\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k);Pg=!1;var t=b.memoizedState;l=g.state=t;var A=b.updateQueue;null!==A&&(yf(b,A,d,g,e),l=b.memoizedState);h!==d||t!==l||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),l=b.memoizedState),(h=Pg||uf(b,c,h,d,t,l,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&\ng.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=l),g.props=d,g.state=l,g.context=k,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,h=b.memoizedProps,g.props=b.type===b.elementType?h:L(b.type,h),l=g.context,k=c.contextType,\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k)),m=c.getDerivedStateFromProps,(p=\"function\"===\ntypeof m||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k),Pg=!1,l=b.memoizedState,t=g.state=l,A=b.updateQueue,null!==A&&(yf(b,A,d,g,e),t=b.memoizedState),h!==d||l!==t||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),t=b.memoizedState),(m=Pg||uf(b,c,h,d,l,t,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===\ntypeof g.componentWillUpdate&&g.componentWillUpdate(d,t,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,t,k)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=\nt),g.props=d,g.state=t,g.context=k,d=m):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),d=!1);return Qg(a,b,c,d,f,e)}\nfunction Qg(a,b,c,d,e,f){Ng(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Pe(b,c,!1),Jg(a,b,f);d=b.stateNode;Gg.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Df(b,a.child,null,f),b.child=Df(b,null,h,f)):S(a,b,h,f);b.memoizedState=d.state;e&&Pe(b,c,!0);return b.child}function Rg(a){var b=a.stateNode;b.pendingContext?Me(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Me(a,b.context,!1);Jf(a,b.containerInfo)}\nfunction Sg(a,b,c){var d=b.mode,e=b.pendingProps,f=b.memoizedState;if(0===(b.effectTag&64)){f=null;var g=!1}else f={timedOutAt:null!==f?f.timedOutAt:0},g=!0,b.effectTag&=-65;if(null===a)if(g){var h=e.fallback;a=Ze(null,d,0,null);0===(b.mode&1)&&(a.child=null!==b.memoizedState?b.child.child:b.child);d=Ze(h,d,c,null);a.sibling=d;c=a;c.return=d.return=b}else c=d=Ef(b,null,e.children,c);else null!==a.memoizedState?(d=a.child,h=d.sibling,g?(c=e.fallback,e=Xe(d,d.pendingProps,0),0===(b.mode&1)&&(g=null!==\nb.memoizedState?b.child.child:b.child,g!==d.child&&(e.child=g)),d=e.sibling=Xe(h,c,h.expirationTime),c=e,e.childExpirationTime=0,c.return=d.return=b):c=d=Df(b,d.child,e.children,c)):(h=a.child,g?(g=e.fallback,e=Ze(null,d,0,null),e.child=h,0===(b.mode&1)&&(e.child=null!==b.memoizedState?b.child.child:b.child),d=e.sibling=Ze(g,d,c,null),d.effectTag|=2,c=e,e.childExpirationTime=0,c.return=d.return=b):d=c=Df(b,h,e.children,c)),b.stateNode=a.stateNode;b.memoizedState=f;b.child=c;return d}\nfunction Jg(a,b,c){null!==a&&(b.contextDependencies=a.contextDependencies);if(b.childExpirationTime<c)return null;null!==a&&b.child!==a.child?x(\"153\"):void 0;if(null!==b.child){a=b.child;c=Xe(a,a.pendingProps,a.expirationTime);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Xe(a,a.pendingProps,a.expirationTime),c.return=b;c.sibling=null}return b.child}\nfunction Tg(a,b,c){var d=b.expirationTime;if(null!==a)if(a.memoizedProps!==b.pendingProps||I.current)qg=!0;else{if(d<c){qg=!1;switch(b.tag){case 3:Rg(b);Fg();break;case 5:Lf(b);break;case 1:J(b.type)&&Oe(b);break;case 4:Jf(b,b.stateNode.containerInfo);break;case 10:Ug(b,b.memoizedProps.value);break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;if(0!==d&&d>=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime<c&&(h.expirationTime=c);k=h.alternate;null!==k&&k.expirationTime<c&&(k.expirationTime=c);k=c;for(var m=h.return;null!==m;){var p=m.alternate;if(m.childExpirationTime<k)m.childExpirationTime=k,null!==p&&p.childExpirationTime<k&&(p.childExpirationTime=k);else if(null!==p&&p.childExpirationTime<k)p.childExpirationTime=k;else break;m=m.return}l.expirationTime<c&&(l.expirationTime=c);break}k=k.next}}else g=10===h.tag?h.type===b.type?\nnull:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}}S(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,Ig(b,c),e=M(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,S(a,b,d,c),b.child;case 14:return e=b.type,f=L(e,b.pendingProps),f=L(e.type,f),Kg(a,b,e,f,d,c);case 15:return Lg(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===\nd?e:L(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,J(d)?(a=!0,Oe(b)):a=!1,Ig(b,c),vf(b,d,e,c),xf(b,d,e,c),Qg(null,b,d,!0,a,c)}x(\"156\")}var Vg={current:null},Wg=null,Xg=null,Yg=null;function Ug(a,b){var c=a.type._context;G(Vg,c._currentValue,a);c._currentValue=b}function Zg(a){var b=Vg.current;F(Vg,a);a.type._context._currentValue=b}function Ig(a,b){Wg=a;Yg=Xg=null;var c=a.contextDependencies;null!==c&&c.expirationTime>=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;m<e?(null===g&&(g=l,f=k),h<m&&(h=m)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=32,l.nextEffect=null,null===b.lastEffect?b.firstEffect=b.lastEffect=l:(b.lastEffect.nextEffect=l,b.lastEffect=l)));l=l.next}m=null;for(l=b.firstCapturedUpdate;null!==l;){var p=l.expirationTime;p<e?(null===m&&(m=l,null===g&&(f=k)),h<p&&(h=p)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=\n32,l.nextEffect=null,null===b.lastCapturedEffect?b.firstCapturedEffect=b.lastCapturedEffect=l:(b.lastCapturedEffect.nextEffect=l,b.lastCapturedEffect=l)));l=l.next}null===g&&(b.lastUpdate=null);null===m?b.lastCapturedUpdate=null:a.effectTag|=32;null===g&&null===m&&(f=k);b.baseState=f;b.firstUpdate=g;b.firstCapturedUpdate=m;a.expirationTime=h;a.memoizedState=k}\nfunction hh(a,b,c){null!==b.firstCapturedUpdate&&(null!==b.lastUpdate&&(b.lastUpdate.next=b.firstCapturedUpdate,b.lastUpdate=b.lastCapturedUpdate),b.firstCapturedUpdate=b.lastCapturedUpdate=null);ih(b.firstEffect,c);b.firstEffect=b.lastEffect=null;ih(b.firstCapturedEffect,c);b.firstCapturedEffect=b.lastCapturedEffect=null}function ih(a,b){for(;null!==a;){var c=a.callback;if(null!==c){a.callback=null;var d=b;\"function\"!==typeof c?x(\"191\",c):void 0;c.call(d)}a=a.nextEffect}}\nfunction jh(a,b){return{value:a,source:b,stack:jc(b)}}function kh(a){a.effectTag|=4}var lh=void 0,mh=void 0,nh=void 0,oh=void 0;lh=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};mh=function(){};\nnh=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;If(N.current);a=null;switch(c){case \"input\":f=vc(g,f);d=vc(g,d);a=[];break;case \"option\":f=$d(g,f);d=$d(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=be(g,f);d=be(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=te)}qe(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if(\"style\"===\nc){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(ra.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if(\"style\"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]=\"\");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||\n(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else\"dangerouslySetInnerHTML\"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,\"\"+k)):\"children\"===c?l===k||\"string\"!==typeof k&&\"number\"!==typeof k||(a=a||[]).push(c,\"\"+k):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(ra.hasOwnProperty(c)?(null!=k&&se(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push(\"style\",h);e=a;(b.updateQueue=e)&&kh(b)}};oh=function(a,b,c,d){c!==d&&kh(b)};\nvar ph=\"function\"===typeof WeakSet?WeakSet:Set;function qh(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=jc(c));null!==c&&ic(c.type);b=b.value;null!==a&&1===a.tag&&ic(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function rh(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){sh(a,c)}else b.current=null}\nfunction th(a,b,c){c=c.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do{if((d.tag&a)!==Nf){var e=d.destroy;d.destroy=void 0;void 0!==e&&e()}(d.tag&b)!==Nf&&(e=d.create,d.destroy=e());d=d.next}while(d!==c)}}\nfunction uh(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d.style.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=ne(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if(13===c.tag&&null!==c.memoizedState){d=c.child.sibling;d.return=c;c=d;continue}else if(null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===c.return||\nc.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction vh(a){\"function\"===typeof Re&&Re(a);switch(a.tag){case 0:case 11:case 14:case 15:var b=a.updateQueue;if(null!==b&&(b=b.lastEffect,null!==b)){var c=b=b.next;do{var d=c.destroy;if(void 0!==d){var e=a;try{d()}catch(f){sh(e,f)}}c=c.next}while(c!==b)}break;case 1:rh(a);b=a.stateNode;if(\"function\"===typeof b.componentWillUnmount)try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(f){sh(a,f)}break;case 5:rh(a);break;case 4:wh(a)}}\nfunction xh(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction yh(a){a:{for(var b=a.return;null!==b;){if(xh(b)){var c=b;break a}b=b.return}x(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:x(\"161\")}c.effectTag&16&&(ke(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||xh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&\n2)continue b;if(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)if(c)if(d){var f=b,g=e.stateNode,h=c;8===f.nodeType?f.parentNode.insertBefore(g,h):f.insertBefore(g,h)}else b.insertBefore(e.stateNode,c);else d?(g=b,h=e.stateNode,8===g.nodeType?(f=g.parentNode,f.insertBefore(h,g)):(f=g,f.appendChild(h)),g=g._reactRootContainer,null!==g&&void 0!==g||null!==f.onclick||(f.onclick=te)):b.appendChild(e.stateNode);\nelse if(4!==e.tag&&null!==e.child){e.child.return=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e.return||e.return===a)return;e=e.return}e.sibling.return=e.return;e=e.sibling}}\nfunction wh(a){for(var b=a,c=!1,d=void 0,e=void 0;;){if(!c){c=b.return;a:for(;;){null===c?x(\"160\"):void 0;switch(c.tag){case 5:d=c.stateNode;e=!1;break a;case 3:d=c.stateNode.containerInfo;e=!0;break a;case 4:d=c.stateNode.containerInfo;e=!0;break a}c=c.return}c=!0}if(5===b.tag||6===b.tag){a:for(var f=b,g=f;;)if(vh(g),null!==g.child&&4!==g.tag)g.child.return=g,g=g.child;else{if(g===f)break;for(;null===g.sibling;){if(null===g.return||g.return===f)break a;g=g.return}g.sibling.return=g.return;g=g.sibling}e?\n(f=d,g=b.stateNode,8===f.nodeType?f.parentNode.removeChild(g):f.removeChild(g)):d.removeChild(b.stateNode)}else if(4===b.tag){if(null!==b.child){d=b.stateNode.containerInfo;e=!0;b.child.return=b;b=b.child;continue}}else if(vh(b),null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return;b=b.return;4===b.tag&&(c=!1)}b.sibling.return=b.return;b=b.sibling}}\nfunction zh(a,b){switch(b.tag){case 0:case 11:case 14:case 15:th(Pf,Qf,b);break;case 1:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&Ce(c,f,e,a,d,b)}break;case 6:null===b.stateNode?x(\"162\"):void 0;b.stateNode.nodeValue=b.memoizedProps;break;case 3:break;case 12:break;case 13:c=b.memoizedState;d=void 0;a=b;null===c?d=!1:(d=!0,a=b.child,0===c.timedOutAt&&(c.timedOutAt=lf()));null!==a&&uh(a,d);c=\nb.updateQueue;if(null!==c){b.updateQueue=null;var g=b.stateNode;null===g&&(g=b.stateNode=new ph);c.forEach(function(a){var c=Ah.bind(null,b,a);g.has(a)||(g.add(a),a.then(c,c))})}break;case 17:break;default:x(\"163\")}}var Bh=\"function\"===typeof WeakMap?WeakMap:Map;function Ch(a,b,c){c=nf(c);c.tag=ah;c.payload={element:null};var d=b.value;c.callback=function(){Dh(d);qh(a,b)};return c}\nfunction Eh(a,b,c){c=nf(c);c.tag=ah;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Fh?Fh=new Set([this]):Fh.add(this));var c=b.value,e=b.stack;qh(a,b);this.componentDidCatch(c,{componentStack:null!==e?e:\"\"})});return c}\nfunction Gh(a){switch(a.tag){case 1:J(a.type)&&Ke(a);var b=a.effectTag;return b&2048?(a.effectTag=b&-2049|64,a):null;case 3:return Kf(a),Le(a),b=a.effectTag,0!==(b&64)?x(\"285\"):void 0,a.effectTag=b&-2049|64,a;case 5:return Mf(a),null;case 13:return b=a.effectTag,b&2048?(a.effectTag=b&-2049|64,a):null;case 18:return null;case 4:return Kf(a),null;case 10:return Zg(a),null;default:return null}}\nvar Hh=Tb.ReactCurrentDispatcher,Ih=Tb.ReactCurrentOwner,Jh=1073741822,Kh=!1,T=null,Lh=null,U=0,Mh=-1,Nh=!1,V=null,Oh=!1,Ph=null,Qh=null,Rh=null,Fh=null;function Sh(){if(null!==T)for(var a=T.return;null!==a;){var b=a;switch(b.tag){case 1:var c=b.type.childContextTypes;null!==c&&void 0!==c&&Ke(b);break;case 3:Kf(b);Le(b);break;case 5:Mf(b);break;case 4:Kf(b);break;case 10:Zg(b)}a=a.return}Lh=null;U=0;Mh=-1;Nh=!1;T=null}\nfunction Th(){for(;null!==V;){var a=V.effectTag;a&16&&ke(V.stateNode,\"\");if(a&128){var b=V.alternate;null!==b&&(b=b.ref,null!==b&&(\"function\"===typeof b?b(null):b.current=null))}switch(a&14){case 2:yh(V);V.effectTag&=-3;break;case 6:yh(V);V.effectTag&=-3;zh(V.alternate,V);break;case 4:zh(V.alternate,V);break;case 8:a=V,wh(a),a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null,a=a.alternate,null!==a&&(a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null)}V=V.nextEffect}}\nfunction Uh(){for(;null!==V;){if(V.effectTag&256)a:{var a=V.alternate,b=V;switch(b.tag){case 0:case 11:case 15:th(Of,Nf,b);break a;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:L(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}break a;case 3:case 5:case 6:case 4:case 17:break a;default:x(\"163\")}}V=V.nextEffect}}\nfunction Vh(a,b){for(;null!==V;){var c=V.effectTag;if(c&36){var d=V.alternate,e=V,f=b;switch(e.tag){case 0:case 11:case 15:th(Rf,Sf,e);break;case 1:var g=e.stateNode;if(e.effectTag&4)if(null===d)g.componentDidMount();else{var h=e.elementType===e.type?d.memoizedProps:L(e.type,d.memoizedProps);g.componentDidUpdate(h,d.memoizedState,g.__reactInternalSnapshotBeforeUpdate)}d=e.updateQueue;null!==d&&hh(e,d,g,f);break;case 3:d=e.updateQueue;if(null!==d){g=null;if(null!==e.child)switch(e.child.tag){case 5:g=\ne.child.stateNode;break;case 1:g=e.child.stateNode}hh(e,d,g,f)}break;case 5:f=e.stateNode;null===d&&e.effectTag&4&&we(e.type,e.memoizedProps)&&f.focus();break;case 6:break;case 4:break;case 12:break;case 13:break;case 17:break;default:x(\"163\")}}c&128&&(e=V.ref,null!==e&&(f=V.stateNode,\"function\"===typeof e?e(f):e.current=f));c&512&&(Ph=a);V=V.nextEffect}}\nfunction Wh(a,b){Rh=Qh=Ph=null;var c=W;W=!0;do{if(b.effectTag&512){var d=!1,e=void 0;try{var f=b;th(Uf,Nf,f);th(Nf,Tf,f)}catch(g){d=!0,e=g}d&&sh(b,e)}b=b.nextEffect}while(null!==b);W=c;c=a.expirationTime;0!==c&&Xh(a,c);X||W||Yh(1073741823,!1)}function of(){null!==Qh&&Be(Qh);null!==Rh&&Rh()}\nfunction Zh(a,b){Oh=Kh=!0;a.current===b?x(\"177\"):void 0;var c=a.pendingCommitExpirationTime;0===c?x(\"261\"):void 0;a.pendingCommitExpirationTime=0;var d=b.expirationTime,e=b.childExpirationTime;ef(a,e>d?e:d);Ih.current=null;d=void 0;1<b.effectTag?null!==b.lastEffect?(b.lastEffect.nextEffect=b,d=b.firstEffect):d=b:d=b.firstEffect;ue=Bd;ve=Pd();Bd=!1;for(V=d;null!==V;){e=!1;var f=void 0;try{Uh()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}for(V=d;null!==V;){e=!1;\nf=void 0;try{Th()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}Qd(ve);ve=null;Bd=!!ue;ue=null;a.current=b;for(V=d;null!==V;){e=!1;f=void 0;try{Vh(a,c)}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}if(null!==d&&null!==Ph){var g=Wh.bind(null,a,d);Qh=r.unstable_runWithPriority(r.unstable_NormalPriority,function(){return Ae(g)});Rh=g}Kh=Oh=!1;\"function\"===typeof Qe&&Qe(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=\nb>c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k<ab.length;k++)E(ab[k],e);break;case \"source\":E(\"error\",e);break;case \"img\":case \"image\":case \"link\":E(\"error\",e);E(\"load\",e);break;case \"form\":E(\"reset\",e);E(\"submit\",e);break;case \"details\":E(\"toggle\",e);break;case \"input\":wc(e,m);E(\"invalid\",e);se(p,\"onChange\");break;case \"select\":e._wrapperState=\n{wasMultiple:!!m.multiple};E(\"invalid\",e);se(p,\"onChange\");break;case \"textarea\":ce(e,m),E(\"invalid\",e),se(p,\"onChange\")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],\"children\"===f?\"string\"===typeof l?e.textContent!==l&&(k=[\"children\",l]):\"number\"===typeof l&&e.textContent!==\"\"+l&&(k=[\"children\",\"\"+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case \"input\":Rb(e);Ac(e,m,!0);break;case \"textarea\":Rb(e);ee(e,m);break;case \"select\":case \"option\":break;default:\"function\"===typeof m.onClick&&\n(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?\"script\"===p?(e=k.createElement(\"div\"),e.innerHTML=\"<script>\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case \"source\":E(\"error\",p);h=m;break;case \"img\":case \"image\":case \"link\":E(\"error\",p);E(\"load\",p);h=m;break;case \"form\":E(\"reset\",p);E(\"submit\",p);h=m;break;case \"details\":E(\"toggle\",p);h=m;break;case \"input\":wc(p,m);h=vc(p,m);E(\"invalid\",p);se(t,\"onChange\");break;case \"option\":h=$d(p,m);break;case \"select\":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E(\"invalid\",p);se(t,\"onChange\");break;case \"textarea\":ce(p,\nm);h=be(p,m);E(\"invalid\",p);se(t,\"onChange\");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];\"style\"===l?oe(R,q):\"dangerouslySetInnerHTML\"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):\"children\"===l?\"string\"===typeof q?(\"textarea\"!==v||\"\"!==q)&&ke(R,q):\"number\"===typeof q&&ke(R,\"\"+q):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case \"input\":Rb(p);\nAc(p,m,!1);break;case \"textarea\":Rb(p);ee(p,m);break;case \"option\":null!=m.value&&p.setAttribute(\"value\",\"\"+uc(m.value));break;case \"select\":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x(\"166\"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):(\"string\"!==\ntypeof g&&(null===b.stateNode?x(\"166\"):void 0),e=If(Hf.current),If(N.current),Eg(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&kh(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;T=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=\nb.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Kf(b);mh(b);break;case 10:Zg(b);break;case 9:break;case 14:break;case 17:J(b.type)&&Ke(b);break;case 18:break;default:x(\"156\")}T=null}b=a;if(1===U||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=Gh(a,U);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}\nfunction bi(a){var b=Tg(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=ai(a));Ih.current=null;return b}\nfunction ci(a,b){Kh?x(\"243\"):void 0;of();Kh=!0;var c=Hh.current;Hh.current=kg;var d=a.nextExpirationTimeToWorkOn;if(d!==U||a!==Lh||null===T)Sh(),Lh=a,U=d,T=Xe(Lh.current,null,U),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==T&&!di();)T=bi(T);else for(;null!==T;)T=bi(T)}catch(u){if(Yg=Xg=Wg=null,lg(),null===T)e=!0,Dh(u);else{null===T?x(\"271\"):void 0;var f=T,g=f.return;if(null===g)e=!0,Dh(u);else{a:{var h=a,l=g,k=f,m=u;g=U;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==\nm&&\"object\"===typeof m&&\"function\"===typeof m.then){var p=m;m=l;var t=-1,A=-1;do{if(13===m.tag){var v=m.alternate;if(null!==v&&(v=v.memoizedState,null!==v)){A=10*(1073741822-v.timedOutAt);break}v=m.pendingProps.maxDuration;if(\"number\"===typeof v)if(0>=v)t=0;else if(-1===t||v<t)t=v}m=m.return}while(null!==m);m=l;do{if(v=13===m.tag)v=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(v){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=\n64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=nf(1073741823),g.tag=sf,pf(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var R=k.pingCache;null===R?(R=k.pingCache=new Bh,v=new Set,R.set(p,v)):(v=R.get(p),void 0===v&&(v=new Set,R.set(p,v)));v.has(l)||(v.add(l),k=ei.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===A&&(A=10*(1073741822-gf(h,g))-5E3),h=A+t);0<=h&&Mh<h&&(Mh=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((ic(k.type)||\"A React component\")+\n\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){ff(a,d);fi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;\nb=a.expirationTime=1073741823;fi(a,c,d,b,-1);return}}b&&-1!==Mh?(ff(a,d),b=10*(1073741822-gf(a,d)),b<Mh&&(Mh=b),b=10*(1073741822-lf()),b=Mh-b,fi(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d<gi)&&(gi=d);return d}function ei(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Lh&&U===c)Lh=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}\nfunction qf(a,b){a=hi(a,b);null!==a&&(!Kh&&0!==U&&b>U&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(b<mi)return;null!==ni&&r.unstable_cancelCallback(ni)}mi=b;a=r.unstable_now()-ti;ni=r.unstable_scheduleCallback(zi,{timeout:10*(1073741822-b)-a})}function fi(a,b,c,d,e){a.expirationTime=d;0!==e||di()?0<e&&(a.timeoutHandle=ye(Ai.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Ai(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;xi();vi=ui;Bi(a,c)}function $h(a,b){a.expirationTime=b;a.finishedWork=null}\nfunction lf(){if(W)return vi;Ci();if(0===Z||1===Z)xi(),vi=ui;return vi}function Xh(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===Y?(li=Y=a,a.nextScheduledRoot=a):(Y=Y.nextScheduledRoot=a,Y.nextScheduledRoot=li)):b>a.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){pi||(pi=!0,qi=d)}}if(pi)throw a=qi,qi=null,pi=!1,a;}function Bi(a,b){W?x(\"253\"):void 0;oi=a;Z=b;Di(a,b,!1);Yh(1073741823,!1)}\nfunction Di(a,b,c){W?x(\"245\"):void 0;W=!0;if(c){var d=a.finishedWork;null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&(di()?a.finishedWork=d:Fi(a,d,b)))}else d=a.finishedWork,null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&Fi(a,d,b));W=!1}\nfunction Fi(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Wb,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nAb=function(a,b,c){switch(b){case \"input\":yc(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Ka(d);e?void 0:x(\"90\");Sb(d);yc(d,e)}}}break;case \"textarea\":de(a,c);break;case \"select\":b=c.value,null!=b&&ae(a,!!c.multiple,b,!1)}};\nfunction Ni(a){var b=1073741822-25*(((1073741822-lf()+500)/25|0)+1);b>=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};function Oi(){this._callbacks=null;this._didCommit=!1;this._onCommit=this._onCommit.bind(this)}Oi.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nOi.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];\"function\"!==typeof c?x(\"191\",c):void 0;c()}}};\nfunction Pi(a,b,c){b=K(3,null,null,b?3:0);a={current:b,containerInfo:a,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:c,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null};this._internalRoot=b.stateNode=a}\nPi.prototype.render=function(a,b){var c=this._internalRoot,d=new Oi;b=void 0===b?null:b;null!==b&&d.then(b);Ki(a,c,null,d._onCommit);return d};Pi.prototype.unmount=function(a){var b=this._internalRoot,c=new Oi;a=void 0===a?null:a;null!==a&&c.then(a);Ki(null,b,null,c._onCommit);return c};Pi.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new Oi;c=void 0===c?null:c;null!==c&&e.then(c);Ki(b,d,a,e._onCommit);return e};\nPi.prototype.createBatch=function(){var a=new Ni(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;Qi(b)?void 0:x(\"200\");return Mi(a,b,null,c)}\nvar Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&(\"function\"===typeof a.render?x(\"188\"):x(\"268\",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x(\"200\");null==a||void 0===a._reactInternalFiber?\nx(\"38\"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x(\"40\");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x(\"187\"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=\nX;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x(\"299\",\"unstable_createRoot\");return new Pi(a,!0,null!=b&&!0===b.hydrate)}\n(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:\"16.8.6\",rendererPackageName:\"react-dom\"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.13.6\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if(\"function\"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = autoBind;\nvar wontBind = ['constructor', 'render', 'componentWillMount', 'componentDidMount', 'componentWillReceiveProps', 'shouldComponentUpdate', 'componentWillUpdate', 'componentDidUpdate', 'componentWillUnmount'];\n\nvar toBind = [];\n\nfunction autoBind(context) {\n if (context === undefined) {\n console.error('Autobind error: No context provided.');\n return;\n }\n\n var objPrototype = Object.getPrototypeOf(context);\n\n if (arguments.length > 1) {\n // If a list of methods to bind is provided, use it.\n toBind = Array.prototype.slice.call(arguments, 1);\n } else {\n // If no list of methods to bind is provided, bind all available methods in class.\n toBind = Object.getOwnPropertyNames(objPrototype);\n }\n\n toBind.forEach(function (method) {\n var descriptor = Object.getOwnPropertyDescriptor(objPrototype, method);\n\n if (descriptor === undefined) {\n console.warn('Autobind: \"' + method + '\" method not found in class.');\n return;\n }\n\n // Return if it's special case function or if not a function at all\n if (wontBind.indexOf(method) !== -1 || typeof descriptor.value !== 'function') {\n return;\n }\n\n Object.defineProperty(objPrototype, method, boundMethod(objPrototype, method, descriptor));\n });\n}\n\n/**\n* From autobind-decorator (https://github.com/andreypopp/autobind-decorator/tree/master)\n* Return a descriptor removing the value and returning a getter\n* The getter will return a .bind version of the function\n* and memoize the result against a symbol on the instance\n*/\nfunction boundMethod(objPrototype, method, descriptor) {\n var fn = descriptor.value;\n\n return {\n configurable: true,\n get: function get() {\n if (this === objPrototype || this.hasOwnProperty(method)) {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n Object.defineProperty(this, method, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n return boundFn;\n }\n };\n}\nmodule.exports = exports['default'];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(require(\"../query/contains\"));\n\nvar _querySelectorAll = _interopRequireDefault(require(\"../query/querySelectorAll\"));\n\nfunction filterEvents(selector, handler) {\n return function filterHandler(e) {\n var top = e.currentTarget,\n target = e.target,\n matches = (0, _querySelectorAll.default)(top, selector);\n if (matches.some(function (match) {\n return (0, _contains.default)(match, target);\n })) handler.call(this, e);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = require('react-is');\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, _reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(require(\"./addClass\"));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(require(\"./removeClass\"));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(require(\"dom-helpers/query/isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument.default)(node);\n var win = (0, _isWindow.default)(doc);\n return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow.default)(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n exclude = [].concat(exclude);\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) return;\n\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, _ref2) {\n var root = _ref2.root,\n backdrop = _ref2.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, _ref3) {\n var root = _ref3.root,\n backdrop = _ref3.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _WaitForContainer = _interopRequireDefault(require(\"./WaitForContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n container: this.props.container,\n onContainerResolved: this.props.onRendered\n }, function (container) {\n return _reactDom.default.createPortal(_this.props.children, container);\n }) : null;\n };\n\n return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(WaitForContainer, _React$Component);\n\n function WaitForContainer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n if (!_inDOM.default) return _assertThisInitialized(_this);\n var container = _this.props.container;\n if (typeof container === 'function') container = container();\n\n if (container && !_reactDom.default.findDOMNode(container)) {\n // The container is a React component that has not yet been rendered.\n // Don't set the container node yet.\n return _assertThisInitialized(_this);\n }\n\n _this.setContainer(container);\n\n return _this;\n }\n\n var _proto = WaitForContainer.prototype;\n\n _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps.container);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!this._container) {\n this.setContainer(this.props.container);\n this.forceUpdate(this.props.onContainerResolved);\n } else if (this.props.onContainerResolved) {\n this.props.onContainerResolved();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._container = null;\n };\n\n _proto.setContainer = function setContainer(container) {\n this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n };\n\n _proto.render = function render() {\n return this._container ? this.props.children(this._container) : null;\n };\n\n return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(componentOrElement) {\n return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v16.8.6\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var p=require(\"object-assign\"),q=require(\"react\");function aa(a,b,d,c,f,e,h,g){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var D=[d,c,f,e,h,g],B=0;a=Error(b.replace(/%s/g,function(){return D[B++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction r(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);aa(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}\nvar v=\"function\"===typeof Symbol&&Symbol.for,ba=v?Symbol.for(\"react.portal\"):60106,x=v?Symbol.for(\"react.fragment\"):60107,ca=v?Symbol.for(\"react.strict_mode\"):60108,da=v?Symbol.for(\"react.profiler\"):60114,z=v?Symbol.for(\"react.provider\"):60109,ea=v?Symbol.for(\"react.context\"):60110,fa=v?Symbol.for(\"react.concurrent_mode\"):60111,ha=v?Symbol.for(\"react.forward_ref\"):60112,A=v?Symbol.for(\"react.suspense\"):60113,ia=v?Symbol.for(\"react.memo\"):60115,ja=v?Symbol.for(\"react.lazy\"):60116;\nfunction C(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case fa:return\"ConcurrentMode\";case x:return\"Fragment\";case ba:return\"Portal\";case da:return\"Profiler\";case ca:return\"StrictMode\";case A:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ea:return\"Context.Consumer\";case z:return\"Context.Provider\";case ha:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case ia:return C(a.type);case ja:if(a=1===a._status?a._result:null)return C(a)}return null}var E=q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.hasOwnProperty(\"ReactCurrentDispatcher\")||(E.ReactCurrentDispatcher={current:null});var ka={};function F(a,b){for(var d=a._threadCount|0;d<=b;d++)a[d]=a._currentValue2,a._threadCount=d+1}\nfunction la(a,b,d){var c=a.contextType;if(\"object\"===typeof c&&null!==c)return F(c,d),c[d];if(a=a.contextTypes){d={};for(var f in a)d[f]=b[f];b=d}else b=ka;return b}for(var G=new Uint16Array(16),H=0;15>H;H++)G[H]=H+1;G[15]=0;\nvar ma=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,na=Object.prototype.hasOwnProperty,oa={},pa={};\nfunction qa(a){if(na.call(pa,a))return!0;if(na.call(oa,a))return!1;if(ma.test(a))return pa[a]=!0;oa[a]=!0;return!1}function ra(a,b,d,c){if(null!==d&&0===d.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(c)return!1;if(null!==d)return!d.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction sa(a,b,d,c){if(null===b||\"undefined\"===typeof b||ra(a,b,d,c))return!0;if(c)return!1;if(null!==d)switch(d.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function I(a,b,d,c,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=c;this.attributeNamespace=f;this.mustUseProperty=d;this.propertyName=a;this.type=b}var J={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){J[a]=new I(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];J[b]=new I(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){J[a]=new I(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){J[a]=new I(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){J[a]=new I(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){J[a]=new I(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){J[a]=new I(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){J[a]=new I(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){J[a]=new I(a,5,!1,a.toLowerCase(),null)});var K=/[\\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(K,\nL);J[b]=new I(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){J[a]=new I(a,1,!1,a.toLowerCase(),null)});var ta=/[\"'&<>]/;\nfunction M(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=ta.exec(a);if(b){var d=\"\",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r(\"321\"):void 0;return N}\nfunction ua(){0<U&&r(\"312\");return{memoizedState:null,queue:null,next:null}}function W(){null===P?null===O?(Q=!1,O=P=ua()):(Q=!0,P=O):null===P.next?(Q=!1,P=P.next=ua()):(Q=!0,P=P.next);return P}function va(a,b,d,c){for(;S;)S=!1,U+=1,P=null,d=a(b,c);O=N=null;U=0;P=T=null;return d}function wa(a,b){return\"function\"===typeof b?b(a):b}\nfunction xa(a,b,d){N=V();P=W();if(Q){var c=P.queue;b=c.dispatch;if(null!==T&&(d=T.get(c),void 0!==d)){T.delete(c);c=P.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);P.memoizedState=c;return[c,b]}return[P.memoizedState,b]}a=a===wa?\"function\"===typeof b?b():b:void 0!==d?d(b):b;P.memoizedState=a;a=P.queue={last:null,dispatch:null};a=a.dispatch=ya.bind(null,N,a);return[P.memoizedState,a]}\nfunction ya(a,b,d){25>U?void 0:r(\"301\");if(a===N)if(S=!0,a={action:d,next:null},null===T&&(T=new Map),d=T.get(b),void 0===d)T.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function za(){}\nvar X=0,Aa={readContext:function(a){var b=X;F(a,b);return a[b]},useContext:function(a){V();var b=X;F(a,b);return a[b]},useMemo:function(a,b){N=V();P=W();b=void 0===b?null:b;if(null!==P){var d=P.memoizedState;if(null!==d&&null!==b){a:{var c=d[1];if(null===c)c=!1;else{for(var f=0;f<c.length&&f<b.length;f++){var e=b[f],h=c[f];if((e!==h||0===e&&1/e!==1/h)&&(e===e||h===h)){c=!1;break a}}c=!0}}if(c)return d[0]}}a=a();P.memoizedState=[a,b];return a},useReducer:xa,useRef:function(a){N=V();P=W();var b=P.memoizedState;\nreturn null===b?(a={current:a},P.memoizedState=a):b},useState:function(a){return xa(wa,a)},useLayoutEffect:function(){},useCallback:function(a){return a},useImperativeHandle:za,useEffect:za,useDebugValue:za},Ba={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ca(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Da={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Ea=p({menuitem:!0},Da),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Fa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Fa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Ga=/([A-Z])/g,Ha=/^ms-/,Z=q.Children.toArray,Ia=E.ReactCurrentDispatcher,Ja={listing:!0,pre:!0,textarea:!0},Ka=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,La={},Ma={};function Na(a){if(void 0===a||null===a)return a;var b=\"\";q.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Oa=Object.prototype.hasOwnProperty,Pa={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function Qa(a,b){void 0===a&&r(\"152\",C(b)||\"Component\")}\nfunction Ra(a,b,d){function c(c,f){var e=la(f,b,d),g=[],h=!1,l={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===g)return null},enqueueReplaceState:function(a,b){h=!0;g=[b]},enqueueSetState:function(a,b){if(null===g)return null;g.push(b)}},k=void 0;if(f.prototype&&f.prototype.isReactComponent){if(k=new f(c.props,e,l),\"function\"===typeof f.getDerivedStateFromProps){var t=f.getDerivedStateFromProps.call(null,c.props,k.state);null!=t&&(k.state=p({},k.state,t))}}else if(N={},k=f(c.props,\ne,l),k=va(f,c.props,k,e),null==k||null==k.render){a=k;Qa(a,f);return}k.props=c.props;k.context=e;k.updater=l;l=k.state;void 0===l&&(k.state=l=null);if(\"function\"===typeof k.UNSAFE_componentWillMount||\"function\"===typeof k.componentWillMount)if(\"function\"===typeof k.componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.componentWillMount(),\"function\"===typeof k.UNSAFE_componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.UNSAFE_componentWillMount(),g.length){l=g;var m=\nh;g=null;h=!1;if(m&&1===l.length)k.state=l[0];else{t=m?l[0]:k.state;var u=!0;for(m=m?1:0;m<l.length;m++){var w=l[m];w=\"function\"===typeof w?w.call(k,t,c.props,e):w;null!=w&&(u?(u=!1,t=p({},t,w)):p(t,w))}k.state=t}}else g=null;a=k.render();Qa(a,f);c=void 0;if(\"function\"===typeof k.getChildContext&&(e=f.childContextTypes,\"object\"===typeof e)){c=k.getChildContext();for(var R in c)R in e?void 0:r(\"108\",C(f)||\"Unknown\",R)}c&&(b=p({},b,c))}for(;q.isValidElement(a);){var f=a,e=f.type;if(\"function\"!==typeof e)break;\nc(f,e)}return{child:a,context:b}}\nvar Sa=function(){function a(b,d){if(!(this instanceof a))throw new TypeError(\"Cannot call a class as a function\");q.isValidElement(b)?b.type!==x?b=[b]:(b=b.props.children,b=q.isValidElement(b)?[b]:Z(b)):b=Z(b);b={type:null,domNamespace:Ba.html,children:b,childIndex:0,context:ka,footer:\"\"};var c=G[0];if(0===c){var f=G;c=f.length;var e=2*c;65536>=e?void 0:r(\"304\");var h=new Uint16Array(e);h.set(f);G=h;G[0]=c+1;for(f=c;f<e-1;f++)G[f]=f+1;G[e-1]=0}else G[0]=G[c];this.threadID=c;this.stack=[b];this.exhausted=\n!1;this.currentSelectValue=null;this.previousWasTextNode=!1;this.makeStaticMarkup=d;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[]}a.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;G[a]=G[0];G[0]=a}};a.prototype.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,f=this.threadID;F(c,f);var e=c[f];this.contextStack[b]=c;this.contextValueStack[b]=e;c[f]=a.props.value};a.prototype.popProvider=\nfunction(){var a=this.contextIndex,d=this.contextStack[a],c=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;d[this.threadID]=c};a.prototype.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};a.prototype.read=function(a){if(this.exhausted)return null;var b=X;X=this.threadID;var c=Ia.current;Ia.current=Aa;try{for(var f=[\"\"],e=!1;f[0].length<a;){if(0===this.stack.length){this.exhausted=\n!0;var h=this.threadID;G[h]=G[0];G[0]=h;break}var g=this.stack[this.stack.length-1];if(e||g.childIndex>=g.children.length){var D=g.footer;\"\"!==D&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===g.type)this.currentSelectValue=null;else if(null!=g.type&&null!=g.type.type&&g.type.type.$$typeof===z)this.popProvider(g.type);else if(g.type===A){this.suspenseDepth--;var B=f.pop();if(e){e=!1;var n=g.fallbackFrame;n?void 0:r(\"303\");this.stack.push(n);continue}else f[this.suspenseDepth]+=B}f[this.suspenseDepth]+=\nD}else{var l=g.children[g.childIndex++],k=\"\";try{k+=this.render(l,g.context,g.domNamespace)}catch(t){throw t;}finally{}f.length<=this.suspenseDepth&&f.push(\"\");f[this.suspenseDepth]+=k}}return f[0]}finally{Ia.current=c,X=b}};a.prototype.render=function(a,d,c){if(\"string\"===typeof a||\"number\"===typeof a){c=\"\"+a;if(\"\"===c)return\"\";if(this.makeStaticMarkup)return M(c);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+M(c);this.previousWasTextNode=!0;return M(c)}d=Ra(a,d,this.threadID);a=d.child;d=d.context;\nif(null===a||!1===a)return\"\";if(!q.isValidElement(a)){if(null!=a&&null!=a.$$typeof){var b=a.$$typeof;b===ba?r(\"257\"):void 0;r(\"258\",b.toString())}a=Z(a);this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"});return\"\"}b=a.type;if(\"string\"===typeof b)return this.renderDOM(a,d,c);switch(b){case ca:case fa:case da:case x:return a=Z(a.props.children),this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case A:r(\"294\")}if(\"object\"===\ntypeof b&&null!==b)switch(b.$$typeof){case ha:N={};var e=b.render(a.props,a.ref);e=va(b.render,a.props,e,a.ref);e=Z(e);this.stack.push({type:null,domNamespace:c,children:e,childIndex:0,context:d,footer:\"\"});return\"\";case ia:return a=[q.createElement(b.type,p({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case z:return b=Z(a.props.children),c={type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"},this.pushProvider(a),this.stack.push(c),\n\"\";case ea:b=a.type;e=a.props;var h=this.threadID;F(b,h);b=Z(e.children(b[h]));this.stack.push({type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"});return\"\";case ja:r(\"295\")}r(\"130\",null==b?b:typeof b,\"\")};a.prototype.renderDOM=function(a,d,c){var b=a.type.toLowerCase();c===Ba.html&&Ca(b);La.hasOwnProperty(b)||(Ka.test(b)?void 0:r(\"65\",b),La[b]=!0);var e=a.props;if(\"input\"===b)e=p({type:void 0},e,{defaultChecked:void 0,defaultValue:void 0,value:null!=e.value?e.value:e.defaultValue,\nchecked:null!=e.checked?e.checked:e.defaultChecked});else if(\"textarea\"===b){var h=e.value;if(null==h){h=e.defaultValue;var g=e.children;null!=g&&(null!=h?r(\"92\"):void 0,Array.isArray(g)&&(1>=g.length?void 0:r(\"93\"),g=g[0]),h=\"\"+g);null==h&&(h=\"\")}e=p({},e,{value:void 0,children:\"\"+h})}else if(\"select\"===b)this.currentSelectValue=null!=e.value?e.value:e.defaultValue,e=p({},e,{value:void 0});else if(\"option\"===b){g=this.currentSelectValue;var D=Na(e.children);if(null!=g){var B=null!=e.value?e.value+\n\"\":D;h=!1;if(Array.isArray(g))for(var n=0;n<g.length;n++){if(\"\"+g[n]===B){h=!0;break}}else h=\"\"+g===B;e=p({selected:void 0,children:void 0},e,{selected:h,children:D})}}if(h=e)Ea[b]&&(null!=h.children||null!=h.dangerouslySetInnerHTML?r(\"137\",b,\"\"):void 0),null!=h.dangerouslySetInnerHTML&&(null!=h.children?r(\"60\"):void 0,\"object\"===typeof h.dangerouslySetInnerHTML&&\"__html\"in h.dangerouslySetInnerHTML?void 0:r(\"61\")),null!=h.style&&\"object\"!==typeof h.style?r(\"62\",\"\"):void 0;h=e;g=this.makeStaticMarkup;\nD=1===this.stack.length;B=\"<\"+a.type;for(y in h)if(Oa.call(h,y)){var l=h[y];if(null!=l){if(\"style\"===y){n=void 0;var k=\"\",t=\"\";for(n in l)if(l.hasOwnProperty(n)){var m=0===n.indexOf(\"--\"),u=l[n];if(null!=u){var w=n;if(Ma.hasOwnProperty(w))w=Ma[w];else{var R=w.replace(Ga,\"-$1\").toLowerCase().replace(Ha,\"-ms-\");w=Ma[w]=R}k+=t+w+\":\";t=n;m=null==u||\"boolean\"===typeof u||\"\"===u?\"\":m||\"number\"!==typeof u||0===u||Y.hasOwnProperty(t)&&Y[t]?(\"\"+u).trim():u+\"px\";k+=m;t=\";\"}}l=k||null}n=null;b:if(m=b,u=h,-1===\nm.indexOf(\"-\"))m=\"string\"===typeof u.is;else switch(m){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":m=!1;break b;default:m=!0}if(m)Pa.hasOwnProperty(y)||(n=y,n=qa(n)&&null!=l?n+\"=\"+('\"'+M(l)+'\"'):\"\");else{m=y;n=l;l=J.hasOwnProperty(m)?J[m]:null;if(u=\"style\"!==m)u=null!==l?0===l.type:!(2<m.length)||\"o\"!==m[0]&&\"O\"!==m[0]||\"n\"!==m[1]&&\"N\"!==m[1]?!1:!0;u||sa(m,n,l,!1)?n=\"\":null!==\nl?(m=l.attributeName,l=l.type,n=3===l||4===l&&!0===n?m+'=\"\"':m+\"=\"+('\"'+M(n)+'\"')):n=qa(m)?m+\"=\"+('\"'+M(n)+'\"'):\"\"}n&&(B+=\" \"+n)}}g||D&&(B+=' data-reactroot=\"\"');var y=B;h=\"\";Da.hasOwnProperty(b)?y+=\"/>\":(y+=\">\",h=\"</\"+a.type+\">\");a:{g=e.dangerouslySetInnerHTML;if(null!=g){if(null!=g.__html){g=g.__html;break a}}else if(g=e.children,\"string\"===typeof g||\"number\"===typeof g){g=M(g);break a}g=null}null!=g?(e=[],Ja[b]&&\"\\n\"===g.charAt(0)&&(y+=\"\\n\"),y+=g):e=Z(e.children);a=a.type;c=null==c||\"http://www.w3.org/1999/xhtml\"===\nc?Ca(a):\"http://www.w3.org/2000/svg\"===c&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}(),Ta={renderToString:function(a){a=new Sa(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Sa(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){r(\"207\")},renderToStaticNodeStream:function(){r(\"208\")},\nversion:\"16.8.6\"},Ua={default:Ta},Va=Ua&&Ta||Ua;module.exports=Va.default||Va;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // this is for React 15.x only\n default_1.prototype.componentWillReceiveProps = function (props) {\n var _this = this;\n if (!Utils_1.isSameArray(this.state.data, props.data)) {\n // console.log('- componentWillReceiveProps');\n this.setState({ data: props.data }, function () {\n _this.table.setData(_this.state.data);\n });\n }\n };\n default_1.prototype.render = function () {\n var _this = this;\n // console.log('*** render');\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar _a;\nvar React = require(\"react\");\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar DateEditor_1 = require(\"./editors/DateEditor\");\nvar MultiSelectEditor_1 = require(\"./editors/MultiSelectEditor\");\nvar MultiValueFormatter_1 = require(\"./formatters/MultiValueFormatter\");\nvar Utils_1 = require(\"./Utils\");\nfunction SimpleButton(props) {\n var cellData = props.cell._cell.row.data;\n return React.createElement(\"button\", { onClick: function () { return alert(cellData.name); } }, \"Show\");\n}\nvar columns = [\n { title: 'Name', field: 'name', width: 150 },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress' },\n { title: 'Favourite Color', field: 'color' },\n { title: 'Date Of Birth', field: 'dob' },\n { title: 'Rating', field: 'rating', align: 'center', formatter: 'star' },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross' },\n { title: 'Custom', field: 'custom', align: 'center', formatter: Utils_1.reactFormatter(React.createElement(SimpleButton, null)) },\n];\nvar data = [\n { id: 1, name: 'Oli Bob', age: '12', color: 'red', dob: '01/01/1980', rating: 5, passed: true, pets: ['cat', 'dog'] },\n { id: 2, name: 'Mary May', age: '1', color: 'green', dob: '12/05/1989', rating: 4, passed: true, pets: ['cat'] },\n { id: 3, name: 'Christine Lobowski', age: '42', color: 'green', dob: '10/05/1985', rating: 4, passed: false },\n { id: 4, name: 'Brendon Philips', age: '125', color: 'red', dob: '01/08/1980', rating: 4.5, passed: true },\n { id: 5, name: 'Margret Marmajuke', age: '16', color: 'yellow', dob: '07/01/1999', rating: 4, passed: false },\n {\n id: 6,\n name: 'Van Ng',\n age: '37',\n color: 'green',\n dob: '06/10/1982',\n rating: 4,\n passed: true,\n pets: ['dog', 'fish']\n },\n { id: 7, name: 'Duc Ng', age: '37', color: 'yellow', dob: '10/10/1982', rating: 4, passed: true, pets: ['dog'] }\n];\n// Editable Example:\nvar colorOptions = (_a = {}, _a[''] = ' ', _a.red = 'red', _a.green = 'green', _a.yellow = 'yellow', _a);\nvar petOptions = [{ id: 'cat', name: 'cat' }, { id: 'dog', name: 'dog' }, { id: 'fish', name: 'fish' }];\nvar editableColumns = [\n { title: 'Name', field: 'name', width: 150, editor: 'input', headerFilter: 'input' },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress', editor: 'progress' },\n {\n title: 'Favourite Color',\n field: 'color',\n editor: 'select',\n editorParams: { allowEmpty: true, showListOnEmpty: true, values: colorOptions },\n headerFilter: 'select',\n headerFilterParams: { values: colorOptions }\n },\n { title: 'Date Of Birth', field: 'dob', editor: DateEditor_1[\"default\"], editorParams: { format: 'MM/dd/yyyy' } },\n {\n title: 'Pets',\n field: 'pets',\n editor: MultiSelectEditor_1[\"default\"],\n editorParams: { values: petOptions },\n formatter: MultiValueFormatter_1[\"default\"],\n formatterParams: { style: 'PILL' }\n },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross', editor: true }\n];\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.rowClick = function (e, row) {\n console.log('ref table: ', _this.ref.table); // this is the Tabulator table instance\n console.log('rowClick id: ${row.getData().id}', row, e);\n };\n _this.setData = function () {\n _this.setState({ data: data });\n };\n _this.clearData = function () {\n _this.setState({ data: [] });\n };\n return _this;\n }\n default_1.prototype.render = function () {\n var _this = this;\n var options = {\n height: 150,\n movableRows: true\n };\n return (React.createElement(\"div\", null,\n React.createElement(ReactTabulator_1[\"default\"], { ref: function (ref) { return (_this.ref = ref); }, columns: columns, data: data, rowClick: this.rowClick, options: options, \"data-custom-attr\": \"test-custom-attribute\", className: \"custom-css-class\" }),\n React.createElement(\"h3\", null,\n \"Asynchronous data: (e.g. fetch) - \",\n React.createElement(\"button\", { onClick: this.setData }, \"Set Data\"),\n ' ',\n React.createElement(\"button\", { onClick: this.clearData }, \"Clear\")),\n React.createElement(ReactTabulator_1[\"default\"], { columns: columns, data: this.state.data }),\n React.createElement(\"h3\", null, \"Editable Table\"),\n React.createElement(ReactTabulator_1[\"default\"], { columns: editableColumns, data: data, cellEdited: function (cell) { return console.log('cellEdited', cell); }, dataEdited: function (newData) { return console.log('dataEdited', newData); }, footerElement: React.createElement(\"span\", null, \"Footer\") }),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"https://github.com/ngduc/react-tabulator\", target: \"_blank\" }, \"Back to: Github Repo: react-tabulator\")),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"http://tabulator.info/examples/4.0\", target: \"_blank\" }, \"More Tabulator's Examples\"))));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar date_fns_1 = require(\"date-fns\");\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '' };\n _this.ref = null;\n _this.format = _this.props.editorParams.format || 'MM/dd/yyyy'; // TODO: detect from user locale & set default.\n _this.setValueOnSuccess = function (value) {\n if (value === void 0) { value = _this.state.value; }\n var success = _this.props.success;\n var result = value;\n if (result.indexOf('-') > 0) {\n // value is \"yyyy-MM-dd\" => parse it\n result = date_fns_1.format(value, _this.format);\n }\n success(result);\n };\n _this.onChange = function (ev) {\n var value = ev.target.value;\n _this.setState({ value: value });\n };\n _this.onKeyPress = function (ev) {\n var cancel = _this.props.cancel;\n if (ev.keyCode === 13) {\n _this.setValueOnSuccess();\n }\n else if (ev.keyCode === 27) {\n cancel();\n }\n };\n _this.onBlur = function () {\n _this.setValueOnSuccess();\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var value = _this.props.cell.getValue();\n _this.setState({ value: value });\n _this.ref.focus();\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var cell = this.props.cell;\n var valueDt = date_fns_1.parse(cell.getValue(), this.format, new Date(), { awareOfUnicodeTokens: true });\n var value = date_fns_1.format(valueDt, DEFAULT_DATE_INPUT_FORMAT);\n return (React.createElement(\"input\", { type: \"date\", ref: function (r) { return (_this.ref = r); }, defaultValue: value, \n // value={value}\n onBlur: this.onBlur, onChange: this.onChange, onKeyUp: this.onKeyPress, style: inputCss }));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar Utils_1 = require(\"../Utils\");\n// import { parse, format } from 'date-fns';\n// import ReactTags from 'react-tag-autocomplete';\nvar ReactTags = require('react-tag-autocomplete');\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '', values: [], autofocus: false };\n _this.ref = null;\n _this.setValueOnSuccess = function (values) {\n if (values === void 0) { values = _this.state.values; }\n var _a = _this.props, success = _a.success, cancel = _a.cancel;\n // console.log('setValueOnSuccess: ', values);\n success(values);\n // cancel();\n };\n _this.handleDelete = function (i) {\n // console.log('- handleDelete ', i);\n var values = _this.state.values;\n var newValues = values.filter(function (item, index) { return index !== i; });\n _this.setState({ values: newValues }, function () {\n _this.setValueOnSuccess(newValues);\n });\n };\n _this.handleAddition = function (item) {\n var values = _this.state.values;\n if (item.name) {\n // console.log('- handleAddition: ', item);\n values.push({ id: item.name, name: item.name });\n _this.setState({ values: values }, function () {\n _this.setValueOnSuccess(values);\n });\n }\n };\n // order: handleBlur => sucess() => grid's cellEdited => grid's dataEdited => handleAddition\n _this.handleBlur = function () {\n var cancel = _this.props.cancel;\n var newValue = _this.ref.input.input.value;\n if (newValue) {\n // console.log(111, newValue, this.ref);\n var values = Utils_1.clone(_this.state.values);\n values.push({ id: newValue, name: newValue });\n // console.log('- handleBlur ', values);\n _this.setValueOnSuccess(values);\n }\n else {\n cancel();\n }\n var el = react_dom_1.findDOMNode(_this.ref);\n if (el && el.parentElement.parentElement.parentElement) {\n el.parentElement.parentElement.parentElement.style.overflow = 'hidden';\n }\n // console.log('- handleBlur END');\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var el = react_dom_1.findDOMNode(_this.ref);\n el.style.zIndex = 1;\n el.parentElement.parentElement.parentElement.style.overflow = 'inherit';\n el.querySelector('input').focus();\n var values = (_this.props.cell.getValue() || []).map(function (item) {\n return typeof item === 'string' ? { id: item, name: item } : item;\n });\n _this.setState({ values: values });\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var editorParams = this.props.editorParams;\n var values = this.state.values;\n var suggestions = editorParams.values;\n return (React.createElement(\"div\", null,\n React.createElement(ReactTags, { ref: function (ref) { return (_this.ref = ref); }, placeholder: \"Select or Type\", tags: values, suggestions: suggestions, allowNew: true, autoresize: true, autofocus: this.state.autofocus, handleAddition: this.handleAddition, handleDelete: this.handleDelete, handleBlur: this.handleBlur, minQueryLength: 0 })));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","'use strict'\n\nvar React = require('react')\nvar PropTypes = require('prop-types')\nvar Tag = require('./Tag')\nvar Input = require('./Input')\nvar Suggestions = require('./Suggestions')\n\nvar KEYS = {\n ENTER: 13,\n TAB: 9,\n BACKSPACE: 8,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n}\n\nvar CLASS_NAMES = {\n root: 'react-tags',\n rootFocused: 'is-focused',\n selected: 'react-tags__selected',\n selectedTag: 'react-tags__selected-tag',\n selectedTagName: 'react-tags__selected-tag-name',\n search: 'react-tags__search',\n searchInput: 'react-tags__search-input',\n suggestions: 'react-tags__suggestions',\n suggestionActive: 'is-active',\n suggestionDisabled: 'is-disabled'\n}\n\nvar ReactTags = (function (superclass) {\n function ReactTags (props) {\n superclass.call(this, props)\n\n this.state = {\n query: '',\n focused: false,\n expandable: false,\n selectedIndex: -1,\n classNames: Object.assign({}, CLASS_NAMES, this.props.classNames)\n }\n\n this.inputEventHandlers = {\n // Provide a no-op function to the input component to avoid warnings\n // <https://github.com/i-like-robots/react-tags/issues/135>\n // <https://github.com/facebook/react/issues/13835>\n onChange: function () {},\n onBlur: this.handleBlur.bind(this),\n onFocus: this.handleFocus.bind(this),\n onInput: this.handleInput.bind(this),\n onKeyDown: this.handleKeyDown.bind(this)\n }\n }\n\n if ( superclass ) ReactTags.__proto__ = superclass;\n ReactTags.prototype = Object.create( superclass && superclass.prototype );\n ReactTags.prototype.constructor = ReactTags;\n\n ReactTags.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n classNames: Object.assign({}, CLASS_NAMES, newProps.classNames)\n })\n };\n\n ReactTags.prototype.handleInput = function handleInput (e) {\n var query = e.target.value\n\n if (this.props.handleInputChange) {\n this.props.handleInputChange(query)\n }\n\n this.setState({ query: query })\n };\n\n ReactTags.prototype.handleKeyDown = function handleKeyDown (e) {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n var ref$1 = this.props;\n var delimiters = ref$1.delimiters;\n var delimiterChars = ref$1.delimiterChars;\n\n // when one of the terminating keys is pressed, add current query to the tags.\n if (delimiters.indexOf(e.keyCode) > -1 || delimiterChars.indexOf(e.key) > -1) {\n if (query || selectedIndex > -1) {\n e.preventDefault()\n }\n\n this.handleDelimiter()\n }\n\n // when backspace key is pressed and query is blank, delete the last tag\n if (e.keyCode === KEYS.BACKSPACE && query.length === 0 && this.props.allowBackspace) {\n this.deleteTag(this.props.tags.length - 1)\n }\n\n if (e.keyCode === KEYS.UP_ARROW) {\n e.preventDefault()\n\n // if last item, cycle to the bottom\n if (selectedIndex <= 0) {\n this.setState({ selectedIndex: this.suggestions.state.options.length - 1 })\n } else {\n this.setState({ selectedIndex: selectedIndex - 1 })\n }\n }\n\n if (e.keyCode === KEYS.DOWN_ARROW) {\n e.preventDefault()\n\n this.setState({ selectedIndex: (selectedIndex + 1) % this.suggestions.state.options.length })\n }\n };\n\n ReactTags.prototype.handleDelimiter = function handleDelimiter () {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n\n if (query.length >= this.props.minQueryLength) {\n // Check if the user typed in an existing suggestion.\n var match = this.suggestions.state.options.findIndex(function (suggestion) {\n return suggestion.name.search(new RegExp((\"^\" + query + \"$\"), 'i')) === 0\n })\n\n var index = selectedIndex === -1 ? match : selectedIndex\n\n if (index > -1) {\n this.addTag(this.suggestions.state.options[index])\n } else if (this.props.allowNew) {\n this.addTag({ name: query })\n }\n }\n };\n\n ReactTags.prototype.handleClick = function handleClick (e) {\n if (document.activeElement !== e.target) {\n this.input.input.focus()\n }\n };\n\n ReactTags.prototype.handleBlur = function handleBlur () {\n this.setState({ focused: false, selectedIndex: -1 })\n\n if (this.props.handleBlur) {\n this.props.handleBlur()\n }\n\n if (this.props.addOnBlur) {\n this.handleDelimiter()\n }\n };\n\n ReactTags.prototype.handleFocus = function handleFocus () {\n this.setState({ focused: true })\n\n if (this.props.handleFocus) {\n this.props.handleFocus()\n }\n };\n\n ReactTags.prototype.addTag = function addTag (tag) {\n if (tag.disabled) {\n return\n }\n\n if (typeof this.props.handleValidate === 'function' && !this.props.handleValidate(tag)) {\n return\n }\n\n this.props.handleAddition(tag)\n\n // reset the state\n this.setState({\n query: '',\n selectedIndex: -1\n })\n };\n\n ReactTags.prototype.deleteTag = function deleteTag (i) {\n this.props.handleDelete(i)\n\n if (this.props.clearInputOnDelete && this.state.query !== '') {\n this.setState({ query: '' })\n }\n };\n\n ReactTags.prototype.render = function render () {\n var this$1 = this;\n\n var listboxId = 'ReactTags-listbox'\n\n var TagComponent = this.props.tagComponent || Tag\n\n var tags = this.props.tags.map(function (tag, i) { return (\n React.createElement( TagComponent, {\n key: i, tag: tag, classNames: this$1.state.classNames, onDelete: this$1.deleteTag.bind(this$1, i) })\n ); })\n\n var expandable = this.state.focused && this.state.query.length >= this.props.minQueryLength\n var classNames = [this.state.classNames.root]\n\n this.state.focused && classNames.push(this.state.classNames.rootFocused)\n\n return (\n React.createElement( 'div', { className: classNames.join(' '), onClick: this.handleClick.bind(this) },\n React.createElement( 'div', { className: this.state.classNames.selected, 'aria-live': 'polite', 'aria-relevant': 'additions removals' },\n tags\n ),\n React.createElement( 'div', { className: this.state.classNames.search },\n React.createElement( Input, Object.assign({}, this.state, { inputAttributes: this.props.inputAttributes, inputEventHandlers: this.inputEventHandlers, ref: function (c) { this$1.input = c }, listboxId: listboxId, autofocus: this.props.autofocus, autoresize: this.props.autoresize, expandable: expandable, placeholder: this.props.placeholder })),\n React.createElement( Suggestions, Object.assign({}, this.state, { ref: function (c) { this$1.suggestions = c }, listboxId: listboxId, expandable: expandable, suggestions: this.props.suggestions, suggestionsFilter: this.props.suggestionsFilter, addTag: this.addTag.bind(this), maxSuggestionsLength: this.props.maxSuggestionsLength }))\n )\n )\n )\n };\n\n return ReactTags;\n}(React.Component));\n\nReactTags.defaultProps = {\n tags: [],\n placeholder: 'Add new tag',\n suggestions: [],\n suggestionsFilter: null,\n autofocus: true,\n autoresize: true,\n delimiters: [KEYS.TAB, KEYS.ENTER],\n delimiterChars: [],\n minQueryLength: 2,\n maxSuggestionsLength: 6,\n allowNew: false,\n allowBackspace: true,\n tagComponent: null,\n inputAttributes: {},\n addOnBlur: false,\n clearInputOnDelete: true\n}\n\nReactTags.propTypes = {\n tags: PropTypes.arrayOf(PropTypes.object),\n placeholder: PropTypes.string,\n suggestions: PropTypes.arrayOf(PropTypes.object),\n suggestionsFilter: PropTypes.func,\n autofocus: PropTypes.bool,\n autoresize: PropTypes.bool,\n delimiters: PropTypes.arrayOf(PropTypes.number),\n delimiterChars: PropTypes.arrayOf(PropTypes.string),\n handleDelete: PropTypes.func.isRequired,\n handleAddition: PropTypes.func.isRequired,\n handleInputChange: PropTypes.func,\n handleFocus: PropTypes.func,\n handleBlur: PropTypes.func,\n handleValidate: PropTypes.func,\n minQueryLength: PropTypes.number,\n maxSuggestionsLength: PropTypes.number,\n classNames: PropTypes.object,\n allowNew: PropTypes.bool,\n allowBackspace: PropTypes.bool,\n tagComponent: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element\n ]),\n inputAttributes: PropTypes.object,\n addOnBlur: PropTypes.bool,\n clearInputOnDelete: PropTypes.bool\n}\n\nmodule.exports = ReactTags\n","'use strict'\n\nvar React = require('react')\n\nmodule.exports = function (props) { return (\n React.createElement( 'button', { type: 'button', className: props.classNames.selectedTag, title: 'Click to remove tag', onClick: props.onDelete },\n React.createElement( 'span', { className: props.classNames.selectedTagName }, props.tag.name)\n )\n); }\n","'use strict'\n\nvar React = require('react')\n\nvar SIZER_STYLES = {\n position: 'absolute',\n width: 0,\n height: 0,\n visibility: 'hidden',\n overflow: 'scroll',\n whiteSpace: 'pre'\n}\n\nvar STYLE_PROPS = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing'\n]\n\nvar Input = (function (superclass) {\n function Input (props) {\n superclass.call(this, props)\n this.state = { inputWidth: null }\n }\n\n if ( superclass ) Input.__proto__ = superclass;\n Input.prototype = Object.create( superclass && superclass.prototype );\n Input.prototype.constructor = Input;\n\n Input.prototype.componentDidMount = function componentDidMount () {\n if (this.props.autoresize) {\n this.copyInputStyles()\n this.updateInputWidth()\n }\n\n if (this.props.autofocus) {\n this.input.focus()\n }\n };\n\n Input.prototype.componentDidUpdate = function componentDidUpdate () {\n this.updateInputWidth()\n };\n\n Input.prototype.copyInputStyles = function copyInputStyles () {\n var this$1 = this;\n\n var inputStyle = window.getComputedStyle(this.input)\n\n STYLE_PROPS.forEach(function (prop) {\n this$1.sizer.style[prop] = inputStyle[prop]\n })\n };\n\n Input.prototype.updateInputWidth = function updateInputWidth () {\n var inputWidth\n\n if (this.props.autoresize) {\n // scrollWidth is designed to be fast not accurate.\n // +2 is completely arbitrary but does the job.\n inputWidth = Math.ceil(this.sizer.scrollWidth) + 2\n }\n\n if (inputWidth !== this.state.inputWidth) {\n this.setState({ inputWidth: inputWidth })\n }\n };\n\n Input.prototype.render = function render () {\n var this$1 = this;\n\n var ref = this.props;\n var inputAttributes = ref.inputAttributes;\n var inputEventHandlers = ref.inputEventHandlers;\n var query = ref.query;\n var placeholder = ref.placeholder;\n var expandable = ref.expandable;\n var listboxId = ref.listboxId;\n var selectedIndex = ref.selectedIndex;\n\n return (\n React.createElement( 'div', { className: this.props.classNames.searchInput },\n React.createElement( 'input', Object.assign({},\n inputAttributes, inputEventHandlers, { ref: function (c) { this$1.input = c }, value: query, placeholder: placeholder, role: 'combobox', 'aria-autocomplete': 'list', 'aria-label': placeholder, 'aria-owns': listboxId, 'aria-activedescendant': selectedIndex > -1 ? (listboxId + \"-\" + selectedIndex) : null, 'aria-expanded': expandable, style: { width: this.state.inputWidth } })),\n React.createElement( 'div', { ref: function (c) { this$1.sizer = c }, style: SIZER_STYLES }, query || placeholder)\n )\n )\n };\n\n return Input;\n}(React.Component));\n\nmodule.exports = Input\n","'use strict'\n\nvar React = require('react')\n\nfunction escapeForRegExp (query) {\n return query.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nfunction markIt (input, query) {\n if (query) {\n var regex = RegExp(escapeForRegExp(query), 'gi')\n input = input.replace(regex, '<mark>$&</mark>')\n }\n\n return {\n __html: input\n }\n}\n\nfunction filterSuggestions (query, suggestions, length, suggestionsFilter) {\n if (!suggestionsFilter) {\n var regex = new RegExp((\"(?:^|\\\\s)\" + (escapeForRegExp(query))), 'i')\n suggestionsFilter = function (item) { return regex.test(item.name); }\n }\n\n return suggestions.filter(function (item) { return suggestionsFilter(item, query); }).slice(0, length)\n}\n\nvar Suggestions = (function (superclass) {\n function Suggestions (props) {\n superclass.call(this, props)\n\n this.state = {\n options: filterSuggestions(this.props.query, this.props.suggestions, this.props.maxSuggestionsLength, this.props.suggestionsFilter)\n }\n }\n\n if ( superclass ) Suggestions.__proto__ = superclass;\n Suggestions.prototype = Object.create( superclass && superclass.prototype );\n Suggestions.prototype.constructor = Suggestions;\n\n Suggestions.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n options: filterSuggestions(newProps.query, newProps.suggestions, newProps.maxSuggestionsLength, newProps.suggestionsFilter)\n })\n };\n\n Suggestions.prototype.handleMouseDown = function handleMouseDown (item, e) {\n // focus is shifted on mouse down but calling preventDefault prevents this\n e.preventDefault()\n this.props.addTag(item)\n };\n\n Suggestions.prototype.render = function render () {\n var this$1 = this;\n\n if (!this.props.expandable || !this.state.options.length) {\n return null\n }\n\n var options = this.state.options.map(function (item, i) {\n var key = (this$1.props.listboxId) + \"-\" + i\n var classNames = []\n\n if (this$1.props.selectedIndex === i) {\n classNames.push(this$1.props.classNames.suggestionActive)\n }\n\n if (item.disabled) {\n classNames.push(this$1.props.classNames.suggestionDisabled)\n }\n\n return (\n React.createElement( 'li', {\n id: key, key: key, role: 'option', className: classNames.join(' '), 'aria-disabled': item.disabled === true, onMouseDown: this$1.handleMouseDown.bind(this$1, item) },\n React.createElement( 'span', { dangerouslySetInnerHTML: markIt(item.name, this$1.props.query) })\n )\n )\n })\n\n return (\n React.createElement( 'div', { className: this.props.classNames.suggestions },\n React.createElement( 'ul', { role: 'listbox', id: this.props.listboxId }, options)\n )\n )\n };\n\n return Suggestions;\n}(React.Component));\n\nmodule.exports = Suggestions\n","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar createCellEl = function () {\n var el = document.createElement('div');\n el.style.height = '100%';\n return el;\n};\n// example: { title: 'Pets', field: 'pets', formatter: MultiValueFormatter, formatterParams: { style: 'PILL' } }\n// default style: comma separated plain text\n// other styles: PILL\nfunction default_1(cell, formatterParams, onRendered) {\n var style = formatterParams.style || ''; // comma separated plain text\n var arr = cell.getValue() || [];\n var content = arr && arr.length > 0 && typeof arr[0] === 'string' ? React.createElement(\"span\", null, arr.join(', ')) : React.createElement(\"span\", null);\n if (style === 'PILL') {\n // TODO: use React.Fragment here to remove unnecessary div. (but will break React 15 example in Codesandbox)\n content = (React.createElement(\"div\", null, arr.map(function (item) {\n return typeof item === 'string' ? React.createElement(\"span\", { key: item }, item) : React.createElement(\"span\", { key: item.name }, item.name);\n })));\n }\n var el = createCellEl();\n el.className = 'multi-value-formatter-content';\n el.title = arr && arr.length > 0 && typeof arr[0] === 'string' ? arr.join(', ') : '';\n react_dom_1.render(content, el);\n return el;\n}\nexports[\"default\"] = default_1;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","export default function toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber)\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimeter)\n var timeString\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0]\n timeString = dateString.substr(dateStrings.date.length, dateString.length)\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n var hours\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n\n if (!validateTimezone(hours)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n var minutes = parseInt(token[3], 10)\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime()\n var amount = toInteger(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","export default function cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {}\n var object = {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property]\n }\n }\n\n return object\n}\n","import startOfWeek from '../startOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekOptions = cloneObject(dirtyOptions)\n startOfWeekOptions.weekStartsOn = 1\n return startOfWeek(dirtyDate, startOfWeekOptions)\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfDay from '../startOfDay/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft, dirtyOptions)\n var startOfDayRight = startOfDay(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfDayLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayLeft)\n var timestampRight = startOfDayRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear (dirtyDate, dirtyISOWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeekYear = toInteger(dirtyISOWeekYear)\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date, dirtyOptions), dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOWeekYear(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getISOWeekYear from '../getISOWeekYear/index.js'\nimport setISOWeekYear from '../setISOWeekYear/index.js'\n\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate, dirtyOptions) + amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, amount * 12, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval?\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link docs/types/Options}\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> false\n */\nexport default function areIntervalsOverlapping (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return NaN\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = NaN\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN)\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff > 0) {\n return -1\n } else if (diff < 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\n\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n return getISOWeekYear(dirtyDateLeft, dirtyOptions) - getISOWeekYear(dirtyDateRight, dirtyOptions)\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft, dirtyOptions)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfISOWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)\n var timestampRight = startOfISOWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n","import getQuarter from '../getQuarter/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft, dirtyOptions) - getQuarter(dateRight, dirtyOptions)\n\n return yearDiff * 4 + quarterDiff\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekLeft)\n var timestampRight = startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n*/\nexport default function differenceInDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight, dirtyOptions))\n\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastDayNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getTime() - dateRight.getTime()\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addISOWeekYears from '../addISOWeekYears/index.js'\n\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addISOWeekYears(dirtyDate, -amount, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport subISOWeekYears from '../subISOWeekYears/index.js'\n\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight, dirtyOptions))\n dateLeft = subISOWeekYears(dateLeft, sign * difference, dirtyOptions)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastISOWeekYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nexport default function differenceInMinutes (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nexport default function differenceInMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight, dirtyOptions))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastMonthNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMonths from '../differenceInMonths/index.js'\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInDays from '../differenceInDays/index.js'\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nexport default function differenceInWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nexport default function differenceInYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight, dirtyOptions))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate, dirtyOptions))\n currentDate.setDate(currentDate.getDate() + 1)\n }\n\n return dates\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week between 6 October 2014 and 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [ 2014-10-05T00:00:00.000Z,\n * // 2014-10-12T00:00:00.000Z,\n * // 2014-10-19T00:00:00.000Z,\n * // 2014-10-26T00:00:00.000Z,\n * // 2014-11-02T00:00:00.000Z,\n * // 2014-11-09T00:00:00.000Z,\n * // 2014-11-16T00:00:00.000Z,\n * // 2014-11-23T00:00:00.000Z\n * // ]\n */\nexport default function eachWeekOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var startDateWeek = startOfWeek(startDate, dirtyOptions)\n var endDateWeek = startOfWeek(endDate, dirtyOptions)\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15)\n endDateWeek.setHours(15)\n\n endTime = endDateWeek.getTime()\n\n var weeks = []\n\n var currentWeek = startDateWeek\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0)\n weeks.push(toDate(currentWeek, dirtyOptions))\n currentWeek = addWeeks(currentWeek, 1)\n currentWeek.setHours(15)\n }\n\n return weeks\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 0\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\nimport eachDayOfInterval from '../eachDayOfInterval/index.js'\nimport isSunday from '../isSunday/index.js'\nimport isWeekend from '../isWeekend/index.js'\n\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2022, 8, 17),\n * end: new Date(2022, 8, 30)\n * })\n * //=> [\n * 2022-09-17T22:00:00.000Z,\n * 2022-09-23T22:00:00.000Z,\n * 2022-09-24T22:00:00.000Z\n * ]\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2016, 2, 25),\n * end: new Date(2016, 2, 5)\n * })\n * //=> RangeError: Invalid interval\n */\nexport default function eachWeekendOfInterval(dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dateInterval = eachDayOfInterval(interval)\n var weekends = []\n var index = 0\n while (index++ < dateInterval.length) {\n var date = dateInterval[index]\n if (isWeekend(date)) {\n weekends.push(new Date(date))\n if (isSunday(date)) {\n index = index + 5\n }\n }\n }\n return weekends\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|String|Number} date - the given month\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2020, 1, 1))\n * //=> [\n * 2020-02-01T23:00:00.000Z,\n * 2020-02-07T23:00:00.000Z,\n * 2020-02-08T23:00:00.000Z,\n * ...\n * 2020-02-28T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfMonth(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfMonth(dirtyDate, dirtyOptions)\n var endDate = endOfMonth(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var cleanDate = toDate(dirtyDate, dirtyOptions)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport endOfYear from '../endOfYear/index.js'\n\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|String|Number} date - the given year\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * 2020-01-03T23:00:00.000Z,\n * 2020-01-04T23:00:00.000Z,\n * 2020-01-10T23:00:00.000Z,\n * ...\n * 2020-12-26T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfYear(dirtyDate, dirtyOptions)\n var endDate = endOfYear(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade, 11, 31)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(59, 59, 999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import endOfWeek from '../endOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var endOfWeekOptions = cloneObject(dirtyOptions)\n endOfWeekOptions.weekStartsOn = 1\n return endOfWeek(dirtyDate, endOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return !isNaN(date)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token]\n } else if (count === 1) {\n result = formatDistanceLocale[token].one\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n","export default function buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var format = args.formats[width] || args.formats[args.defaultWidth]\n return format\n }\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n}\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n}\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n}\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n}\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","export default function buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var context = options.context ? String(options.context) : 'standalone'\n\n var valuesArray\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth]\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth]\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex\n return valuesArray[index]\n }\n}\n","export default function buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n var width = options.width\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]\n var matchResult = string.match(matchPattern)\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]\n\n var value\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n })\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n })\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js'\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i\nvar parseOrdinalNumberPattern = /\\d+/i\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n}\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n}\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n}\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n}\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n}\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n}\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n}\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n}\n\nexport default match\n","export default function buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n\n var matchResult = string.match(args.matchPattern)\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parseResult = string.match(args.parsePattern)\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n}\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n}\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n}\n\nexport default localize\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n date.setUTCMonth(0, 1)\n date.setUTCHours(0, 0, 0, 0)\n var startOfYearTimestamp = date.getTime()\n var difference = timestamp - startOfYearTimestamp\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n","import toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../toInteger/index.js'\nimport getUTCWeekYear from '../getUTCWeekYear/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCWeek(firstWeek, dirtyOptions)\n return date\n}\n","import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js'\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear()\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options)\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear()\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options)\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options)\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate()\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options)\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (hours === 0) {\n hours = 12\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (hours === 0) {\n hours = 24\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes()\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds()\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length\n var milliseconds = date.getUTCMilliseconds()\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3))\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = Math.floor(originalDate.getTime() / 1000)\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = originalDate.getTime()\n return addLeadingZeros(timestamp, token.length)\n }\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(absOffset % 60, 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || ''\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","function dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/)\n var datePattern = matchResult[1]\n var timePattern = matchResult[2]\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong, options)\n }\n\n var dateTimeFormat\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'})\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'})\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'})\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'})\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong, options))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong, options))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n}\n\nexport default longFormatters\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n","export var protectedTokens = ['D', 'DD', 'YY', 'YYYY']\n\nexport function isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nexport function throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from './_lib/formatters/index.js'\nimport longFormatters from './_lib/longFormatters/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options)\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options)\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n }\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0]\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter]\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring)\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport differenceInMonths from '../differenceInMonths/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistance (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, options)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = Math.round((seconds - offsetInSeconds) / 60)\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return locale.formatDistance('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft, options)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'minute'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'month', roundingMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceStrict (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod)\n var roundingMethodFn\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\")\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, dirtyOptions)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60)\n\n var unit\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second'\n } else if (minutes < 60) {\n unit = 'minute'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month'\n } else {\n unit = 'year'\n }\n } else {\n unit = String(options.unit)\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60)\n return locale.formatDistance('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR)\n return locale.formatDistance('xYears', years, localizeOptions)\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport format from '../format/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @param {Date|String|Number} date - the date to format\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\nexport default function formatRelative (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var baseDate = toDate(dirtyBaseDate, dirtyOptions)\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property')\n }\n\n var diff = differenceInCalendarDays(date, baseDate, options)\n\n if (isNaN(diff)) {\n return 'Invalid Date'\n }\n\n var token\n if (diff < -6) {\n token = 'other'\n } else if (diff < -1) {\n token = 'lastWeek'\n } else if (diff < 0) {\n token = 'yesterday'\n } else if (diff < 1) {\n token = 'today'\n } else if (diff < 2) {\n token = 'tomorrow'\n } else if (diff < 7) {\n token = 'nextWeek'\n } else {\n token = 'other'\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date), options)\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate), options)\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options)\n return format(date, formatStr, options)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var unixTime = toInteger(dirtyUnixTime)\n\n return toDate(unixTime * 1000, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = differenceInCalendarDays(date, startOfYear(date, dirtyOptions), dirtyOptions)\n var dayOfYear = diff + 1\n return dayOfYear\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n","import toDate from '../toDate/index.js'\nimport isLeapYear from '../isLeapYear/index.js'\n\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(date)) {\n return NaN\n }\n\n return isLeapYear(date, dirtyOptions) ? 366 : 365\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n return decade\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = date.getHours()\n return hours\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfISOWeek(date, dirtyOptions).getTime() - startOfISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var thisYear = startOfISOWeekYear(dirtyDate, dirtyOptions)\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60, dirtyOptions), dirtyOptions)\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = date.getMinutes()\n return minutes\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n return month\n}\n","import toDate from '../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> 0\n */\nexport default function getOverlappingDaysInIntervals (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate = rightStartTime < leftStartTime\n ? leftStartTime\n : rightStartTime\n\n var overlapEndDate = rightEndTime > leftEndTime\n ? leftEndTime\n : rightEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds()\n return seconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n return timestamp\n}\n","import getTime from '../getTime/index.js'\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return Math.floor(getTime(dirtyDate, dirtyOptions) / 1000)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), {weekStartsOn: 6})\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), {firstWeekContainsDate: 4})\n * //=> 2004\n */\nexport default function getWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getWeekYear from '../getWeekYear/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n var date = startOfWeek(firstWeek, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> 53\n */\n\nexport default function getWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfWeek(date, dirtyOptions).getTime() - startOfWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getDate from '../getDate/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport getDay from '../getDay/index.js'\n\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var startWeekDay = getDay(startOfMonth(dirtyDate, dirtyOptions), dirtyOptions)\n var currentWeekDay = getDay(dirtyDate, dirtyOptions)\n\n var startWeekDayWithOptions = startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay\n var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0\n\n return Math.ceil((getDate(dirtyDate, dirtyOptions) + diff) / 7)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js'\nimport lastDayOfMonth from '../lastDayOfMonth/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(\n * new Date(2015, 1, 8)\n * )\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(\n * new Date(2017, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 6\n */\nexport default function getWeeksInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return differenceInCalendarWeeks(\n lastDayOfMonth(dirtyDate, dirtyOptions),\n startOfMonth(dirtyDate, dirtyOptions),\n dirtyOptions\n ) + 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() > dateToCompare.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() < dateToCompare.getTime()\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @param {Options} [options] - the object with options. Unused; present for FP submodule compatibility sake. See [Options]{@link https://date-fns.org/docs/Options}\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate (value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions)\n var dateRight = toDate(dirtyRightDate, dirtyOptions)\n return dateLeft.getTime() === dateRight.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDate() === 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 5\n}\n","import toDate from '../toDate/index.js'\nimport endOfDay from '../endOfDay/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return endOfDay(date, dirtyOptions).getTime() === endOfMonth(date, dirtyOptions).getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 1\n}\n","import startOfDay from '../startOfDay/index.js'\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nexport default function isSameDay (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfDay = startOfDay(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(0, 0, 0)\n return date\n}\n","import startOfHour from '../startOfHour/index.js'\n\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nexport default function isSameHour (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfHour = startOfHour(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nexport default function isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n","import isSameWeek from '../isSameWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nexport default function isSameISOWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var isSameWeekOptions = cloneObject(dirtyOptions)\n isSameWeekOptions.weekStartsOn = 1\n return isSameWeek(dirtyDateLeft, dirtyDateRight, isSameWeekOptions)\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nexport default function isSameISOWeekYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(0, 0)\n return date\n}\n","import startOfMinute from '../startOfMinute/index.js'\n\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nexport default function isSameMinute (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameMonth (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import startOfQuarter from '../startOfQuarter/index.js'\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nexport default function isSameQuarter (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(0)\n return date\n}\n","import startOfSecond from '../startOfSecond/index.js'\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nexport default function isSameSecond (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 4\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 2\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 3\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(\n * new Date(2014, 0, 10),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> false\n */\nexport default function isWithinInterval (dirtyDate, dirtyInterval, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var time = toDate(dirtyDate, dirtyOptions).getTime()\n var startTime = toDate(interval.start, dirtyOptions).getTime()\n var endTime = toDate(interval.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import lastDayOfWeek from '../lastDayOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var lastDayOfWeekOptions = cloneObject(dirtyOptions)\n lastDayOfWeekOptions.weekStartsOn = 1\n return lastDayOfWeek(dirtyDate, lastDayOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js'\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_SECOND = 1000\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n}\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n}\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10)\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear\n\n var result\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100\n } else {\n var rangeEnd = absCurrentYear + 50\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\n// User for validation\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n }\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options)\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n }\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear()\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0)\n firstWeekOfYear.setUTCFullYear(value, 0, 4)\n firstWeekOfYear.setUTCHours(0, 0, 0, 0)\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n var month = date.getUTCMonth()\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n }\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0)\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value\n date.setUTCHours(hours, 0, 0, 0)\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0)\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0)\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n }\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value)\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n}\n\nexport default parsers\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCWeek from '../getUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getUTCWeek(date, dirtyOptions) - week\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate, dirtyOptions)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 20\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\nvar notWhitespaceRegExp = /\\S/\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString)\n var formatString = String(dirtyFormatString)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ]\n\n var i\n\n var tokens = formatString.match(formattingTokensRegExp)\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token)\n }\n\n var firstCharacter = token[0]\n var parser = parsers[firstCharacter]\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n )\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n })\n\n dateString = parseResult.rest\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\"\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token)\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate, options)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i]\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions)\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0)\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n )\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n )\n return convertedDate\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute\n *\n * @param {Date|String|Number} date - the date to round\n * @param {Number} [nearestTo=1] - the closest minute to round to, must be between 1 and 30 inclusive\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n */\nexport default function roundToNearestMinutes (dirtyDate, dirtyNearestTo, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present')\n }\n\n var nearestTo = arguments.length === 1 ? 1 : toInteger(dirtyNearestTo)\n\n if (arguments.length === 2 && typeof dirtyNearestTo !== 'number' && typeof dirtyNearestTo !== 'string') {\n dirtyOptions = dirtyNearestTo\n nearestTo = 1\n }\n\n if (!nearestTo || nearestTo > 30 || nearestTo < 1) {\n throw new RangeError('nearestTo must be between 1 and 30')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo\n var remainderMinutes = minutes % nearestTo\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate (dirtyDate, dirtyDayOfMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = toInteger(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the new date with the day of the week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = toInteger(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff, options)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear (dirtyDate, dirtyDayOfYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfYear = toInteger(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours (dirtyDate, dirtyHours, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = toInteger(dirtyHours)\n date.setHours(hours)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\nimport getISODay from '../getISODay/index.js'\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n var currentDay = getISODay(date, dirtyOptions)\n var diff = day - currentDay\n return addDays(date, diff, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getISOWeek from '../getISOWeek/index.js'\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getISOWeek(date, dirtyOptions) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds (dirtyDate, dirtyMilliseconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = toInteger(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes (dirtyDate, dirtyMinutes, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = toInteger(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth (dirtyDate, dirtyMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = toInteger(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport setMonth from '../setMonth/index.js'\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarter setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter (dirtyDate, dirtyQuarter, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = toInteger(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds (dirtyDate, dirtySeconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = toInteger(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getWeek from '../getWeek/index.js'\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getWeek(date, dirtyOptions) - week\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear (dirtyDate, dirtyWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var date = toDate(dirtyDate, dirtyOptions)\n var weekYear = toInteger(dirtyWeekYear)\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions), dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n date = startOfWeekYear(firstWeek, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear (dirtyDate, dirtyYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = toInteger(dirtyYear)\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n date.setFullYear(decade, 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addDays(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addHours from '../addHours/index.js'\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addHours(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMinutes(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addQuarters from '../addQuarters/index.js'\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addQuarters(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addSeconds from '../addSeconds/index.js'\n\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addSeconds(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addWeeks(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addYears from '../addYears/index.js'\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addYears(dirtyDate, -amount, dirtyOptions)\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A <Router> may have only one child element\");\n\n // Do this here so we can setState when a <Redirect> changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a <StaticRouter>.\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change <Router history>\");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use <Switch> outside a <Router>\");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from <Switch>\n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","\r\n\r\n//��������� ��� ��������� ����������\r\n//���������� ���������� ID\r\nexport default class ControlRegister {\r\n\r\n\r\n static _Single;\r\n\r\n static Get() {\r\n if (this._Single == null || this._Single == undefined) {\r\n this._Single = new ControlRegister();\r\n }\r\n\r\n return this._Single;\r\n } \r\n\r\n\r\n constructor() {\r\n this.ID = 0;\r\n this.Controls = [];\r\n }\r\n\r\n //���������������� �������\r\n RegisterControl(control) {\r\n control.ID = this.ID;\r\n this.ID++;\r\n\r\n this.Controls.push(control);\r\n }\r\n\r\n //������� ������������ (������ �� ��������)\r\n UnregisterControl(control) {\r\n this.Controls.splice(this.Controls.\r\n findIndex(e => e.ID === control.ID), 1);\r\n }\r\n\r\n}","\r\n\r\nexport default class EventRegister {\r\n\r\n static _Single;\r\n\r\n static Get() {\r\n if (this._Single == null || this._Single == undefined) {\r\n this._Single = new EventRegister();\r\n }\r\n\r\n return this._Single;\r\n } \r\n\r\n constructor() {\r\n\r\n this.Events = [\r\n \"OnAuthChange\",\r\n \"OnItemsChange_Main\",\r\n \"OnItemsChange_Move\"\r\n ];\r\n this.Listeners = {};\r\n\r\n this.Events.map(function (event) {\r\n this.Listeners[event] = [];\r\n }.bind(this));\r\n }\r\n\r\n\r\n RegisterListener(Event, control) {\r\n if (!this.Events.includes(Event))\r\n throw \"Event not found\";\r\n\r\n if (control[\"Event_\" + Event] == undefined)\r\n throw \"Control not implement event function\";\r\n\r\n this.Listeners[Event].push(control);\r\n\r\n //���� ������������ � BaseControl, \r\n //����� ��� ����������� �������� \r\n //������������ �������� �� EventRegister listeners\r\n control.IsEventListener = true;\r\n }\r\n\r\n UnregistListener(control) {\r\n\r\n Object.keys(this.Listeners).map(function (e) {\r\n let pos = this.Listeners[e].findIndex(e2 => e2.ID === control.ID);\r\n if (pos != -1) {\r\n this.Listeners[e].splice(pos, 1);\r\n }\r\n }.bind(this));\r\n }\r\n\r\n EventAction(Event, params) {\r\n\r\n if (!this.Events.includes(Event))\r\n throw \"Event not found\";\r\n\r\n this.Listeners[Event].map(function (e) {\r\n e[\"Event_\" + Event](params);\r\n });\r\n }\r\n\r\n}","\r\n\r\n//Обертка для лога в приложении\r\nfunction Log(sender, message) {\r\n if (sender === null || sender === undefined)\r\n throw \"LogTools: sender not set\";\r\n\r\n console.log(sender + \": \" + message);\r\n}\r\n\r\n//sender as BaseControl\r\nfunction ControlLog(sender, message) {\r\n if (sender === null || sender === undefined)\r\n throw \"LogTools: sender not set\";\r\n\r\n console.log(sender.Name+\"_\"+sender.ID + \": \" + message);\r\n}\r\n\r\nexport {Log as default, ControlLog}","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport ControlRegister from '../Registers/ControlRegister'\r\nimport EventRegister from '../Registers/EventRegister'\r\nimport { ControlLog as Log } from '../Tools/LogTools'\r\n\r\n\r\nexport default class BaseControl extends React.Component {\r\n\r\n static controlRegister = ControlRegister.Get();\r\n static eventRegister = EventRegister.Get(); \r\n\r\n //���������� ������ ����������\r\n static GlobalState = {};\r\n \r\n\r\n constructor(props, name) {\r\n super(props);\r\n this.Name = name;\r\n autoBind(this);\r\n\r\n this.GlobalState = BaseControl.GlobalState;\r\n this.EventRegister = BaseControl.eventRegister;\r\n\r\n this.Log = (Msg) => { Log(this, Msg); };\r\n \r\n BaseControl.controlRegister.RegisterControl(this);\r\n\r\n this.Log(\"start\");\r\n }\r\n\r\n componentWillUnmount() {\r\n //console.log(this.name + \" stop \" + this.ID);\r\n\r\n BaseControl.controlRegister.UnregisterControl(this);\r\n if (this.IsEventListener === true)\r\n BaseControl.eventRegister.UnregistListener(this);\r\n }\r\n}\r\n","\r\n\r\n//Общие конфигурации\r\nexport default class Configuration {\r\n static RooDirectoryID = -1;\r\n static upload_chunk_size = 1048576;\r\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","\r\nimport Log from './LogTools'\r\n\r\n\r\n//Обертка для запросов к базе\r\n//URL - \r\n//Methid : Get Post\r\n//data: данные\r\nexport default function ApiQuery(url, method, data){\r\n Log(\"ApiQuery\", \"query to \" + url);\r\n //let json = JSON.stringify(data);\r\n //debugger;\r\n return fetch(\r\n url,\r\n {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n credentials: 'include',\r\n body: JSON.stringify(data)\r\n }\r\n ).then(function(response){\r\n return response.json();\r\n });\r\n}","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class AuthServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Auth = \"api/Auth/Auth\";\r\n this.URL_UserInfo = \"api/Auth/UserInfo\"\r\n\r\n this.AuthCoockieName = \"AuthToken\";\r\n }\r\n\r\n async AuthAsync(login, password) {\r\n\r\n return await ApiQuery(this.URL_Auth, \"Post\",\r\n {\r\n Login: login,\r\n Password: password\r\n }).then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n Logout() {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n\r\n async GetUserInfoAsync() {\r\n return await ApiQuery(this.URL_UserInfo, \"Post\")\r\n .then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n\r\n //Возвращает true если пользователь авторизован\r\n IsAuth() {\r\n let token = this._GetTocken();\r\n return token != \"\";\r\n }\r\n\r\n\r\n _getCookie(name) {\r\n let matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : \"\";\r\n }\r\n\r\n //Токен авторизации\r\n _GetTocken() {\r\n return this._getCookie(this.AuthCoockieName);\r\n }\r\n //задать токен\r\n _SetTocken(val) {\r\n document.cookie = this.AuthCoockieName + \"=\" + val;\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\nimport BaseControl from '../BaseControl.jsx'\r\n\r\n\r\nexport default class MenuControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"MenuControl\");\r\n\r\n //this.state = { counter: 0 };\r\n this.authServices = new AuthServices();\r\n\r\n this.EventRegister.RegisterListener(\"OnAuthChange\", this);\r\n }\r\n\r\n Event_OnAuthChange() {\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Menu:</td>\r\n <td>\r\n <Link to={`/`}>\r\n <button>FS</button>\r\n </Link>\r\n </td>\r\n\r\n {this.authServices.IsAuth()\r\n ?\r\n <td>\r\n <Link to={`/Admin`}>\r\n <button>Admin</button>\r\n </Link>\r\n </td>\r\n : <td></td>\r\n }\r\n </tr>\r\n </thead> \r\n </table>\r\n\r\n </div >\r\n );\r\n }\r\n}\r\n\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport forwardRef from '@restart/context/forwardRef';\nimport React, { useContext } from 'react';\nvar ThemeContext = React.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nvar ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.prefixes = new Map();\n Object.keys(_this.props.prefixes).forEach(function (key) {\n _this.prefixes.set(key, _this.props.prefixes[key]);\n });\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n _proto.render = function render() {\n return React.createElement(Provider, {\n value: this.prefixes\n }, this.props.children);\n };\n\n return ThemeProvider;\n}(React.Component);\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n return forwardRef(function (_ref, ref) {\n var props = _extends({}, _ref);\n\n props[forwardRefAs] = ref;\n var prefixes = useContext(ThemeContext);\n return React.createElement(Component, _extends({}, props, {\n // eslint-disable-next-line react/prop-types\n bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix\n }));\n }, {\n displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n });\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport camelize from 'dom-helpers/util/camelize';\nimport { useBootstrapPrefix } from '../ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n _ref$Component = _ref.Component,\n Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = React.forwardRef( // eslint-disable-next-line react/prop-types\n function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import React from 'react';\nvar FormContext = React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return React.createElement(FormContext.Provider, {\n value: context\n }, React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string.isRequired,\n as: PropTypes.elementType\n};\nvar defaultProps = {\n type: 'valid'\n};\nvar Feedback = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n type = _ref.type,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type && type + \"-feedback\")\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nFeedback.defaultProps = defaultProps;\nexport default Feedback;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n type = _ref.type,\n size = _ref.size,\n id = _ref.id,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.Feedback = Feedback;\nexport default FormControl;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckInput = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n isStatic = _ref.isStatic,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"input\", _extends({}, props, {\n ref: ref,\n id: id || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.defaultProps = defaultProps;\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-label')\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.defaultProps = defaultProps;\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nvar defaultProps = {\n type: 'checkbox',\n inline: false,\n disabled: false,\n isValid: false,\n isInvalid: false,\n title: ''\n};\nvar FormCheck = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n disabled = _ref.disabled,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n title = _ref.title,\n type = _ref.type,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = React.createElement(FormCheckInput, _extends({}, props, {\n type: type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled\n }));\n return React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, React.createElement(\"div\", {\n style: style,\n className: classNames(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\")\n }, children || React.createElement(React.Fragment, null, input, hasLabel && React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid'\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.defaultProps = defaultProps;\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span, offset, order;\n\n if (propValue != null && typeof propValue === 'object') {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return React.createElement(Col, _extends({\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(\"label\", _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './utils/createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport FormCheck from './FormCheck';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nvar defaultProps = {\n inline: false\n};\nvar Form = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nForm.displayName = 'Form';\nForm.defaultProps = defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = FormGroup;\nForm.Control = FormControl;\nForm.Check = FormCheck;\nForm.Label = FormLabel;\nForm.Text = FormText;\nexport default Form;","\r\nimport toastr from 'toastr'\r\n\r\n\r\nexport default class Notification {\r\n\r\n static Sho(text, title) {\r\n\r\n //debugger;\r\n\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": 3000,\r\n \"progressBar\": true,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n\r\n static MesOk(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n static MesOk_NoHide(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n\r\n static MesEr(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.error(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport { Form } from 'react-bootstrap'\r\n\r\nimport Notification from '../../Tools/Notification'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\nimport BaseControl from '../BaseControl.jsx'\r\n\r\n\r\n\r\nexport default class UserControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"UserControl\");\r\n\r\n this.state = { UserName: \"\" };//, AuthResult: \"\" };\r\n this.authServices = new AuthServices();\r\n\r\n if (this.authServices.IsAuth())\r\n this.authServices.GetUserInfoAsync().then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });// AuthResult: \"\" });\r\n this.EventRegister.EventAction(\"OnAuthChange\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Main\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Move\");\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка входа\r\n AuthClick() {\r\n let login = this.refs.Login.value;\r\n let password = this.refs.Password.value;\r\n\r\n this.authServices.AuthAsync(login, password)\r\n .then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });//, AuthResult: \"\" });\r\n this.EventRegister.EventAction(\"OnAuthChange\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Main\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Move\");\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка выхода\r\n LogoutClick() {\r\n this.authServices.Logout();\r\n this.setState({ UserName: \"\" });//, AuthResult: \"\" });\r\n\r\n this.EventRegister.EventAction(\"OnAuthChange\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Main\");\r\n this.EventRegister.EventAction(\"OnItemsChange_Move\");\r\n }\r\n\r\n\r\n render() {\r\n let state = this.state;\r\n\r\n return (\r\n <div>\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <p>Вы авторизованы. Пользователь: {state.UserName}.</p>\r\n <button onClick={this.LogoutClick}>Logout</button>\r\n </div>\r\n :\r\n <div>\r\n <p>Вы не авторизованы {state.UserName}. Вход:</p>\r\n {/*{state.AuthResult != \"\" ? <p>{state.AuthResult}</p> : \"\"}*/}\r\n\r\n {/*<Form.Label>Email address</Form.Label>*/}\r\n <Form.Control ref=\"Login\" type=\"text\" placeholder=\"Enter login\" />\r\n <Form.Text className=\"text-muted\">\r\n We'll never share your login with anyone else.\r\n </Form.Text>\r\n <br />\r\n {/*<Form.Label>Password</Form.Label>*/}\r\n <Form.Control ref=\"Password\" type=\"password\" placeholder=\"Password\" />\r\n <br />\r\n <button onClick={this.AuthClick}>Auth</button>\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class FileExplorerServices {\r\n constructor() {\r\n\r\n this.URL_DirectoryItems = \"api/Explorer/GetDirectoryItems?ID=\";\r\n this.URL_ScanDirectory = \"api/Explorer/ScanDirectory?ID=\";\r\n\r\n this.URL_Delete = \"api/Explorer/DeleteFile\";\r\n this.URL_Move = \"api/Explorer/MoveElement\";\r\n this.URL_Download = \"api/Explorer/GetFile?ID=\";\r\n this.URL_CreateDirectory = \"api/Explorer/CreateDirectory?\";\r\n\r\n }\r\n\r\n\r\n async DirectoryGetItemsAsync(ID) {\r\n let url = this.URL_DirectoryItems + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async ScanDirectoryAsync(ID) {\r\n let url = this.URL_ScanDirectory + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async DeleteAsync(ID) {\r\n\r\n return await ApiQuery(this.URL_Delete, \"POST\",\r\n {\r\n ID: ID\r\n });\r\n\r\n }\r\n\r\n async MoveAsync(elemID, directoryID) {\r\n return await ApiQuery(this.URL_Move, \"POST\",\r\n {\r\n ID: elemID,\r\n NewParent: directoryID\r\n });\r\n }\r\n\r\n\r\n OpenDownload(ID) {\r\n let url = this.URL_Download + ID;\r\n\r\n window.open(url, '_blank');\r\n }\r\n\r\n async CreateDirectoryAsync(dirname, id) {\r\n return await ApiQuery(this.URL_CreateDirectory, \"POST\",\r\n {\r\n ParentID: id,\r\n Name: dirname\r\n });\r\n }\r\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport createChainedFunction from './utils/createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(SafeAnchor, _React$Component);\n\n function SafeAnchor(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = SafeAnchor.prototype;\n\n _proto.handleClick = function handleClick(event) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n href = _this$props.href,\n onClick = _this$props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n this.handleClick(event);\n }\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'a' : _this$props2$as,\n disabled = _this$props2.disabled,\n onKeyDown = _this$props2.onKeyDown,\n innerRef = _this$props2.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n if (innerRef) props.ref = innerRef;\n return React.createElement(Component, _extends({}, props, {\n onClick: this.handleClick,\n onKeyDown: createChainedFunction(this.handleKeyDown, onKeyDown)\n }));\n };\n\n return SafeAnchor;\n}(React.Component);\n\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false,\n type: 'button'\n};\nvar Button = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n innerRef: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n var Component = as || 'button';\n if (ref) props.ref = ref;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button } from 'react-bootstrap'\r\n\r\nimport BaseControl from '../../BaseControl.jsx'\r\n\r\n\r\nexport default class FileExplorerRow extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"FileExplorerRow\");\r\n\r\n this.state = {\r\n Data: this.props.data,\r\n ShoSelectColumn: this.props.ShoSelectColumn\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.props = nextProps;\r\n\r\n if (this.refs.Select != undefined)\r\n this.refs.Select.checked = false;\r\n\r\n this.setState({\r\n Data: this.props.data,\r\n ShoSelectColumn: this.props.ShoSelectColumn\r\n });\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n GetDirectory() {\r\n return this.GlobalState[this.props.CurrentDirectoryName];\r\n }\r\n\r\n GetData() {\r\n return this.state.Data;\r\n }\r\n\r\n GetDataID() {\r\n return this.state.Data.ID;\r\n }\r\n IsCheked() {\r\n if (this.refs.Select == undefined)\r\n return false;\r\n\r\n return this.refs.Select.checked;\r\n }\r\n\r\n\r\n OnDirectoryClick() {\r\n this.GetDirectory().ID = this.GetDataID();\r\n this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let elem = state.Data;\r\n\r\n return (\r\n <tr>\r\n <td>{elem.ID}</td>\r\n {state.ShoSelectColumn\r\n ?\r\n <td>\r\n <input ref=\"Select\" type=\"checkbox\" />\r\n </td>\r\n : null\r\n }\r\n\r\n\r\n {(elem.Type === \"RootDirectory\" || elem.Type === \"Directory\")\r\n ?\r\n <td>\r\n <Link to={`/?ID=${elem.ID}`}>\r\n <Button id={elem.ID} onClick={this.OnDirectoryClick} variant=\"outline-dark\">\r\n {elem.Name}\r\n </Button>\r\n </Link>\r\n </td>\r\n : <td>{elem.Name}</td>\r\n }\r\n <td>{elem.Type}</td>\r\n <td>{elem.Size}</td>\r\n </tr>\r\n );\r\n\r\n }\r\n}","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Configuration from '../../../Tools/Configuration'\r\nimport ArrayCompare from '../../../Tools/Sort'\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport BaseControl from '../../BaseControl.jsx'\r\nimport FileExplorerRow from './FileExplorerRow.jsx'\r\n\r\n\r\nexport default class FileExplorerControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"FileExplorerControl\");\r\n\r\n this.state = {\r\n data: {},\r\n ShoSelectColumn: this.GetDirectory().ShoSelectColumn\r\n };\r\n this.ChildRows = [];\r\n this.fileExplorerServices = new FileExplorerServices(); \r\n\r\n this.GetDirectory().ExplorerControl = this;\r\n\r\n this.EventRegister.RegisterListener(this.GetDirectory().ChangeEvent, this);\r\n this.Event_OnItemsChange_Main();\r\n }\r\n\r\n GetDirectory() {\r\n return this.GlobalState[this.props.CurrentDirectoryName];\r\n }\r\n Event_OnItemsChange_Main() {\r\n this.LoadDirectory();\r\n }\r\n Event_OnItemsChange_Move() {\r\n this.LoadDirectory();\r\n }\r\n\r\n\r\n\r\n OnBackClick(sender) {\r\n this.Log(\"OnBackClick \" + this.state.data.ParentID);\r\n\r\n this.GetDirectory().ID = this.state.data.ParentID;\r\n this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);\r\n }\r\n\r\n OnSortClick(sender) {\r\n let SortProperty = sender.target.attributes[0].value;\r\n\r\n let data = this.state.data;\r\n //debugger;\r\n data.items.sort(ArrayCompare(SortProperty, 1));\r\n this.setState({ data: data });\r\n }\r\n\r\n OnScanDirClick(sender) {\r\n let ID = this.GetDirectory().ID;\r\n this.Log(\"ScanDirectory \" + ID);\r\n\r\n this.fileExplorerServices.ScanDirectoryAsync(ID).\r\n then(function (data) {\r\n this.EventRegister.EventAction(this.GetDirectory().ChangeEvent);\r\n }.bind(this));\r\n }\r\n\r\n //Загружает информацию о текущей папке\r\n LoadDirectory() {\r\n let ID = this.GetDirectory().ID;\r\n this.Log(\"LoadDirectory \" + ID);\r\n\r\n this.fileExplorerServices.DirectoryGetItemsAsync(ID)\r\n .then(function (data) {\r\n\r\n this.setState({\r\n data: data,\r\n ShoSelectColumn: (this.GetDirectory().ShoSelectColumn && ID != -1 ? true : false)\r\n });\r\n }.bind(this));\r\n }\r\n\r\n //Получить ID данных выбранных строк\r\n GetSelectedID() {\r\n //debugger;\r\n return this.ChildRows.\r\n filter(e => e.IsCheked()).\r\n map(e => e.GetDataID());\r\n }\r\n\r\n render() {\r\n let data = this.state.data;\r\n\r\n //Если данные не пусты\r\n if (JSON.stringify(data) !== '{}') {\r\n this.Log(\"Data\");\r\n\r\n return (\r\n <div>\r\n {this.GetDirectory().ID != Configuration.RooDirectoryID\r\n ?\r\n <p>\r\n <Link to={`/?ID=${data.ParentID}`}>\r\n <button onClick={this.OnBackClick}>\r\n l- На уровень вверх - {data.ParentName}\r\n </button>\r\n </Link>\r\n </p>\r\n : null\r\n }\r\n\r\n\r\n <p>{data.LogicPath}</p>\r\n <p>\r\n <button onClick={this.LoadDirectory}>\r\n Update\r\n </button>\r\n <button onClick={this.OnScanDirClick}>\r\n Rescan\r\n </button>\r\n </p>\r\n\r\n\r\n <table>\r\n\r\n <thead>\r\n <tr>\r\n <th>\r\n <button property=\"ID\" onClick={this.OnSortClick}>ID</button>\r\n </th>\r\n {\r\n this.state.ShoSelectColumn\r\n ? <th>Select</th>\r\n : null\r\n }\r\n <th>\r\n <button property=\"Name\" onClick={this.OnSortClick}>Name</button>\r\n </th>\r\n <th>\r\n <button property=\"Type\" onClick={this.OnSortClick}>Type</button>\r\n </th>\r\n <th>\r\n <button property=\"Size\" onClick={this.OnSortClick}>Size</button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {\r\n data.items.map(function (elem, i, arr) {\r\n return [\r\n <FileExplorerRow ref={row => {\r\n if (row != null) this.ChildRows[i] = row;\r\n else this.ChildRows.splice(i, 1);\r\n }}\r\n ParentComponent={this}\r\n CurrentDirectoryName={this.props.CurrentDirectoryName} \r\n key={i}\r\n\r\n ShoSelectColumn={this.state.ShoSelectColumn}\r\n data={elem}\r\n />\r\n ];\r\n }.bind(this))\r\n }\r\n </tbody> \r\n </table> \r\n </div>\r\n );\r\n }\r\n else {\r\n this.Log(\"NoData\");\r\n\r\n return (\r\n <div>\r\n <p>NoData</p>\r\n </div>\r\n );\r\n }\r\n }\r\n}","//https://habr.com/ru/post/279867/\r\n\r\n\r\n////Использование\r\n//arr.sort(ArrayCompare()); //Обычная типобезопасная сортировка по возрастанию\r\n//arr.sort(ArrayCompare(-1)); //Обычная типобезопасная сортировка по убыванию\r\n//arr.sort(ArrayCompare('field')); //Сортировка по свойству field по возрастанию\r\n//arr.sort(ArrayCompare('field', -1)); //Сортировка по свойству field по убыванию\r\n///* Сортировка сначала по полю field1\r\n// при совпадении по полю field2, а если и оно совпало, то по полю field3\r\n// все по возрастанию */\r\n//arr.sort(compare('field1', 'field2', 'field3'));\r\n///* Сортировка сначала по полю field1 по возрастанию\r\n// при совпадении по полю field2 по убыванию */\r\n//arr.sort(compare({\r\n// field1: 1,\r\n// field2: -1\r\n//}));\r\n\r\n\r\n//Метод сравнения элементов для сортировки\r\n//field - имя свойства сущности\r\n//order порядок 0 - возрастание, 1 - убывание\r\nexport default function ArrayCompare(field, order) {\r\n var len = arguments.length;\r\n if (len === 0) {\r\n return (a, b) => (a < b && -1) || (a > b && 1) || 0;\r\n }\r\n if (len === 1) {\r\n switch (typeof field) {\r\n case 'number':\r\n return field < 0 ?\r\n ((a, b) => (a < b && 1) || (a > b && -1) || 0) :\r\n ((a, b) => (a < b && -1) || (a > b && 1) || 0);\r\n case 'string':\r\n return (a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0;\r\n }\r\n }\r\n if (len === 2 && typeof order === 'number') {\r\n return order < 0 ?\r\n ((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0) :\r\n ((a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0);\r\n }\r\n var fields, orders;\r\n if (typeof field === 'object') {\r\n fields = Object.getOwnPropertyNames(field);\r\n orders = fields.map(key => field[key]);\r\n len = fields.length;\r\n } else {\r\n fields = new Array(len);\r\n orders = new Array(len);\r\n for (let i = len; i--;) {\r\n fields[i] = arguments[i];\r\n orders[i] = 1;\r\n }\r\n }\r\n return (a, b) => {\r\n for (let i = 0; i < len; i++) {\r\n if (a[fields[i]] < b[fields[i]]) return orders[i];\r\n if (a[fields[i]] > b[fields[i]]) return -orders[i];\r\n }\r\n return 0;\r\n };\r\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = ReactDOM.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = React.Children.only(children);\n return (// allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, React.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport onEnd from 'dom-helpers/transition/end';\nimport triggerBrowserReflow from './utils/triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\n\nvar Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Fade, _React$Component);\n\n function Fade() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handleEnter = function (node) {\n triggerBrowserReflow(node);\n if (_this.props.onEnter) _this.props.onEnter(node);\n };\n\n return _this;\n }\n\n var _proto = Fade.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n children = _this$props.children,\n props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n return React.createElement(Transition, _extends({\n addEndListener: onEnd\n }, props, {\n onEnter: this.handleEnter\n }), function (status, innerProps) {\n return React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n };\n\n return Fade;\n}(React.Component);\n\nFade.defaultProps = defaultProps;\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n node.offsetHeight; // eslint-disable-line no-unused-expressions\n}","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\")\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n return React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import React from 'react';\nvar ModalContext = React.createContext({\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return React.forwardRef(function (p, ref) {\n return React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import createWithBsPrefix from './utils/createWithBsPrefix';\nimport divWithClassName from './utils/divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport css from 'dom-helpers/style';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n _this.adjustAndStore = function (prop, element, adjust) {\n var actual = element.style[prop];\n element.dataset[prop] = actual;\n css(element, prop, parseFloat(css(element, prop)) + adjust + \"px\");\n };\n\n _this.restore = function (prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, prop, value);\n }\n };\n\n return _this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this3 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this3.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport classNames from 'classnames';\nimport events from 'dom-helpers/events';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/util/inDOM';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport React from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport BootstrapModalManager from './utils/BootstrapModalManager';\nimport { createBootstrapComponent } from './ThemeProvider';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog,\n manager: new BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n return React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n style: {}\n };\n _this.modalContext = {\n onHide: function onHide() {\n return _this.props.onHide();\n }\n };\n\n _this.setModalRef = function (ref) {\n _this._modal = ref;\n };\n\n _this.handleDialogMouseDown = function () {\n _this._waitingForMouseUp = true;\n };\n\n _this.handleMouseUp = function (e) {\n if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n _this._ignoreBackdropClick = true;\n }\n\n _this._waitingForMouseUp = false;\n };\n\n _this.handleClick = function (e) {\n if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n _this._ignoreBackdropClick = false;\n return;\n }\n\n _this.props.onHide();\n };\n\n _this.handleEnter = function (node) {\n var _this$props;\n\n if (node) {\n node.style.display = 'block';\n\n _this.updateDialogStyle(node);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n };\n\n _this.handleEntering = function (node) {\n var _this$props2;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n events.on(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleExited = function (node) {\n var _this$props3;\n\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n events.off(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleWindowResize = function () {\n _this.updateDialogStyle(_this._modal.dialog);\n };\n\n _this.renderBackdrop = function (props) {\n var _this$props4 = _this.props,\n bsPrefix = _this$props4.bsPrefix,\n backdropClassName = _this$props4.backdropClassName;\n return React.createElement(\"div\", _extends({}, props, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName)\n }));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Clean up the listener if we need to.\n events.off(window, 'resize', this.handleWindowResize);\n };\n\n _proto.updateDialogStyle = function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var manager = this.props.manager;\n var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n this.setState({\n style: {\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n }\n });\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n bsPrefix = _this$props5.bsPrefix,\n className = _this$props5.className,\n style = _this$props5.style,\n dialogClassName = _this$props5.dialogClassName,\n children = _this$props5.children,\n Dialog = _this$props5.dialogAs,\n show = _this$props5.show,\n animation = _this$props5.animation,\n backdrop = _this$props5.backdrop,\n keyboard = _this$props5.keyboard,\n manager = _this$props5.manager,\n onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n onShow = _this$props5.onShow,\n onHide = _this$props5.onHide,\n container = _this$props5.container,\n autoFocus = _this$props5.autoFocus,\n enforceFocus = _this$props5.enforceFocus,\n restoreFocus = _this$props5.restoreFocus,\n onEntered = _this$props5.onEntered,\n onExit = _this$props5.onExit,\n onExiting = _this$props5.onExiting,\n _ = _this$props5.onExited,\n _1 = _this$props5.onEntering,\n _6 = _this$props5.onEnter,\n _4 = _this$props5.onEntering,\n _2 = _this$props5.backdropClassName,\n props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n var clickHandler = backdrop === true ? this.handleClick : null;\n\n var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n if (!animation) baseModalStyle.display = 'block';\n return React.createElement(ModalContext.Provider, {\n value: this.modalContext\n }, React.createElement(BaseModal, {\n show: show,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n manager: manager,\n ref: this.setModalRef,\n style: baseModalStyle,\n className: classNames(className, bsPrefix),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: this.renderBackdrop,\n onClick: clickHandler,\n onMouseUp: this.handleMouseUp,\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onExited: this.handleExited\n }, React.createElement(Dialog, _extends({}, props, {\n onMouseDown: this.handleDialogMouseDown,\n className: dialogClassName\n }), children)));\n };\n\n return Modal;\n}(React.Component);\n\nModal.defaultProps = defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal, 'modal');\nDecoratedModal.Body = Body;\nDecoratedModal.Header = Header;\nDecoratedModal.Title = Title;\nDecoratedModal.Footer = Footer;\nDecoratedModal.Dialog = ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default DecoratedModal;","\r\nimport React from 'react';\r\nimport { Modal, Button } from 'react-bootstrap'\r\n\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport BaseControl from '../../BaseControl.jsx'\r\nimport FileExplorerControl from '../FileExplorer/FileExplorerControl.jsx'\r\n\r\n\r\nexport default class ExplorerActionsControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"ExplorerActionsControl\");\r\n\r\n this.state = { MoveWindowsShow: false }\r\n this.fileExplorerServices = new FileExplorerServices();\r\n\r\n this.GlobalState.MoveExplorer = {\r\n ID: this.GlobalState.MainExplorer.ID,\r\n ShoSelectColumn: false,\r\n ChangeEvent: \"OnItemsChange_Move\"\r\n };\r\n }\r\n\r\n\r\n OnDownloadClick(sender) {\r\n\r\n let selected = this.GlobalState.MainExplorer.\r\n ExplorerControl.GetSelectedID();\r\n\r\n selected.map((e) => {\r\n this.Log(\"OnDownload \" + e);\r\n\r\n this.fileExplorerServices.OpenDownload(e);\r\n });\r\n }\r\n\r\n OnDeleteClick(sender) {\r\n\r\n let selected = this.GlobalState.MainExplorer.\r\n ExplorerControl.GetSelectedID();\r\n\r\n let promises = selected.map((e) => {\r\n this.Log(\"OnDelete \" + e);\r\n return this.fileExplorerServices.DeleteAsync(e);\r\n });\r\n\r\n \r\n Promise.all(promises).then(function (data) {\r\n let Result = \"\";\r\n\r\n data.map(function (e) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n });\r\n\r\n Notification.MesOk(Result, 'Move');\r\n\r\n this.EventRegister.\r\n EventAction(this.GlobalState.MainExplorer.ChangeEvent);\r\n }.bind(this));\r\n\r\n }\r\n\r\n\r\n OnMoveClick(sender) {\r\n let selected = this.GlobalState.MainExplorer.\r\n ExplorerControl.GetSelectedID();\r\n\r\n if (selected.length == 0)\r\n return;\r\n\r\n this.selected = selected;\r\n\r\n this.setState({ MoveWindowsShow: true });\r\n }\r\n\r\n OnCreateDirectoryClick(sender) {\r\n //debugger;\r\n let dirname = this.refs.DirectoryName.value;\r\n let id = this.GlobalState.MainExplorer.ID;\r\n\r\n this.fileExplorerServices.CreateDirectoryAsync(dirname, id).\r\n then(function (data) {\r\n this.EventRegister.\r\n EventAction(this.GlobalState.MainExplorer.ChangeEvent);\r\n Notification.MesOk('Complete', 'CreateDir');\r\n }.bind(this));\r\n\r\n this.refs.DirectoryName.value = \"\";\r\n }\r\n\r\n\r\n OnMoveWindowCloseClick() {\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n OnMoveWindowClick() {\r\n\r\n if (this.GlobalState.MainExplorer.ID == this.GlobalState.MoveExplorer.ID) {\r\n this.setState({ MoveWindowsShow: false });\r\n return;\r\n }\r\n\r\n let promises = this.selected.map(function (e) {\r\n this.Log(\"OnMove \" + e);\r\n return this.fileExplorerServices.\r\n MoveAsync(e, this.GlobalState.MoveExplorer.ID);\r\n }.bind(this));\r\n\r\n Promise.all(promises).then(function (data) {\r\n\r\n let Result = \"\";\r\n\r\n data.map(function (e){\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n });\r\n \r\n //this.setState({ ResultMsg: Result });\r\n Notification.MesOk(Result, 'Move');\r\n this.EventRegister.\r\n EventAction(this.GlobalState.MainExplorer.ChangeEvent);\r\n }.bind(this));\r\n\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>ExplorerControlPanel</p>\r\n\r\n <p>\r\n <input ref=\"DirectoryName\" />\r\n <button onClick={this.OnCreateDirectoryClick}>CreateDirectory</button>\r\n </p>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th><button onClick={this.OnDownloadClick}>Скачать</button></th>\r\n <th><button onClick={this.OnDeleteClick}>Удалить</button></th>\r\n <th><button onClick={this.OnMoveClick}>Переместить</button></th>\r\n </tr>\r\n </thead>\r\n </table>\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.MoveWindowsShow}\r\n onHide={this.OnMoveWindowCloseClick}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>Select destination directory</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n CurrentDirectoryName={\"MoveExplorer\"}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnMoveWindowCloseClick}>\r\n Cansel\r\n </Button>\r\n <Button variant=\"primary\" onClick={this.OnMoveWindowClick}>\r\n Move to directory\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\nimport Configuration from '../Tools/Configuration'\r\nimport Log from '../Tools/LogTools'\r\n\r\n\r\nexport default class UploadServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Start = \"/api/UploadFiles/StartUpload\";\r\n this.URL_Upload = \"/api/UploadFiles/UploadBlob\";\r\n this.URL_Cansel = \"/api/UploadFiles/Cansel\";\r\n\r\n this.upload_chunk_size = Configuration.upload_chunk_size;\r\n this.ID = -1;\r\n\r\n this._ContinueDownload = false;\r\n\r\n this._file = null;\r\n this._ParentID = null;\r\n\r\n //Callback события\r\n //(number progresse)\r\n this.OnProggresseChange = null;\r\n //(number id)\r\n this.OnIDReceived = null;\r\n //(string Msg)\r\n this.OnError = null;\r\n }\r\n\r\n\r\n //Считывает часть файла\r\n //startByte - int позиция начала чтения\r\n //stopByte - int позиция окончания чтения\r\n async _ReadBlobAsync(startByte, stopByte) {\r\n\r\n return new Promise(function (resolve, reject) {\r\n //Считываем часть файла\r\n let blob = this._file.slice(startByte, stopByte);\r\n\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(blob);\r\n }.bind(this));\r\n }\r\n\r\n //Сообщает серверу о начале загрузки файла, получает ID загрузки\r\n async _StartUploadAsync() {\r\n let res;\r\n\r\n await ApiQuery(this.URL_Start, \"Post\",\r\n {\r\n //ID папки\r\n ParentID: this._ParentID,\r\n //Имя файла\r\n Name: this._file.name,\r\n //Размеры\r\n Size: this._file.size\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n\r\n //Выполняет загрузка блока\r\n async _UploadBlobAsync(bin_data, ChunkNumb) {\r\n\r\n Log(\"UploadServices\", \"_UploadBlobAsync\");\r\n\r\n if (!this._ContinueDownload)\r\n return { State: true };\r\n\r\n\r\n if (bin_data != '') {\r\n Log(\"UploadServices\", this.URL_Upload + ChunkNumb);\r\n\r\n let res;\r\n\r\n await ApiQuery(this.URL_Upload, \"Post\",\r\n {\r\n //ID загрузки\r\n ID: this.ID,\r\n //Кусок файла\r\n chunk: bin_data\r\n //Номер куска\r\n //'ChunkNumb': ChunkNumb\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n }\r\n\r\n\r\n //Инициирует загрузку файла\r\n //parent_id - int ID папки для загрузки\r\n async UploadFileAsync(file, parent_id) {\r\n\r\n this._file = file;\r\n this._ParentID = parent_id;\r\n\r\n let start_info = await this._StartUploadAsync();\r\n if (!start_info.State) {\r\n if (this.OnError != null)\r\n this.OnError(start_info.Msg);\r\n return;\r\n }\r\n\r\n this._ContinueDownload = true;\r\n this.ID = start_info.ID;\r\n if (this.OnIDReceived != null)\r\n this.OnIDReceived(this.ID);\r\n\r\n for (let pos = 0, ChunkNumb = 0; pos < this._file.size; pos += this.upload_chunk_size, ChunkNumb++) {\r\n if (!this._ContinueDownload)\r\n return;\r\n\r\n let bin_data = await this._ReadBlobAsync(pos, pos + this.upload_chunk_size);\r\n let state = await this._UploadBlobAsync(bin_data, ChunkNumb);\r\n\r\n\r\n if (!state.State) {\r\n //alert('Загрузка прервана');\r\n\r\n if (this.OnError != null)\r\n this.OnError(state.Msg);\r\n return;\r\n }\r\n\r\n // Вычисляем процент отправленного\r\n let p = Math.round(pos * 100 / file.size);\r\n Log(\"UploadServices\", 'p = ' + p);\r\n\r\n if (this.OnProggresseChange != null)\r\n this.OnProggresseChange(p);\r\n }\r\n\r\n this._ContinueDownload = false;\r\n }\r\n\r\n Cansel() {\r\n this._ContinueDownload = false;\r\n\r\n //Костыль задержка, чтобы асинхронный загрузчик точно прервал работу\r\n //и не попытался получить доступ к ужаленному проекту загрузки\r\n //Возможно зависит от размера блока\r\n setTimeout(function () {\r\n\r\n ApiQuery(this.URL_Cansel, \"Post\",\r\n {\r\n //ID файла\r\n ID: this.ID,\r\n });\r\n\r\n }.bind(this),\r\n 500);\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\n\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UploadServices from '../../../Services/UploadServices'\r\n\r\nimport BaseControl from '../../BaseControl.jsx'\r\n\r\n\r\nexport default class UploaderControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"UploaderControl\"); \r\n\r\n //state 0 - выбор файла\r\n //state 1 - загрузка\r\n this.state = { progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" };\r\n\r\n\r\n this.uploadServices = new UploadServices();\r\n this.uploadServices.OnProggresseChange = this.OnProgresseChange;\r\n //this.uploadServices.OnIDReceived = null;\r\n this.uploadServices.OnError = this.OnError;\r\n }\r\n\r\n UploadClick() {\r\n\r\n let input = this.refs.file;\r\n let files = input.files;\r\n\r\n\r\n if (files.length == 0)\r\n return;\r\n let file = files[0];\r\n\r\n this.setState({ ButtonUploadEnable: false, _state: 1, FileInfo: { name: file.name, size: file.size } });\r\n\r\n this.uploadServices.UploadFileAsync(\r\n file,\r\n this.GlobalState.MainExplorer.ID\r\n ).then(function () {\r\n Notification.MesOk('Complete','Upload');\r\n\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" });\r\n this.EventRegister.EventAction(this.GlobalState.MainExplorer.ChangeEvent);\r\n input.value = \"\";\r\n }.bind(this));\r\n }\r\n\r\n CancelClick() {\r\n this.uploadServices.Cansel();\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {} });\r\n }\r\n\r\n OnProgresseChange(Process) {\r\n this.setState({ progress: Process });\r\n }\r\n\r\n OnError(Msg) {\r\n this.setState({ progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: Msg });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <h2>Upload</h2>\r\n <p>\r\n <input ref=\"file\" type=\"file\" disabled={!this.state.ButtonUploadEnable} />\r\n <button disabled={!this.state.ButtonUploadEnable} onClick={this.UploadClick}>Upload</button>\r\n <button disabled={this.state.ButtonUploadEnable} onClick={this.CancelClick}>Cancel</button>\r\n </p>\r\n\r\n {this.state._state == 1\r\n ?\r\n <div>\r\n <p>Прогресс {this.state.progress} %</p>\r\n <p>Выполняется загрука файла:</p>\r\n <p>Имя файла: {this.state.FileInfo.name}</p>\r\n <p>Размеры файла: {this.state.FileInfo.size}</p>\r\n </div>\r\n : \"\"\r\n }\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>Результат: {this.state.ResultMsg}</p>\r\n : null\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n role: 'toolbar'\n};\nvar ButtonToolbar = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(className, prefix)\n }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.defaultProps = defaultProps;\nexport default ButtonToolbar;","\r\nimport React from 'react';\r\nimport { ButtonToolbar, Button } from 'react-bootstrap'\r\n\r\nimport BaseControl from '../BaseControl.jsx'\r\n\r\nexport default class BootstrapControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"BootstrapControl\");\r\n }\r\n\r\n\r\n //PostTest() {\r\n // let test_url = \"/Test/Test\";\r\n \r\n // fetch(test_url,\r\n // {\r\n // method: \"Post\",\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({ id: 2, name: \"n\" })\r\n // });\r\n //}\r\n\r\n ToastifyTest() {\r\n\r\n this.Leght = (this.Leght == undefined ? 0 : this.Leght) + 500;\r\n\r\n //Notification.Sho(\"Test\");\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>Bootstrap test</p>\r\n <ButtonToolbar>\r\n <Button onClick={this.ToastifyTest} variant=\"outline-primary\">Primary</Button>\r\n <Button variant=\"outline-secondary\">Secondary</Button>\r\n <Button variant=\"outline-success\">Success</Button>\r\n <Button variant=\"outline-warning\">Warning</Button>\r\n <Button variant=\"outline-danger\">Danger</Button>\r\n <Button variant=\"outline-info\">Info</Button>\r\n <Button variant=\"outline-light\">Light</Button>\r\n <Button variant=\"outline-dark\">Dark</Button>\r\n </ButtonToolbar>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport React from 'react';\r\n\r\nimport Configuration from '../../Tools/Configuration'\r\n\r\nimport BaseControl from '../BaseControl.jsx'\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserControl from '../Controls/UserControl.jsx'\r\nimport FileExplorerControl from '../Controls/FileExplorer/FileExplorerControl.jsx'\r\nimport ExplorerActionsControl from '../Controls/FileExplorer/ExplorerActionsControl.jsx'\r\nimport UploaderControl from '../Controls/FileExplorer/UploaderControl.jsx'\r\nimport BootstrapControl from '../Controls/BootstrapControl.jsx'\r\n\r\nexport default class FileExplorerPage extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"FileExplorerPage\");\r\n\r\n //Получить ID из url\r\n var url_ID = new URL(window.location.href).\r\n searchParams.get(\"ID\");\r\n\r\n if (url_ID != null)\r\n this.GlobalState.MainExplorer = {\r\n ID: url_ID,\r\n ShoSelectColumn: true,\r\n ChangeEvent: \"OnItemsChange_Main\"\r\n };\r\n else\r\n this.GlobalState.MainExplorer = {\r\n ID: -1,\r\n ShoSelectColumn: true,\r\n ChangeEvent: \"OnItemsChange_Main\"\r\n };\r\n\r\n //this.EventRegister.EventAction(\"OnItemsChange\");\r\n }\r\n\r\n OnRegistersClick() {\r\n let Global = this.GlobalState;\r\n let Controls = BaseControl.controlRegister;\r\n let Events = this.EventRegister;\r\n debugger;\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <button onClick={this.OnRegistersClick}>Registers</button>\r\n\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UserControl ref=\"UserControl\"\r\n ParentComponent={this}\r\n />\r\n\r\n <hr />\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n //Параметры для того, чтобы можно было содержать \r\n //несколько элементов данного типа с разными дирректориями \r\n CurrentDirectoryName={\"MainExplorer\"} \r\n />\r\n <hr />\r\n {(this.GlobalState.MainExplorer.ID != Configuration.RooDirectoryID)\r\n ?\r\n <div>\r\n <ExplorerActionsControl ref=\"ExplorerActionsControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UploaderControl ref=\"UploaderControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n </div>\r\n : null\r\n }\r\n <hr />\r\n <BootstrapControl />\r\n <hr />\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useState, useRef } from 'react';\nimport * as Utils from './utils';\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var defaultValue = result[Utils.defaultKey(fieldName)],\n propsValue = result[fieldName],\n rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n var prevProps = useRef({});\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = Utils.isProp(props, fieldName);\n var wasProp = Utils.isProp(prevProps.current, fieldName);\n prevProps.current = props;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp) {\n setState(defaultValue);\n }\n\n var propsHandler = props[handlerName];\n var handler = useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n setState(value);\n }, [setState, propsHandler]);\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nvar SelectableContext = React.createContext();\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import React from 'react';\nvar NavContext = React.createContext(null);\nexport default NavContext;","import React from 'react';\nvar TabContext = React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport mapContextToProps from '@restart/context/mapContextToProps';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport TabContext from './TabContext';\n\nvar noop = function noop() {};\n\nvar AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(AbstractNav, _React$Component);\n\n function AbstractNav() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n navContext: null\n };\n\n _this.handleSelect = function (key, event) {\n var _this$props = _this.props,\n onSelect = _this$props.onSelect,\n parentOnSelect = _this$props.parentOnSelect;\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n _this.handleKeyDown = function (event) {\n var onKeyDown = _this.props.onKeyDown;\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = _this.getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = _this.getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n\n _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n _this._needsRefocus = true;\n };\n\n _this.attachRef = function (ref) {\n _this.listNode = ref;\n };\n\n return _this;\n }\n\n AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n var activeKey = _ref.activeKey,\n getControlledId = _ref.getControlledId,\n getControllerId = _ref.getControllerId,\n role = _ref.role;\n return {\n navContext: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n };\n };\n\n var _proto = AbstractNav.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (!this._needsRefocus || !this.listNode) return;\n var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n };\n\n _proto.getNextActiveChild = function getNextActiveChild(offset) {\n if (!this.listNode) return null;\n var items = qsa(this.listNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = this.listNode.querySelector('.active');\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'ul' : _this$props2$as,\n _ = _this$props2.onSelect,\n _0 = _this$props2.parentOnSelect,\n _1 = _this$props2.getControlledId,\n _2 = _this$props2.getControllerId,\n _3 = _this$props2.activeKey,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n if (props.role === 'tablist') {\n props.onKeyDown = this.handleKeyDown;\n }\n\n return React.createElement(SelectableContext.Provider, {\n value: this.handleSelect\n }, React.createElement(NavContext.Provider, {\n value: this.state.navContext\n }, React.createElement(Component, _extends({}, props, {\n onKeyDown: this.handleKeyDown,\n ref: this.attachRef\n }))));\n };\n\n return AbstractNav;\n}(React.Component);\n\nexport default mapContextToProps([SelectableContext, TabContext], function (parentOnSelect, tabContext, _ref2) {\n var role = _ref2.role;\n if (!tabContext) return {\n parentOnSelect: parentOnSelect\n };\n var activeKey = tabContext.activeKey,\n getControllerId = tabContext.getControllerId,\n getControlledId = tabContext.getControlledId;\n return {\n activeKey: activeKey,\n parentOnSelect: parentOnSelect,\n role: role || 'tablist',\n // pass these two through to avoid having to listen to\n // both Tab and Nav contexts in NavLink\n getControllerId: getControllerId,\n getControlledId: getControlledId\n };\n}, AbstractNav);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n tabIndex = _ref.tabIndex,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n props['data-rb-event-key'] = navKey;\n props.id = navContext.getControllerId(navKey);\n props['aria-controls'] = navContext.getControlledId(navKey);\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n props.tabIndex = isActive ? tabIndex : -1;\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n bsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n var navbarBsPrefix, cardHeaderBsPrefix;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n navbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class UserServices {\r\n\r\n constructor() {\r\n this.URL_GetUsers = \"api/User/GetUserList\";\r\n this.URL_SetUsers = \"api/User/SetUserList\";\r\n\r\n //AutodecrementID\r\n this.ID = 0;\r\n }\r\n\r\n\r\n async GetUsersAsync() {\r\n return await ApiQuery(this.URL_GetUsers, \"Post\")\r\n .then(function (data) {\r\n if (data.Successe) {\r\n this.Groups = data.Groups;\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n async SetUsersAsync(users) {\r\n\r\n return await ApiQuery(this.URL_SetUsers, \"Post\", users)\r\n .then(function (data) {\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n\r\n\r\n CreateUser() {\r\n this.ID--;\r\n\r\n return {\r\n ID: this.ID,\r\n Name: \"NewUser\" + this.ID,\r\n Password: \"QWERTY\",\r\n Active: true,\r\n Changes: 2, //Create\r\n\r\n Groups: this.Groups.map((e) => {\r\n return {\r\n ID: e.ID,\r\n Name: e.Name,\r\n EnterInGroup: (e.Name == \"Пользователи\") ? true : false\r\n };\r\n })\r\n };\r\n }\r\n CreateStubUser() {\r\n return {\r\n Users: [],\r\n ShoGroups: false,\r\n //Заглушка\r\n UserGroups: {\r\n ID: -1,\r\n Name: \"\",\r\n Password: \"\",\r\n Active: false,\r\n Changes: -1,\r\n Groups: [{\r\n ID: -11,\r\n Name: \"\",\r\n EnterInGroup: false\r\n }]\r\n }\r\n }\r\n\r\n\r\n }\r\n}\r\n","\r\nimport React from 'react';\r\nimport { ReactTabulator } from 'react-tabulator'\r\nimport { Modal, Button } from 'react-bootstrap'\r\n\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UserServices from '../../../Services/UserServices'\r\n\r\nimport BaseControl from '../../BaseControl.jsx'\r\n\r\nexport default class UserListControl extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"UserListControl\");\r\n\r\n this.userServices = new UserServices();\r\n\r\n this.state = {\r\n Users: [],\r\n ShoGroups: false,\r\n //Заглушка\r\n UserGroups: this.userServices.CreateStubUser()\r\n }; \r\n \r\n\r\n this.columns = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\", editor: \"input\" },\r\n { title: \"Password\", field: \"Password\", editor: \"input\" },\r\n { title: \"Active\", field: \"Active\", editor: \"tick\" },\r\n\r\n { title: \"Groups\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.OnGroupsClick },\r\n { title: \"Delete\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.DeleteUserClick },\r\n ];\r\n\r\n this.columns_groups = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\" },\r\n { title: \"EnterInGroup\", field: \"EnterInGroup\", editor: \"tick\" },\r\n ];\r\n\r\n this.DownloadUsers();\r\n }\r\n\r\n DownloadUsers() {\r\n this.userServices.GetUsersAsync().\r\n then(function (data) {\r\n let users = data.Users;\r\n this.Groups = data.Groups;\r\n this.setState({ Users: users });\r\n }.bind(this));\r\n }\r\n UploadUsers() { \r\n this.userServices.SetUsersAsync(this.state.Users).\r\n then(function (data) {\r\n if (data.Successe)\r\n Notification.MesOk(data.ResMessage, \"Save\");\r\n else\r\n Notification.MesEr(data.ResMessage, \"Save\");\r\n\r\n this.DownloadUsers();\r\n }.bind(this));\r\n }\r\n\r\n //custom formatter definition\r\n ButtonFormatter(cell, formatterParams, onRendered) { //plain text value\r\n return \"<i class='fa fa-print'><button>Action</button></i>\";\r\n };\r\n\r\n OnCellChange(cell) {\r\n let users = this.state.Users;\r\n\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n var data_row = users.filter(e => e.ID === ID)[0];\r\n\r\n //Если NoChange то Update\r\n if (data_row.Changes === 0)\r\n data_row.Changes = 1;\r\n }\r\n\r\n OnCellChange_Groups(cell) {\r\n\r\n //Если NoChange то Update\r\n if (this.state.UserGroups.Changes === 0)\r\n this.state.UserGroups.Changes = 1;\r\n }\r\n\r\n UpdateClick() {\r\n this.DownloadUsers();\r\n }\r\n\r\n\r\n CreateUserCick() {\r\n let new_user = this.userServices.CreateUser();\r\n\r\n let users = this.state.Users;\r\n users.push(new_user);\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n DeleteUserClick(e, cell) {\r\n //let table = this.refs.table.table;\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n if (user.Changes === 2) {\r\n users.splice(users.findIndex(e => e.ID === ID), 1);\r\n }\r\n else {\r\n user.Changes = 3;\r\n }\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n OnGroupsClick(e, cell) {\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n this.setState({ ShoGroups: true, UserGroups: user });\r\n }\r\n OnGroupsClose() {\r\n this.setState({ ShoGroups: false });\r\n } \r\n\r\n render() {\r\n return (\r\n <div>\r\n <button onClick={this.CreateUserCick}>CreateUser</button>\r\n <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>\r\n <button onClick={this.UploadUsers}>SaveChanges</button>\r\n\r\n\r\n <ReactTabulator ref=\"table\"\r\n data={this.state.Users.filter(e => e.Changes != 3)}\r\n columns={this.columns}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange}\r\n />\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.ShoGroups}\r\n onHide={this.OnGroupsClose}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>User Groups: {this.state.UserGroups.ID + \" \" + this.state.UserGroups.Name}</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <ReactTabulator ref=\"table_UserGroups\"\r\n data={this.state.UserGroups.Groups}\r\n columns={this.columns_groups}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange_Groups}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnGroupsClose}>\r\n Close\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport { Nav } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\nimport BaseControl from '../BaseControl.jsx'\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserListControl from '../Controls/Admin/UserListControl.jsx'\r\n\r\n\r\nexport default class AdministratorPage extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"AdministratorPage\");\r\n\r\n this.state = { ActiveWindows: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnUsersClick() {\r\n this.setState({ ActiveWindows: 0 });\r\n }\r\n OnGroupsClick() {\r\n this.setState({ ActiveWindows: 1 });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnUsersClick}>Users</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnGroupsClick}> Groups</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n\r\n {this.state.ActiveWindows == 0\r\n ?\r\n <div>\r\n <UserListControl ref=\"UserListControl\" />\r\n </div>\r\n :\r\n <div>\r\n GroupsWindow\r\n </div>\r\n }\r\n </div>\r\n : <p>Вы не авторизованы</p>\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\n\r\nimport BaseControl from './BaseControl.jsx'\r\nimport FileExplorerPage from './Pages/FileExplorerPage.jsx'\r\nimport AdministratorPage from './Pages/AdministratorPage.jsx' \r\n\r\n\r\nexport default class RouteSystem extends BaseControl {\r\n\r\n constructor(props) {\r\n super(props, \"RouteSystem\");\r\n }\r\n\r\n render() {\r\n return (\r\n <Router>\r\n <Switch>\r\n <Route ref=\"CurrentPage\" exact path=\"/\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/App\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/index.html\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/?ID=:ID\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/Admin\" component={AdministratorPage} />\r\n </Switch>\r\n </Router>\r\n );\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n <RouteSystem />,\r\n document.getElementById(\"App\")\r\n)\r\n\r\n","\r\nimport './React/RouteSystem.jsx'\r\n\r\nconsole.log(\"index.js\");\r\n"],"sourceRoot":""}
\ No newline at end of file
FileServer/Web/Web.config 11(+11 -0)
diff --git a/FileServer/Web/Web.config b/FileServer/Web/Web.config
index 3d208a9..1b9c18c 100644
--- a/FileServer/Web/Web.config
+++ b/FileServer/Web/Web.config
@@ -37,6 +37,17 @@
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" />
</httpModules>
</system.web>
+
+ <!--
+ <system.webServer>
+ <security>
+ <requestFiltering>
+ <requestLimits maxAllowedContentLength="6291456" />
+ </requestFiltering>
+ </security>
+ </system.webServer>
+ -->
+
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
FileServer/Web/Web.csproj 6(+4 -2)
diff --git a/FileServer/Web/Web.csproj b/FileServer/Web/Web.csproj
index 2cf6d73..7039917 100644
--- a/FileServer/Web/Web.csproj
+++ b/FileServer/Web/Web.csproj
@@ -82,6 +82,9 @@
<Reference Include="System.Drawing" />
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.Remoting" />
+ <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
+ </Reference>
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
@@ -135,12 +138,11 @@
<Compile Include="Controllers\API\ExplorerController.cs" />
<Compile Include="Controllers\AppController.cs" />
<Compile Include="Controllers\API\UploadFilesController.cs" />
- <Compile Include="Controllers\API\UserController.cs" />
+ <Compile Include="Controllers\API\Admin\UserController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Models\Base\BaseApiResult.cs" />
- <Compile Include="Models\EditUserModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
FileServer/Web/Web.csproj.user 2(+1 -1)
diff --git a/FileServer/Web/Web.csproj.user b/FileServer/Web/Web.csproj.user
index c3826ca..6927e1b 100644
--- a/FileServer/Web/Web.csproj.user
+++ b/FileServer/Web/Web.csproj.user
@@ -8,7 +8,7 @@
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
- <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
+ <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Controller</Controller_SelectedScaffolderCategoryPath>
<WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>